Difference between revisions of "Pico-sdk studies"

From Wiki at Neela Nurseries
Jump to: navigation, search
m (Add notes on pico-sdk NUM_DMA_CHANNELS symbol.)
m (DMA driver details)
Line 26: Line 26:
  
 
== DMA driver details ==
 
== DMA driver details ==
 +
 +
2022-08-18
 +
 +
This section holds notes on RPi Pico SDK driver code for the RP2040 direct memory access unit.  Goal here is to understand how Pico SDK structures its Application Programmers' Interface or API.  We need to understand this in order to connect a Zephyr based application to code running on RP2040 and using its DMA.  Likely we will need DMA when we enable and implement one or more SPI based peripherals, as SPI transmit and receive lines are often associated with a DMA controller to support high data transmission rates.
  
 
Search for . . .
 
Search for . . .

Revision as of 19:57, 18 August 2022

Device_tree_from_scratch   ::   Spi_device_tree_source_code   ::   Pico-sdk_studies


2022-08-15 Pico SDK Studies

ted@localhost:~/reference/pico-sdk$ grep -nr unreset_block_wait ./*
./src/rp2_common/hardware_resets/include/hardware/resets.h:88:static inline void unreset_block_wait(uint32_t bits) {
./src/rp2_common/hardware_uart/uart.c:34:    unreset_block_wait(uart_get_index(uart) ? RESETS_RESET_UART1_BITS : RESETS_RESET_UART0_BITS);
./src/rp2_common/pico_runtime/runtime.c:80:    unreset_block_wait(RESETS_RESET_BITS & ~(
./src/rp2_common/pico_runtime/runtime.c:110:    unreset_block_wait(RESETS_RESET_BITS);
./src/rp2_common/hardware_pll/pll.c:54:    unreset_block_wait(pll_reset);
./src/rp2_common/hardware_i2c/i2c.c:25:    unreset_block_wait(i2c == i2c0 ? RESETS_RESET_I2C0_BITS : RESETS_RESET_I2C1_BITS);
Binary file ./src/rp2_common/hardware_spi/.spi.c.swp matches
./src/rp2_common/hardware_spi/spi.c:18:    unreset_block_wait(spi == spi0 ? RESETS_RESET_SPI0_BITS : RESETS_RESET_SPI1_BITS);
./src/rp2_common/hardware_rtc/rtc.c:29:    unreset_block_wait(RESETS_RESET_RTC_BITS);
./src/rp2_common/hardware_adc/adc.c:14:    unreset_block_wait(RESETS_RESET_ADC_BITS);
./test/hardware_pwm_test/hardware_pwm_test.c:36:    unreset_block_wait(RESETS_RESET_PWM_BITS);

ted@localhost:~/reference/pico-sdk$


DMA driver details

2022-08-18

This section holds notes on RPi Pico SDK driver code for the RP2040 direct memory access unit. Goal here is to understand how Pico SDK structures its Application Programmers' Interface or API. We need to understand this in order to connect a Zephyr based application to code running on RP2040 and using its DMA. Likely we will need DMA when we enable and implement one or more SPI based peripherals, as SPI transmit and receive lines are often associated with a DMA controller to support high data transmission rates.

Search for . . .

ted@localhost:~/projects/zephyr-based/workspace-rpi-pico-work/pico-sdk$ grep -nr NUM_DMA_CHANNELS ./*
./src/host/pico_platform/include/hardware/platform_defs.h:12:#define NUM_DMA_CHANNELS 12u
. . .
./src/rp2040/hardware_structs/include/hardware/structs/dma.h:106:    dma_channel_hw_t ch[NUM_DMA_CHANNELS]; // 12
./src/rp2040/hardware_structs/include/hardware/structs/dma.h:194:    } ch[NUM_DMA_CHANNELS];