You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+76-8
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,17 @@
1
-
# Raspberry Pi Pico SDK Examples
1
+
# Raspberry Pi RP2350 Pico SDK Examples - Early Access
2
+
3
+
## RP2350 Instructions
4
+
5
+
Everything below this section is from the stock pico-examples, so ignore URLs etc., but generally instructions are the same.
6
+
7
+
The Pico SDK default continues to be to build for RP2040 (PICO_PLATFORM=rp2040), so to build for RP2350, you need to pass
8
+
`-DPICO_PLATFORM=rp2350` to CMake (or `-DPICO_PLATFORM=rp2350-riscv` for RISC-V).
9
+
10
+
Most, but not all examples, currently work on RP2350 however you should be able to do a full build with any of the above platforms (PICO_PLATFORM=host however currently fails on some examples)
11
+
12
+
For RISC-V compilation, you should take a compiler from here: https://www.embecosm.com/resources/tool-chain-downloads/#riscv-stable
13
+
14
+
# Original pico-examples docs
2
15
3
16
## Getting started
4
17
@@ -7,12 +20,13 @@ on getting up and running.
7
20
8
21
### First Examples
9
22
10
-
App|Description | Link to prebuilt UF2
11
-
---|---|---
12
-
[hello_serial](hello_world/serial) | The obligatory Hello World program for Pico (Output over serial version) |
13
-
[hello_usb](hello_world/usb) | The obligatory Hello World program for Pico (Output over USB version) | https://rptl.io/pico-hello-usb
14
-
[blink](blink) | Blink an LED on and off. Pico W should use [picow_blink](pico_w/wifi/blink). | https://rptl.io/pico-blink
15
-
[picow_blink](pico_w/wifi/blink) | Blinks the Pico W on-board LED (which is connected via the WiFi chip). | http://rptl.io/pico-w-blink
[hello_serial](hello_world/serial) | The obligatory Hello World program for Pico (Output over serial version) |
26
+
[hello_usb](hello_world/usb) | The obligatory Hello World program for Pico (Output over USB version) | https://rptl.io/pico-hello-usb
27
+
[blink](blink) | Blink an LED on and off. Works on both boards with regular LEDs and Pico W | https://rptl.io/pico-blink
28
+
[blink_simple](blink_simple) | Blink an LED on and off. Does not work on Pico W. | https://rptl.io/pico-blink
29
+
[picow_blink](pico_w/wifi/blink) | Blinks the Pico W on-board LED (which is connected via the WiFi chip). | http://rptl.io/pico-w-blink
16
30
17
31
### ADC
18
32
@@ -26,6 +40,11 @@ App|Description
26
40
[dma_capture](adc/dma_capture) | Use the DMA to capture many samples from the ADC.
27
41
[read_vsys](adc/read_vsys) | Demonstrates how to read VSYS to get the voltage of the power supply.
28
42
43
+
### Bootloaders (RP2350 Only)
44
+
App|Description
45
+
---|---
46
+
[enc_bootloader](bootloaders/encrypted) | A bootloader which decrypts binaries from flash into SRAM. See the separate [README](bootloaders/encrypted/README.md) for more information
47
+
29
48
### Clocks
30
49
31
50
App|Description
@@ -41,6 +60,12 @@ App|Description
41
60
---|---
42
61
[build_variants](cmake/build_variants) | Builds two version of the same app with different configurations
43
62
63
+
### DCP
64
+
65
+
App|Description
66
+
---|---
67
+
[hello_dcp](dcp/hello_dcp) | Use the double-precision coprocessor directly in assembler.
68
+
44
69
### DMA
45
70
46
71
App|Description
@@ -50,6 +75,12 @@ App|Description
50
75
[channel_irq](dma/channel_irq) | Use an IRQ handler to reconfigure a DMA channel, in order to continuously drive data through a PIO state machine.
51
76
[sniff_crc](dma/sniff_crc) | Use the DMA engine's 'sniff' capability to calculate a CRC32 on a data buffer.
52
77
78
+
### HSTX
79
+
80
+
App|Description
81
+
---|---
82
+
[dvi_out_hstx_encoder](dvi_out_hstx_encoder)`RP2350`| Use the HSTX to output a DVI signal with 3:3:2 RGB
83
+
53
84
### Flash
54
85
55
86
App|Description
@@ -59,6 +90,15 @@ App|Description
59
90
[program](flash/program) | Erase a flash sector, program one flash page, and read back the data.
60
91
[xip_stream](flash/xip_stream) | Stream data using the XIP stream hardware, which allows data to be DMA'd in the background whilst executing code from flash.
61
92
[ssi_dma](flash/ssi_dma) | DMA directly from the flash interface (continuous SCK clocking) for maximum bulk read performance.
93
+
[runtime_flash_permissions](flash/runtime_flash_permissions) | Demonstrates adding partitions at runtime to change the flash permissions
94
+
95
+
### FreeRTOS
96
+
97
+
These examples require you to set the `FREERTOS_KERNEL_PATH` to point to the FreeRTOS Kernel. See https://github.com/FreeRTOS/FreeRTOS-Kernel
98
+
99
+
App|Description
100
+
---|---
101
+
[hello_freertos](freertos/hello_freertos) | Examples that demonstrate how run FreeRTOS and tasks on 1 or 2 cores.
62
102
63
103
### GPIO
64
104
@@ -107,6 +147,13 @@ App|Description
107
147
[hello_multicore](multicore/hello_multicore) | Launch a function on the second core, printf some messages on each core, and pass data back and forth through the mailbox FIFOs.
108
148
[multicore_fifo_irqs](multicore/multicore_fifo_irqs) | On each core, register and interrupt handler for the mailbox FIFOs. Show how the interrupt fires when that core receives a message.
109
149
[multicore_runner](multicore/multicore_runner) | Set up the second core to accept, and run, any function pointer pushed into its mailbox FIFO. Push in a few pieces of code and get answers back.
150
+
[multicore_doorbell](multicore/multicore_doorbell) | Claims two doorbells for signaling between the cores. Counts how many doorbell IRQs occur on the second core and uses doorbells to coordinate exit.
151
+
152
+
### OTP
153
+
154
+
App|Description
155
+
---|---
156
+
[hello_otp](otp/hello_otp) | Demonstrate reading and writing from the OTP on RP2350, along with some of the features of OTP (error correction and page locking).
110
157
111
158
### Pico Board
112
159
@@ -123,6 +170,7 @@ App|Description
123
170
---|---
124
171
[picow_access_point](pico_w/wifi/access_point) | Starts a WiFi access point, and fields DHCP requests.
125
172
[picow_blink](pico_w/wifi/blink) | Blinks the on-board LED (which is connected via the WiFi chip).
173
+
[picow_blink_slow_clock](pico_w/wifi/blink_slow_clock) | Blinks the on-board LED (which is connected via the WiFi chip) with a slower system clock to show how to reconfigure communication with the WiFi chip under those circumstances
126
174
[picow_iperf_server](pico_w/wifi/iperf) | Runs an "iperf" server for WiFi speed testing.
127
175
[picow_ntp_client](pico_w/wifi/ntp_client) | Connects to an NTP server to fetch and display the current time.
128
176
[picow_tcp_client](pico_w/wifi/tcp_client) | A simple TCP client. You can run [python_test_tcp_server.py](pico_w/wifi/python_test_tcp/python_test_tcp_server.py) for it to connect to.
@@ -136,7 +184,7 @@ App|Description
136
184
#### FreeRTOS examples
137
185
138
186
These are examples of integrating Pico W networking under FreeRTOS, and require you to set the `FREERTOS_KERNEL_PATH`
139
-
to point to the FreeRTOS Kernel.
187
+
to point to the FreeRTOS Kernel. See https://github.com/FreeRTOS/FreeRTOS-Kernel
140
188
141
189
App|Description
142
190
---|---
@@ -237,6 +285,7 @@ App|Description
237
285
[pwm](pio/pwm) | Pulse width modulation on PIO. Use it to gradually fade the brightness of an LED.
238
286
[spi](pio/spi) | Use PIO to erase, program and read an external SPI flash chip. A second example runs a loopback test with all four CPHA/CPOL combinations.
239
287
[squarewave](pio/squarewave) | Drive a fast square wave onto a GPIO. This example accesses low-level PIO registers directly, instead of using the SDK functions.
288
+
[squarewave_div_sync](pio/squarewave) | Generates a square wave on three GPIOs and synchronises the divider on all the state machines
240
289
[st7789_lcd](pio/st7789_lcd) | Set up PIO for 62.5 Mbps serial output, and use this to display a spinning image on a ST7789 serial LCD.
241
290
[quadrature_encoder](pio/quadrature_encoder) | A quadrature encoder using PIO to maintain counts independent of the CPU.
242
291
[quadrature_encoder_substep](pio/quadrature_encoder_substep) | High resolution speed measurement using a standard quadrature encoder
@@ -267,6 +316,13 @@ App|Description
267
316
[rtc_alarm](rtc/rtc_alarm) | Set an alarm on the RTC to trigger an interrupt at a date/time 5 seconds into the future.
268
317
[rtc_alarm_repeat](rtc/rtc_alarm_repeat) | Trigger an RTC interrupt once per minute.
269
318
319
+
### SHA-256
320
+
321
+
App|Description
322
+
---|---
323
+
[hello_sha256](sha/sha256) | Demonstrates how to use the pico_sha256 library to calculate a checksum using the hardware in rp2350
324
+
[mbedtls_sha256](sha/mbedtls_sha256) | Demonstrates using the SHA-256 hardware acceleration in mbedtls
325
+
270
326
### SPI
271
327
272
328
App|Description
@@ -283,7 +339,9 @@ App|Description
283
339
284
340
App|Description
285
341
---|---
342
+
[boot_info](system/boot_info) | Demonstrate how to read and interpret sys info boot info.
286
343
[hello_double_tap](system/hello_double_tap) | An LED blink with the `pico_bootsel_via_double_reset` library linked. This enters the USB bootloader when it detects the system being reset twice in quick succession, which is useful for boards with a reset button but no BOOTSEL button.
344
+
[rand](system/rand) | Demonstrate how to use the pico random number functions.
287
345
[narrow_io_write](system/narrow_io_write) | Demonstrate the effects of 8-bit and 16-bit writes on a 32-bit IO register.
288
346
[unique_board_id](system/unique_board_id) | Read the 64 bit unique ID from external flash, which serves as a unique identifier for the board.
289
347
@@ -303,6 +361,16 @@ App|Description
303
361
[lcd_uart](uart/lcd_uart) | Display text and symbols on a 16x02 RGB LCD display via UART
304
362
[uart_advanced](uart/uart_advanced) | Use some other UART features like RX interrupts, hardware control flow, and data formats other than 8n1.
305
363
364
+
### Universal
365
+
366
+
These are examples of how to build universal binaries which run on RP2040, and RP2350 Arm & RISC-V.
367
+
These require you to set `PICO_ARM_TOOLCHAIN_PATH` and `PICO_RISCV_TOOLCHAIN_PATH` to appropriate paths, to ensure you have compilers for both architectures.
368
+
369
+
App|Description
370
+
---|---
371
+
[hello_universal](universal/hello_universal) | The obligatory Hello World program for Pico (USB and serial output). On RP2350 it will reboot to the other architecture after every 10 prints.
372
+
[nuke_universal](universal/CMakeLists.txt#L107) | Same as the [nuke](flash/nuke) binary, but universal. On RP2350 runs as a packaged SRAM binary, so is written to flash and copied to SRAM by the bootloader
0 commit comments