Update to support building for Pico 2 - Update CMSIS to 5.7.0 - Update FreeRTOS to downstream commit aa52f214d Note: for an existing repository clone, you must run git submodule update --init and delete and regenerate your build/ directory.
diff --git a/.gitmodules b/.gitmodules index f8890cf..d130209 100644 --- a/.gitmodules +++ b/.gitmodules
@@ -3,4 +3,4 @@ url = https://github.com/ARM-software/CMSIS_5 [submodule "freertos"] path = freertos - url = https://github.com/FreeRTOS/FreeRTOS-Kernel + url = https://github.com/raspberrypi/FreeRTOS-Kernel
diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fd712c..4842bfc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -3,12 +3,16 @@ include(pico_sdk_import.cmake) set(FREERTOS_KERNEL_PATH ${CMAKE_CURRENT_LIST_DIR}/freertos) -include(FreeRTOS_Kernel_import.cmake) +include(freertos/portable/ThirdParty/GCC/RP2350_ARM_NTZ/FreeRTOS_Kernel_import.cmake) project(debugprobe) pico_sdk_init() +if (${PICO_SDK_VERSION_MAJOR} LESS 2) + message(SEND_ERROR "Version 2 of the Pico SDK is required to compile this project. Please update your installation at ${PICO_SDK_PATH}") +endif () + add_executable(debugprobe src/probe_config.c src/led.c
diff --git a/FreeRTOS_Kernel_import.cmake b/FreeRTOS_Kernel_import.cmake deleted file mode 100755 index 1f0bf11..0000000 --- a/FreeRTOS_Kernel_import.cmake +++ /dev/null
@@ -1,61 +0,0 @@ -# This is a copy of <FREERTOS_KERNEL_PATH>/portable/ThirdParty/GCC/RP2040/FREERTOS_KERNEL_import.cmake - -# This can be dropped into an external project to help locate the FreeRTOS kernel -# It should be include()ed prior to project(). Alternatively this file may -# or the CMakeLists.txt in this directory may be included or added via add_subdirectory -# respectively. - -if (DEFINED ENV{FREERTOS_KERNEL_PATH} AND (NOT FREERTOS_KERNEL_PATH)) - set(FREERTOS_KERNEL_PATH $ENV{FREERTOS_KERNEL_PATH}) - message("Using FREERTOS_KERNEL_PATH from environment ('${FREERTOS_KERNEL_PATH}')") -endif () - -set(FREERTOS_KERNEL_RP2040_RELATIVE_PATH "portable/ThirdParty/GCC/RP2040") -# undo the above -set(FREERTOS_KERNEL_RP2040_BACK_PATH "../../../..") - -if (NOT FREERTOS_KERNEL_PATH) - # check if we are inside the FreeRTOS kernel tree (i.e. this file has been included directly) - get_filename_component(_ACTUAL_PATH ${CMAKE_CURRENT_LIST_DIR} REALPATH) - get_filename_component(_POSSIBLE_PATH ${CMAKE_CURRENT_LIST_DIR}/${FREERTOS_KERNEL_RP2040_BACK_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH} REALPATH) - if (_ACTUAL_PATH STREQUAL _POSSIBLE_PATH) - get_filename_component(FREERTOS_KERNEL_PATH ${CMAKE_CURRENT_LIST_DIR}/${FREERTOS_KERNEL_RP2040_BACK_PATH} REALPATH) - endif() - if (_ACTUAL_PATH STREQUAL _POSSIBLE_PATH) - get_filename_component(FREERTOS_KERNEL_PATH ${CMAKE_CURRENT_LIST_DIR}/${FREERTOS_KERNEL_RP2040_BACK_PATH} REALPATH) - message("Setting FREERTOS_KERNEL_PATH to ${FREERTOS_KERNEL_PATH} based on location of FreeRTOS-Kernel-import.cmake") - elseif (PICO_SDK_PATH AND EXISTS "${PICO_SDK_PATH}/../FreeRTOS-Kernel") - set(FREERTOS_KERNEL_PATH ${PICO_SDK_PATH}/../FreeRTOS-Kernel) - message("Defaulting FREERTOS_KERNEL_PATH as sibling of PICO_SDK_PATH: ${FREERTOS_KERNEL_PATH}") - endif() -endif () - -if (NOT FREERTOS_KERNEL_PATH) - foreach(POSSIBLE_SUFFIX Source FreeRTOS-Kernel FreeRTOS/Source) - # check if FreeRTOS-Kernel exists under directory that included us - set(SEARCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) - get_filename_component(_POSSIBLE_PATH ${SEARCH_ROOT}/${POSSIBLE_SUFFIX} REALPATH) - if (EXISTS ${_POSSIBLE_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}/CMakeLists.txt) - get_filename_component(FREERTOS_KERNEL_PATH ${_POSSIBLE_PATH} REALPATH) - message("Setting FREERTOS_KERNEL_PATH to '${FREERTOS_KERNEL_PATH}' found relative to enclosing project") - break() - endif() - endforeach() -endif() - -if (NOT FREERTOS_KERNEL_PATH) - message(FATAL_ERROR "FreeRTOS location was not specified. Please set FREERTOS_KERNEL_PATH.") -endif() - -set(FREERTOS_KERNEL_PATH "${FREERTOS_KERNEL_PATH}" CACHE PATH "Path to the FreeRTOS Kernel") - -get_filename_component(FREERTOS_KERNEL_PATH "${FREERTOS_KERNEL_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}") -if (NOT EXISTS ${FREERTOS_KERNEL_PATH}) - message(FATAL_ERROR "Directory '${FREERTOS_KERNEL_PATH}' not found") -endif() -if (NOT EXISTS ${FREERTOS_KERNEL_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}/CMakeLists.txt) - message(FATAL_ERROR "Directory '${FREERTOS_KERNEL_PATH}' does not contain an RP2040 port here: ${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}") -endif() -set(FREERTOS_KERNEL_PATH ${FREERTOS_KERNEL_PATH} CACHE PATH "Path to the FreeRTOS_KERNEL" FORCE) - -add_subdirectory(${FREERTOS_KERNEL_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH} FREERTOS_KERNEL) \ No newline at end of file
diff --git a/README.md b/README.md index 98af352..dc0691e 100644 --- a/README.md +++ b/README.md
@@ -47,6 +47,21 @@ Note that if you first ran through the whole sequence to compile for the Debug Probe, then you don't need to start back at the top. You can just go back to the `cmake` step and start from there. +# Building for the Pico 2 + +If using an existing debugprobe clone: +- You must completely regenerate your build directory, or use a different one. +- You must also sync and update submodules as rp2350 needs a downstream FreeRTOS port for now. +- `PICO_SDK_PATH` must point to a version 2.0.0 or greater install. + + +``` +git submodule sync +git submodule update --init +mkdir build-pico2 +cd build-pico2 +cmake -DDEBUG_ON_PICO=1 -DPICO_BOARD=pico2 -DPICO_PLATFORM=rp2350 ../ +``` # TODO - AutoBaud selection, as PIO is a capable frequency counter
diff --git a/freertos b/freertos index 2dfdfc4..aa52f21 160000 --- a/freertos +++ b/freertos
@@ -1 +1 @@ -Subproject commit 2dfdfc4ba4d8bb487c8ea6b5428d7d742ce162b8 +Subproject commit aa52f214d35a0c304bb7ad4c71073dc34ff58480
diff --git a/src/FreeRTOSConfig.h b/src/FreeRTOSConfig.h index a236a19..bc062b6 100644 --- a/src/FreeRTOSConfig.h +++ b/src/FreeRTOSConfig.h
@@ -110,6 +110,13 @@ #define configSUPPORT_PICO_SYNC_INTEROP 1 #define configSUPPORT_PICO_TIME_INTEROP 1 +/* RP2350 grows some features */ +#define configENABLE_FPU 1 +#define configENABLE_MPU 0 +#define configENABLE_TRUSTZONE 0 +#define configRUN_FREERTOS_SECURE_ONLY 1 +#define configMAX_SYSCALL_INTERRUPT_PRIORITY 16 + #include <assert.h> /* Define to trap errors during development. */ #define configASSERT(x) assert(x)
diff --git a/src/main.c b/src/main.c index f14aebe..8d32ae4 100644 --- a/src/main.c +++ b/src/main.c
@@ -31,7 +31,11 @@ #include <stdio.h> #include <string.h> +#if PICO_SDK_VERSION_MAJOR >= 2 +#include "bsp/board_api.h" +#else #include "bsp/board.h" +#endif #include "tusb.h" #include "probe_config.h"