Skip to content

Commit 81c9d8c

Browse files
committed
Add support for RP2350
1 parent 80b4c42 commit 81c9d8c

5 files changed

Lines changed: 87 additions & 40 deletions

File tree

.github/workflows/push-master.yml

Lines changed: 53 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
- name: Install GNU Arm Embedded Toolchain
2020
uses: carlosperate/arm-none-eabi-gcc-action@v1
2121
with:
22-
release: '12.2.Rel1'
22+
release: '15.2.Rel1'
2323

2424
- name: Build packages
2525
shell: bash
@@ -30,27 +30,35 @@ jobs:
3030
cmake --build . --config Release
3131
3232
- uses: actions/upload-artifact@v7.0.0
33-
name: Upload artifacts (commit)
34-
if: (startsWith(github.event.ref, 'refs/tags') != true)
33+
name: Upload artifacts (release)
3534
with:
35+
name: firmware-release-generic-rp2040
3636
path: |
3737
firmware/*.uf2
3838
39+
- name: Build packages for generic rp2350
40+
shell: bash
41+
run: |
42+
cd build
43+
rm -rf *
44+
rm -rf ../firmware/*
45+
cmake -DTARGET_BOARD=pico2 -DCMAKE_BUILD_TYPE=Release ..
46+
cmake --build .
47+
zip -j ../firmware/firmware_generic_rp2350.zip ../firmware/*
48+
3949
- uses: actions/upload-artifact@v7.0.0
40-
name: Upload artifacts (release)
41-
if: startsWith(github.ref, 'refs/tags/')
50+
name: Upload artifacts (release generic rp2350)
4251
with:
43-
name: firmware-release-generic
52+
name: firmware-release-generic-rp2350
4453
path: |
45-
firmware/*.uf2
54+
firmware/*.zip
4655
47-
- name: Build packages for Adafruit Feather RP2040 Scorpio (release-only)
48-
if: startsWith(github.ref, 'refs/tags/')
56+
- name: Build packages for Adafruit Feather RP2040 Scorpio
4957
shell: bash
5058
run: |
5159
cd build
52-
rm *.*
53-
rm ../firmware/*
60+
rm -rf *
61+
rm -rf ../firmware/*
5462
echo "Neopixel is using GPIO16(OUTPUT_DATA_PIN) on output 0." > ../firmware/Firmwares_for_Adafruit_Feather_RP2040_Scorpio.txt
5563
echo "SPI is using spi0 interface pins: GPIO19(OUTPUT_SPI_DATA_PIN) and GPIO18(OUTPUT_SPI_CLOCK_PIN) on output 3 and 2 respectively." >> ../firmware/Firmwares_for_Adafruit_Feather_RP2040_Scorpio.txt
5664
cmake -DOVERRIDE_BOOT_WORKAROUND=ON -DOVERRIDE_DATA_PIN=16 -DOVERRIDE_SPI_DATA_PIN=19 -DOVERRIDE_SPI_CLOCK_PIN=18 -DCMAKE_BUILD_TYPE=Release ..
@@ -59,72 +67,84 @@ jobs:
5967
6068
- uses: actions/upload-artifact@v7.0.0
6169
name: Upload artifacts (release Adafruit_Feather)
62-
if: startsWith(github.ref, 'refs/tags/')
6370
with:
6471
name: firmware-release-adafruit-scorpio
6572
path: |
6673
firmware/*.zip
6774
68-
- name: Build packages for Adafruit ItsyBitsy RP2040 (release-only)
69-
if: startsWith(github.ref, 'refs/tags/')
75+
- name: Build packages for Adafruit ItsyBitsy RP2040
7076
shell: bash
7177
run: |
7278
cd build
73-
rm *.*
74-
rm ../firmware/*
79+
rm -rf *
80+
rm -rf ../firmware/*
7581
echo "Neopixel is using GPIO14(OUTPUT_DATA_PIN) on output 5." > ../firmware/Firmwares_for_Adafruit_ItsyBitsy_2040.txt
7682
cmake -DOVERRIDE_BOOT_WORKAROUND=ON -DOVERRIDE_DATA_PIN=14 -DCMAKE_BUILD_TYPE=Release ..
7783
cmake --build .
7884
rm ../firmware/*_Spi.uf2
7985
zip -j ../firmware/Adafruit_ItsyBitsy_2040.zip ../firmware/*
8086
8187
- uses: actions/upload-artifact@v7.0.0
82-
name: Upload artifacts (release Adafruit_ItsyBitsy)
83-
if: startsWith(github.ref, 'refs/tags/')
88+
name: Upload artifacts (release Adafruit_ItsyBitsy_2040)
8489
with:
85-
name: firmware-release-adafruit-itsybitsy
90+
name: firmware-release-adafruit-itsybitsy-2040
8691
path: |
8792
firmware/*.zip
8893
89-
- name: Build packages for Pimoroni Plasma Stick 2040 W (release-only)
90-
if: startsWith(github.ref, 'refs/tags/')
94+
- name: Build packages for Pimoroni Plasma Stick 2040 W
9195
shell: bash
9296
run: |
9397
cd build
94-
rm *.*
95-
rm ../firmware/*
98+
rm -rf *
99+
rm -rf ../firmware/*
96100
echo "Neopixel is using GPIO15(OUTPUT_DATA_PIN) on output PIXELS." > ../firmware/Firmwares_for_Pimoroni_Plasma_Stick_2040_W.txt
97101
cmake -DOVERRIDE_DATA_PIN=15 -DCMAKE_BUILD_TYPE=Release ..
98102
cmake --build .
99103
rm ../firmware/*_Spi.uf2
100104
zip -j ../firmware/Pimoroni_Plasma_Stick_2040_W.zip ../firmware/*
101105
102106
- uses: actions/upload-artifact@v7.0.0
103-
name: Upload artifacts (release Pimoroni_Plasma_Stick_W)
104-
if: startsWith(github.ref, 'refs/tags/')
107+
name: Upload artifacts (release Pimoroni_Plasma_Stick_2040_W)
105108
with:
106-
name: firmware-release-pimoroni-plasma-stick
109+
name: firmware-release-pimoroni-plasma-stick-2040-w
107110
path: |
108111
firmware/*.zip
109112
110-
- name: Build packages for Pimoroni Plasma 2040 (release-only)
111-
if: startsWith(github.ref, 'refs/tags/')
113+
- name: Build packages for Pimoroni Plasma 2040
112114
shell: bash
113115
run: |
114116
cd build
115-
rm *.*
116-
rm ../firmware/*
117+
rm -rf *
118+
rm -rf ../firmware/*
117119
echo "Neopixel is using GPIO15(OUTPUT_DATA_PIN) on output DA." > ../firmware/Firmwares_for_Pimoroni_Plasma_2040.txt
118120
echo "SPI is using spi1 interface pins: GPIO15(OUTPUT_SPI_DATA_PIN) and GPIO14(OUTPUT_SPI_CLOCK_PIN) on output DA and CL respectively." >> ../firmware/Firmwares_for_Pimoroni_Plasma_2040.txt
119121
cmake -DOVERRIDE_DATA_PIN=15 -DOVERRIDE_SPI_INTERFACE=spi1 -DOVERRIDE_SPI_DATA_PIN=15 -DOVERRIDE_SPI_CLOCK_PIN=14 -DCMAKE_BUILD_TYPE=Release ..
120122
cmake --build .
121123
zip -j ../firmware/Pimoroni_Plasma_2040.zip ../firmware/*
122124
123125
- uses: actions/upload-artifact@v7.0.0
124-
name: Upload artifacts (release Pimoroni_Plasma)
125-
if: startsWith(github.ref, 'refs/tags/')
126+
name: Upload artifacts (release Pimoroni_Plasma_2040)
127+
with:
128+
name: firmware-release-pimoroni-plasma-2040
129+
path: |
130+
firmware/*.zip
131+
132+
- name: Build packages for Pimoroni Plasma 2350
133+
shell: bash
134+
run: |
135+
cd build
136+
rm -rf *
137+
rm -rf ../firmware/*
138+
echo "Neopixel is using GPIO15(OUTPUT_DATA_PIN) on output DA." > ../firmware/Firmwares_for_Pimoroni_Plasma_2350.txt
139+
echo "SPI is using spi1 interface pins: GPIO15(OUTPUT_SPI_DATA_PIN) and GPIO14(OUTPUT_SPI_CLOCK_PIN) on output DA and CL respectively." >> ../firmware/Firmwares_for_Pimoroni_Plasma_2350.txt
140+
cmake -DTARGET_BOARD=pico2 -DOVERRIDE_DATA_PIN=15 -DOVERRIDE_SPI_INTERFACE=spi1 -DOVERRIDE_SPI_DATA_PIN=15 -DOVERRIDE_SPI_CLOCK_PIN=14 -DCMAKE_BUILD_TYPE=Release ..
141+
cmake --build .
142+
zip -j ../firmware/Pimoroni_Plasma_2350.zip ../firmware/*
143+
144+
- uses: actions/upload-artifact@v7.0.0
145+
name: Upload artifacts (release Pimoroni_Plasma_2350)
126146
with:
127-
name: firmware-release-pimoroni-plasma
147+
name: firmware-release-pimoroni-plasma-rp2350
128148
path: |
129149
firmware/*.zip
130150

CMakeLists.txt

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,26 @@ add_definitions ( -DPICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE=0 )
3333
# initialize the SDK based on PICO_SDK_PATH
3434
# note: this must happen before project()
3535
set(PICO_SDK_PATH ${CMAKE_CURRENT_SOURCE_DIR}/sdk/pico)
36-
set(FREERTOS_KERNEL_PATH ${CMAKE_CURRENT_SOURCE_DIR}/sdk/freertos)
36+
# FreeRTOS config
37+
add_library(freertos_config INTERFACE)
38+
target_include_directories(freertos_config INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/sdk/config )
39+
set(FREERTOS_KERNEL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sdk/freertos")
40+
41+
# Target: 'pico' (RP2040) or 'pico2' (RP2350)
42+
set(TARGET_BOARD "pico" CACHE STRING "Target board: pico or pico2")
43+
set(PICO_BOARD ${TARGET_BOARD})
3744

3845
include(${PICO_SDK_PATH}/external/pico_sdk_import.cmake)
46+
47+
if (PICO_RP2350)
48+
set(FREERTOS_PORT "GCC_ARM_CM33_NTZ" CACHE STRING "")
49+
else()
50+
set(FREERTOS_PORT "GCC_ARM_CM0" CACHE STRING "")
51+
endif()
52+
3953
include(${FREERTOS_KERNEL_PATH}/portable/ThirdParty/GCC/RP2040/FreeRTOS_Kernel_import.cmake)
4054

41-
project(HyperSerialPico C CXX ASM)
55+
project("HyperSerialPico_${PICO_CHIP}" C CXX ASM)
4256
set(CMAKE_C_STANDARD 11)
4357
set(CMAKE_CXX_STANDARD 17)
4458

@@ -53,8 +67,8 @@ ENDIF(CMAKE_COMPILER_IS_GNUCC)
5367
pico_sdk_init()
5468

5569
# generic HyperSerialPico settings
56-
set(HyperSerialPicoCompanionLibs FreeRTOS-Kernel FreeRTOS-Kernel-Heap1 pico_stdlib pico_multicore hardware_pio hardware_dma hardware_spi)
5770
set(HyperSerialPicoCompanionIncludes ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/sdk/config)
71+
set(HyperSerialPicoCompanionLibs FreeRTOS-Kernel freertos_config FreeRTOS-Kernel-Heap4 pico_stdlib pico_multicore hardware_pio hardware_dma hardware_spi)
5872
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/generated)
5973
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/firmware)
6074

sdk/config/FreeRTOSConfig.h

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,20 @@
4747
#define configUSE_TICK_HOOK 0
4848
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
4949
#define configMAX_PRIORITIES 32
50-
#define configMINIMAL_STACK_SIZE ( configSTACK_DEPTH_TYPE ) 256
50+
#ifdef __ARM_ARCH_8M_MAIN__
51+
#define configMINIMAL_STACK_SIZE ( ( configSTACK_DEPTH_TYPE ) 512 )
52+
#define configENABLE_FPU 0
53+
#define configENABLE_MPU 0
54+
#define configENABLE_TRUSTZONE 0
55+
#define configRUN_FREERTOS_SECURE_ONLY 1
56+
#define configPRIO_BITS 3
57+
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x07
58+
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 0x05
59+
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << ( 8 - configPRIO_BITS ) )
60+
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << ( 8 - configPRIO_BITS ) )
61+
#else
62+
#define configMINIMAL_STACK_SIZE ( ( configSTACK_DEPTH_TYPE ) 256 )
63+
#endif
5164
#define configUSE_16_BIT_TICKS 0
5265

5366
#define configIDLE_SHOULD_YIELD 1
@@ -103,7 +116,7 @@
103116

104117
/* SMP port only */
105118
#define configNUM_CORES 1
106-
#define configTICK_CORE 1
119+
#define configTICK_CORE 0
107120
#define configRUN_MULTIPLE_PRIORITIES 1
108121

109122
/* RP2040 specific */

sdk/freertos

Submodule freertos updated 919 files

sdk/pico

Submodule pico updated 1125 files

0 commit comments

Comments
 (0)