From 49a1fe96ee4ebfa64b3211182d620ab7a6e9bc33 Mon Sep 17 00:00:00 2001 From: ckormanyos Date: Tue, 17 Sep 2024 13:57:32 +0200 Subject: [PATCH] Add RPI pico2 2350 to CMake builds in CI --- .github/workflows/real-time-cpp.yml | 2 +- ref_app/cmake/rpi_pico2_rp2350.cmake | 78 +++++++++++++++++++ ref_app/cmake/rpi_pico_rp2040.cmake | 2 + ref_app/ref_app.vcxproj | 5 ++ ref_app/ref_app.vcxproj.filters | 3 + ref_app/target.vcxproj | 2 +- ref_app/target.vcxproj.filters | 2 +- ...ion_block.c => image_definition_block.cpp} | 1 + 8 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 ref_app/cmake/rpi_pico2_rp2350.cmake rename ref_app/target/micros/rpi_pico2_rp2350/startup/{image_definition_block.c => image_definition_block.cpp} (98%) diff --git a/.github/workflows/real-time-cpp.yml b/.github/workflows/real-time-cpp.yml index c5b19a61c..867454d3c 100644 --- a/.github/workflows/real-time-cpp.yml +++ b/.github/workflows/real-time-cpp.yml @@ -153,7 +153,7 @@ jobs: strategy: fail-fast: false matrix: - suite: [ am335x, bcm2835_raspi_b, lpc11c24, nxp_imxrt1062, rpi_pico_rp2040, stm32f100, stm32f407, stm32f429, stm32f446, stm32h7a3, stm32l100c, stm32l152, stm32l432 ] + suite: [ am335x, bcm2835_raspi_b, lpc11c24, nxp_imxrt1062, rpi_pico_rp2040, rpi_pico2_rp2350, stm32f100, stm32f407, stm32f429, stm32f446, stm32h7a3, stm32l100c, stm32l152, stm32l432 ] steps: - uses: actions/checkout@v4 with: diff --git a/ref_app/cmake/rpi_pico2_rp2350.cmake b/ref_app/cmake/rpi_pico2_rp2350.cmake new file mode 100644 index 000000000..4bd49c1a5 --- /dev/null +++ b/ref_app/cmake/rpi_pico2_rp2350.cmake @@ -0,0 +1,78 @@ +############################################################################## +# Copyright Christopher Kormanyos 2021 - 2024. +# Distributed under the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt +# or copy at http://www.boost.org/LICENSE_1_0.txt) + +# +# MIT License +# +# Copyright (c) 2019 Joel Winarske +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# + +set(APP ref_app) + +set(CMAKE_EXECUTABLE_SUFFIX .elf) + +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_STANDARD 14) + +set(TARGET_INCLUDES + ${PATH_APP}/util/STL +) + +set(_TARGET_CFLAGS + -mcpu=cortex-m33 + -mthumb + -march=armv8-m.main+fp+dsp + -mabi=aapcs + -mfloat-abi=hard + -finline-functions + -finline-limit=128 + -mno-unaligned-access + -mno-long-calls +) + +set(TARGET_AFLAGS "") + +set(_TARGET_LDFLAGS + -nostdlib + -nostartfiles + --specs=nano.specs + --specs=nosys.specs + -T ${LINKER_DEFINITION_FILE} +) + +string(REPLACE ";" " " TARGET_CFLAGS "${_TARGET_CFLAGS}") +string(REPLACE ";" " " TARGET_LDFLAGS "${_TARGET_LDFLAGS}") + + +set(FILES_TARGET + ${PATH_APP}/mcal/mcal_gcc_cxx_completion + ${PATH_APP}/mcal/${TARGET}/mcal_cpu_rp2350 + ${PATH_TGT}/startup/core_1_run + ${PATH_TGT}/startup/crt0 + ${PATH_TGT}/startup/crt0_init_ram + ${PATH_TGT}/startup/crt1 + ${PATH_TGT}/startup/image_definition_block + ${PATH_TGT}/startup/int_vect + ${PATH_TGT}/startup/util +) diff --git a/ref_app/cmake/rpi_pico_rp2040.cmake b/ref_app/cmake/rpi_pico_rp2040.cmake index c95c2e06d..f651e0b2c 100644 --- a/ref_app/cmake/rpi_pico_rp2040.cmake +++ b/ref_app/cmake/rpi_pico_rp2040.cmake @@ -55,6 +55,8 @@ set(TARGET_AFLAGS "") set(_TARGET_LDFLAGS -nostdlib -nostartfiles + --specs=nano.specs + --specs=nosys.specs -T ${LINKER_DEFINITION_FILE} ) diff --git a/ref_app/ref_app.vcxproj b/ref_app/ref_app.vcxproj index 84223bc5c..f5b28d4e6 100644 --- a/ref_app/ref_app.vcxproj +++ b/ref_app/ref_app.vcxproj @@ -3000,6 +3000,10 @@ true true + + true + true + true true @@ -3038,6 +3042,7 @@ true + true true diff --git a/ref_app/ref_app.vcxproj.filters b/ref_app/ref_app.vcxproj.filters index fe8da18f5..eae30f69f 100644 --- a/ref_app/ref_app.vcxproj.filters +++ b/ref_app/ref_app.vcxproj.filters @@ -2861,6 +2861,9 @@ src\cmake + + src\cmake + diff --git a/ref_app/target.vcxproj b/ref_app/target.vcxproj index 28d160b8c..821ebc3f9 100644 --- a/ref_app/target.vcxproj +++ b/ref_app/target.vcxproj @@ -1014,7 +1014,7 @@ - + diff --git a/ref_app/target.vcxproj.filters b/ref_app/target.vcxproj.filters index 560f1040b..e04f444eb 100644 --- a/ref_app/target.vcxproj.filters +++ b/ref_app/target.vcxproj.filters @@ -896,7 +896,7 @@ micros\rpi_pico2_rp2350\startup - + micros\rpi_pico2_rp2350\startup diff --git a/ref_app/target/micros/rpi_pico2_rp2350/startup/image_definition_block.c b/ref_app/target/micros/rpi_pico2_rp2350/startup/image_definition_block.cpp similarity index 98% rename from ref_app/target/micros/rpi_pico2_rp2350/startup/image_definition_block.c rename to ref_app/target/micros/rpi_pico2_rp2350/startup/image_definition_block.cpp index deaa72672..db9539ce4 100644 --- a/ref_app/target/micros/rpi_pico2_rp2350/startup/image_definition_block.c +++ b/ref_app/target/micros/rpi_pico2_rp2350/startup/image_definition_block.cpp @@ -17,6 +17,7 @@ #include +extern "C" const uint32_t __attribute__((section(".image_start_block"), used, aligned(4))) image_definition_block[] = { UINT32_C(0xFFFFDED3),