From ea69255b68ee58b1024c9d04aef4c51b7f08fee1 Mon Sep 17 00:00:00 2001 From: chain40 Date: Wed, 16 Jul 2025 01:03:40 +0800 Subject: [PATCH] feat: porting for cmake prj --- .clang-format | 3 - .vscode/launch.json | 74 ++++++ .vscode/tasks.json | 29 +++ CMakeLists.txt | 242 ++++++++++++++++++ CMakePresets.json | 59 +++++ FreeRTOSConfig.h => app/inc/FreeRTOSConfig.h | 0 adc_drv.h => app/inc/adc_drv.h | 0 adc_drv_if.h => app/inc/adc_drv_if.h | 0 adgs1412.h => app/inc/adgs1412.h | 0 ads8691.h => app/inc/ads8691.h | 0 apa102_2020.h => app/inc/apa102_2020.h | 0 app_config.h => app/inc/app_config.h | 0 .../inc/block_dev_drv_if.h | 0 btn.h => app/inc/btn.h | 0 builtin_saadc.h => app/inc/builtin_saadc.h | 0 cpg.h => app/inc/cpg.h | 0 cpg11_io.h => app/inc/cpg11_io.h | 0 dac_drv.h => app/inc/dac_drv.h | 0 dac_drv_if.h => app/inc/dac_drv_if.h | 0 edc.h => app/inc/edc.h | 0 edc20_io.h => app/inc/edc20_io.h | 0 eis.h => app/inc/eis.h | 0 elite.h => app/inc/elite.h | 0 elite_adc.h => app/inc/elite_adc.h | 0 elite_board.h => app/inc/elite_board.h | 0 .../inc/elite_correction.h | 0 elite_dac.h => app/inc/elite_dac.h | 0 elite_def.h => app/inc/elite_def.h | 0 elite_dev.h => app/inc/elite_dev.h | 0 elite_mmm.h => app/inc/elite_mmm.h | 0 fs.h => app/inc/fs.h | 0 gd25d10c.h => app/inc/gd25d10c.h | 0 le_uart_srv.h => app/inc/le_uart_srv.h | 0 led_drv.h => app/inc/led_drv.h | 0 led_drv_if.h => app/inc/led_drv_if.h | 0 max14802.h => app/inc/max14802.h | 0 max5136.h => app/inc/max5136.h | 0 pel.h => app/inc/pel.h | 0 pel20_io.h => app/inc/pel20_io.h | 0 radio_config.h => app/inc/radio_config.h | 0 sdio_config.h => app/inc/sdio_config.h | 0 sdk_config.h => app/inc/sdk_config.h | 0 sw_drv.h => app/inc/sw_drv.h | 0 sw_drv_if.h => app/inc/sw_drv_if.h | 0 tw1508.h => app/inc/tw1508.h | 0 uart_drv.h => app/inc/uart_drv.h | 0 usbd.h => app/inc/usbd.h | 0 .../inc/usbd_dfu_trigger.h | 0 adc_drv.c => app/src/adc_drv.c | 0 adgs1412.c => app/src/adgs1412.c | 0 ads8691.c => app/src/ads8691.c | 0 apa102_2020.c => app/src/apa102_2020.c | 0 btn.c => app/src/btn.c | 0 builtin_saadc.c => app/src/builtin_saadc.c | 0 cpg.c => app/src/cpg.c | 0 cpg11_io.c => app/src/cpg11_io.c | 0 dac_drv.c => app/src/dac_drv.c | 0 edc20.c => app/src/edc20.c | 0 .../src/edc20_cycle_iv_mode.c | 0 edc20_io.c => app/src/edc20_io.c | 0 elite.c => app/src/elite.c | 0 elite_adc.c => app/src/elite_adc.c | 0 elite_board.c => app/src/elite_board.c | 0 .../src/elite_correction.c | 0 elite_dac.c => app/src/elite_dac.c | 0 elite_dev.c => app/src/elite_dev.c | 0 elite_mmm.c => app/src/elite_mmm.c | 0 fs.c => app/src/fs.c | 0 gd25d10c.c => app/src/gd25d10c.c | 0 j_scop.c => app/src/j_scop.c | 0 le_adv.c => app/src/le_adv.c | 0 le_dfu.c => app/src/le_dfu.c | 0 le_elite_srv.c => app/src/le_elite_srv.c | 0 le_gap.c => app/src/le_gap.c | 0 le_gatt.c => app/src/le_gatt.c | 0 le_srv.c => app/src/le_srv.c | 0 le_uart_srv.c => app/src/le_uart_srv.c | 0 led_drv.c => app/src/led_drv.c | 0 main.c => app/src/main.c | 0 max14802.c => app/src/max14802.c | 0 max5136.c => app/src/max5136.c | 0 nrf5x.props => app/src/nrf5x.props | 0 nrf5x.xml => app/src/nrf5x.xml | 0 nrfutil.exe => app/src/nrfutil.exe | Bin pel.c => app/src/pel.c | 0 pel20_io.c => app/src/pel20_io.c | 0 private.pem => app/src/private.pem | 0 sw_drv.c => app/src/sw_drv.c | 0 syscalls.c => app/src/syscalls.c | 0 tw1508.c => app/src/tw1508.c | 0 uart.drv.c => app/src/uart.drv.c | 0 usbd.c => app/src/usbd.c | 0 .../src/usbd_dfu_trigger.c | 0 cmake/arm-none-eabi-gcc.cmake | 47 ++++ cmake/freertos.cmake | 21 ++ cmake/littlefs.cmake | 14 + cmake/nrf_log.cmake | 22 ++ cmake/sdk.cmake | 166 ++++++++++++ .../nRF52811_XXAA_s140.lds | 0 .../nRF52840_XXAA_S140_reserve.lds | 0 linkscripts/nrf_full.ld | 128 +++++++++ 101 files changed, 802 insertions(+), 3 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 CMakeLists.txt create mode 100644 CMakePresets.json rename FreeRTOSConfig.h => app/inc/FreeRTOSConfig.h (100%) rename adc_drv.h => app/inc/adc_drv.h (100%) rename adc_drv_if.h => app/inc/adc_drv_if.h (100%) rename adgs1412.h => app/inc/adgs1412.h (100%) rename ads8691.h => app/inc/ads8691.h (100%) rename apa102_2020.h => app/inc/apa102_2020.h (100%) rename app_config.h => app/inc/app_config.h (100%) rename block_dev_drv_if.h => app/inc/block_dev_drv_if.h (100%) rename btn.h => app/inc/btn.h (100%) rename builtin_saadc.h => app/inc/builtin_saadc.h (100%) rename cpg.h => app/inc/cpg.h (100%) rename cpg11_io.h => app/inc/cpg11_io.h (100%) rename dac_drv.h => app/inc/dac_drv.h (100%) rename dac_drv_if.h => app/inc/dac_drv_if.h (100%) rename edc.h => app/inc/edc.h (100%) rename edc20_io.h => app/inc/edc20_io.h (100%) rename eis.h => app/inc/eis.h (100%) rename elite.h => app/inc/elite.h (100%) rename elite_adc.h => app/inc/elite_adc.h (100%) rename elite_board.h => app/inc/elite_board.h (100%) rename elite_correction.h => app/inc/elite_correction.h (100%) rename elite_dac.h => app/inc/elite_dac.h (100%) rename elite_def.h => app/inc/elite_def.h (100%) rename elite_dev.h => app/inc/elite_dev.h (100%) rename elite_mmm.h => app/inc/elite_mmm.h (100%) rename fs.h => app/inc/fs.h (100%) rename gd25d10c.h => app/inc/gd25d10c.h (100%) rename le_uart_srv.h => app/inc/le_uart_srv.h (100%) rename led_drv.h => app/inc/led_drv.h (100%) rename led_drv_if.h => app/inc/led_drv_if.h (100%) rename max14802.h => app/inc/max14802.h (100%) rename max5136.h => app/inc/max5136.h (100%) rename pel.h => app/inc/pel.h (100%) rename pel20_io.h => app/inc/pel20_io.h (100%) rename radio_config.h => app/inc/radio_config.h (100%) rename sdio_config.h => app/inc/sdio_config.h (100%) rename sdk_config.h => app/inc/sdk_config.h (100%) rename sw_drv.h => app/inc/sw_drv.h (100%) rename sw_drv_if.h => app/inc/sw_drv_if.h (100%) rename tw1508.h => app/inc/tw1508.h (100%) rename uart_drv.h => app/inc/uart_drv.h (100%) rename usbd.h => app/inc/usbd.h (100%) rename usbd_dfu_trigger.h => app/inc/usbd_dfu_trigger.h (100%) rename adc_drv.c => app/src/adc_drv.c (100%) rename adgs1412.c => app/src/adgs1412.c (100%) rename ads8691.c => app/src/ads8691.c (100%) rename apa102_2020.c => app/src/apa102_2020.c (100%) rename btn.c => app/src/btn.c (100%) rename builtin_saadc.c => app/src/builtin_saadc.c (100%) rename cpg.c => app/src/cpg.c (100%) rename cpg11_io.c => app/src/cpg11_io.c (100%) rename dac_drv.c => app/src/dac_drv.c (100%) rename edc20.c => app/src/edc20.c (100%) rename edc20_cycle_iv_mode.c => app/src/edc20_cycle_iv_mode.c (100%) rename edc20_io.c => app/src/edc20_io.c (100%) rename elite.c => app/src/elite.c (100%) rename elite_adc.c => app/src/elite_adc.c (100%) rename elite_board.c => app/src/elite_board.c (100%) rename elite_correction.c => app/src/elite_correction.c (100%) rename elite_dac.c => app/src/elite_dac.c (100%) rename elite_dev.c => app/src/elite_dev.c (100%) rename elite_mmm.c => app/src/elite_mmm.c (100%) rename fs.c => app/src/fs.c (100%) rename gd25d10c.c => app/src/gd25d10c.c (100%) rename j_scop.c => app/src/j_scop.c (100%) rename le_adv.c => app/src/le_adv.c (100%) rename le_dfu.c => app/src/le_dfu.c (100%) rename le_elite_srv.c => app/src/le_elite_srv.c (100%) rename le_gap.c => app/src/le_gap.c (100%) rename le_gatt.c => app/src/le_gatt.c (100%) rename le_srv.c => app/src/le_srv.c (100%) rename le_uart_srv.c => app/src/le_uart_srv.c (100%) rename led_drv.c => app/src/led_drv.c (100%) rename main.c => app/src/main.c (100%) rename max14802.c => app/src/max14802.c (100%) rename max5136.c => app/src/max5136.c (100%) rename nrf5x.props => app/src/nrf5x.props (100%) rename nrf5x.xml => app/src/nrf5x.xml (100%) rename nrfutil.exe => app/src/nrfutil.exe (100%) rename pel.c => app/src/pel.c (100%) rename pel20_io.c => app/src/pel20_io.c (100%) rename private.pem => app/src/private.pem (100%) rename sw_drv.c => app/src/sw_drv.c (100%) rename syscalls.c => app/src/syscalls.c (100%) rename tw1508.c => app/src/tw1508.c (100%) rename uart.drv.c => app/src/uart.drv.c (100%) rename usbd.c => app/src/usbd.c (100%) rename usbd_dfu_trigger.c => app/src/usbd_dfu_trigger.c (100%) create mode 100644 cmake/arm-none-eabi-gcc.cmake create mode 100644 cmake/freertos.cmake create mode 100644 cmake/littlefs.cmake create mode 100644 cmake/nrf_log.cmake create mode 100644 cmake/sdk.cmake rename nRF52811_XXAA_s140.lds => linkscripts/nRF52811_XXAA_s140.lds (100%) rename nRF52840_XXAA_S140_reserve.lds => linkscripts/nRF52840_XXAA_S140_reserve.lds (100%) create mode 100644 linkscripts/nrf_full.ld diff --git a/.clang-format b/.clang-format index fc3b888..bd2205e 100644 --- a/.clang-format +++ b/.clang-format @@ -29,7 +29,6 @@ BinPackParameters: false BreakBeforeBinaryOperators: None BreakBeforeTernaryOperators: false BreakAfterJavaFieldAnnotations: true -AlignConsecutiveAssignments: true AlignTrailingComments: true BreakConstructorInitializers: AfterColon AlignConsecutiveMacros: @@ -50,6 +49,4 @@ AlignConsecutiveBitFields: AlignCompound: true PadOperators: true AlignEscapedNewlines: Right -BinPackArguments: false -BinPackParameters: false ... diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..7ee042f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,74 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "cwd": "${workspaceRoot}", + "executable": "${command:cmake.launchTargetPath}", + "name": "(Ubuntu) launch & debug", + "request": "launch", + "type": "cortex-debug", + "servertype": "jlink", + "serverpath": "/opt/SEGGER/JLink/JLinkGDBServerCLExe", + "serverArgs": [ + "-halt", + "-ir", + "-vd", + "-strict", + ], + "rttConfig": { + "enabled": true, + "address": "auto", + "decoders": [ + { + "label": "", + "port": 0, + "type": "console" + } + ], + }, + "armToolchainPath": "/opt/arm-none-eabi/bin", + "device": "NRF52840_XXAA", + "interface": "swd", + "rtos": "FreeRTOS", + "svdFile": "${workspaceRoot}/../bmd380_sdk/modules/nrfx/mdk/nrf52840.svd", + "runToEntryPoint": "main", + "preLaunchTask": "CMake: build" + }, + { + "cwd": "${workspaceRoot}", + "executable": "${command:cmake.launchTargetPath}", + "name": "(Windows) launch & debug", + "request": "launch", + "type": "cortex-debug", + "servertype": "jlink", + "serverpath": "C:/Program Files/SEGGER/JLink/JLinkGDBServerCL.exe", + "serverArgs": [ + "-halt", + "-ir", + "-vd", + "-strict", + ], + "rttConfig": { + "enabled": true, + "address": "auto", + "decoders": [ + { + "label": "", + "port": 0, + "type": "console" + } + ], + }, + "armToolchainPath": "C:/sysgcc/arm-eabi/bin", + "device": "NRF52840_XXAA", + "interface": "swd", + "rtos": "FreeRTOS", + "svdFile": "${workspaceRoot}/../bmd380_sdk/modules/nrfx/mdk/nrf52840.svd", + "runToEntryPoint": "main", + "preLaunchTask": "CMake: build" + }, + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..549517e --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,29 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "cmake", + "label": "CMake: build", + "command": "build", + "targets": [ + "all" + ], + "preset": "Debug", + "group": "build", + "problemMatcher": [], + "detail": "CMake template build task" + }, + { + "type": "cmake", + "label": "CMake: clean rebuild", + "command": "cleanRebuild", + "targets": [ + "all" + ], + "preset": "Debug", + "group": "build", + "problemMatcher": [], + "detail": "CMake template clean rebuild task" + } + ] +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..31595a5 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,242 @@ +cmake_minimum_required(VERSION 3.10.0) + +# ========================== +# Toolchain Setup +# ========================== +set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/arm-none-eabi-gcc.cmake) + +# ========================== +# Project Setup +# ========================== +project(elite VERSION 0.1.0 LANGUAGES C ASM) + +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS ON) + +set(EXECUTABLE ${PROJECT_NAME}.elf) +set(NRF_SDK_DIR ${CMAKE_SOURCE_DIR}/../bmd380_sdk) +set(NRF_SDK_LINKER_DIR ${NRF_SDK_DIR}/modules/nrfx/mdk) +set(SD_LINKER_DIR ${CMAKE_SOURCE_DIR}/SoftdeviceLibraries/hard) +set(LINKER_DIR ${CMAKE_SOURCE_DIR}/linkscripts) +set(LINKER_FILE ${LINKER_DIR}/nRF52840_XXAA_S140_reserve.lds) + +# ========================== +# Compiler Flags and Defines +# ========================== +set(COMMON_COMPILE_OPT + -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb + -fdata-sections -ffunction-sections -Wall -Os -g3 -std=gnu99 + -Wno-unused-variable -Wno-pointer-sign -Wno-array-bounds +) + +set(COMMON_COMPILE_DEF + -DDEBUG=1 -DNRF52840_XXAA -DS140_reserve -DCONFIG_GPIO_AS_PIN + -DRESETHNRF_DFU_SETTINGS_VERSION=2 -DNRF_SD_BLE_API_VERSION=7 + -D__STACK_SIZE=1024 -D__HEAP_SIZE=1024 -DARM_MATH_CM4 + -DSOFTDEVICE_PRESENT -DUSE_APP_CONFIG +) + +set(COMMON_COMPILE_INC + ${ARM_TOOLCHAIN_DIR}/../arm-none-eabi/include + ${CMAKE_SOURCE_DIR}/app/inc + ${NRF_SDK_DIR}/components/ble/ble_db_discovery + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dis + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dis_c + ${NRF_SDK_DIR}/components/ble/common/ + ${NRF_SDK_DIR}/components/ble/nrf_ble_gatt + ${NRF_SDK_DIR}/components/ble/nrf_ble_gq + ${NRF_SDK_DIR}/components/ble/nrf_ble_scan + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dfu + ${NRF_SDK_DIR}/components/ble/ble_advertising + ${NRF_SDK_DIR}/components/ble/peer_manager + + ${NRF_SDK_DIR}/components/libraries/atomic + ${NRF_SDK_DIR}/components/libraries/atomic_flags + ${NRF_SDK_DIR}/components/libraries/balloc + ${NRF_SDK_DIR}/components/libraries/delay + ${NRF_SDK_DIR}/components/libraries/experimental_section_vars + + ${NRF_SDK_DIR}/components/libraries/memobj + ${NRF_SDK_DIR}/components/libraries/queue + ${NRF_SDK_DIR}/components/libraries/ringbuf + ${NRF_SDK_DIR}/components/libraries/strerror + ${NRF_SDK_DIR}/components/libraries/util + ${NRF_SDK_DIR}/components/libraries/block_dev + ${NRF_SDK_DIR}/components/libraries/bootloader + ${NRF_SDK_DIR}/components/libraries/bootloader/ble_dfu + ${NRF_SDK_DIR}/components/libraries/bootloader/dfu + ${NRF_SDK_DIR}/components/libraries/pwr_mgmt + ${NRF_SDK_DIR}/components/libraries/usbd + ${NRF_SDK_DIR}/components/libraries/usbd/class/cdc + ${NRF_SDK_DIR}/components/libraries/usbd/class/cdc/acm + ${NRF_SDK_DIR}/components/libraries/usbd/class/nrf_dfu_trigger + ${NRF_SDK_DIR}/components/libraries/atomic_fifo + ${NRF_SDK_DIR}/components/libraries/svc + ${NRF_SDK_DIR}/components/libraries/mutex + + ${NRF_SDK_DIR}/components/softdevice/common + ${NRF_SDK_DIR}/components/softdevice/mbr/headers + ${NRF_SDK_DIR}/components/softdevice/s140/headers + + ${NRF_SDK_DIR}/components/toolchain/cmsis/include + ${NRF_SDK_DIR}/modules/nrfx + ${NRF_SDK_DIR}/modules/nrfx/hal + ${NRF_SDK_DIR}/modules/nrfx/mdk + ${NRF_SDK_DIR}/modules/nrfx/drivers/include + + ${NRF_SDK_DIR}/external/fprintf + ${NRF_SDK_DIR}/external/segger_rtt + ${NRF_SDK_DIR}/external/utf_converter + + ${NRF_SDK_DIR}/integration/nrfx + ${NRF_SDK_DIR}/integration/nrfx/legacy +) + +# ========================== +# Configuration Interface +# ========================== +add_library(prj_config INTERFACE) +target_include_directories(prj_config INTERFACE ${COMMON_COMPILE_INC}) +target_compile_definitions(prj_config INTERFACE ${COMMON_COMPILE_DEF}) +target_compile_options(prj_config INTERFACE ${COMMON_COMPILE_OPT}) + + +# ========================== +# Subdirectories +# ========================== +include(cmake/littlefs.cmake) +include(cmake/freertos.cmake) +include(cmake/nrf_log.cmake) + +# ========================== +# Source Files +# ========================== +set(STARTUP_SRC + ${NRF_SDK_DIR}/modules/nrfx/mdk/gcc_startup_nrf52840.S + ${NRF_SDK_DIR}/modules/nrfx/mdk/system_nrf52.c +) + +set(UTILS_SRC + ${NRF_SDK_DIR}/components/libraries/util/nrf_assert.c + ${NRF_SDK_DIR}/components/libraries/util/app_error.c + ${NRF_SDK_DIR}/components/libraries/util/app_error_handler_gcc.c + ${NRF_SDK_DIR}/components/libraries/util/app_error_weak.c + ${NRF_SDK_DIR}/components/libraries/util/app_util_platform.c + ${NRF_SDK_DIR}/components/libraries/strerror/nrf_strerror.c + ${NRF_SDK_DIR}/components/libraries/pwr_mgmt/nrf_pwr_mgmt.c +) + +set(ATOMIC_SRC + ${NRF_SDK_DIR}/components/libraries/atomic/nrf_atomic.c + ${NRF_SDK_DIR}/components/libraries/atomic_fifo/nrf_atfifo.c + ${NRF_SDK_DIR}/components/libraries/atomic_flags/nrf_atflags.c + ${NRF_SDK_DIR}/components/libraries/memobj/nrf_memobj.c + ${NRF_SDK_DIR}/components/libraries/balloc/nrf_balloc.c + ${NRF_SDK_DIR}/components/libraries/ringbuf/nrf_ringbuf.c +) + +set(USBD_SRC + ${NRF_SDK_DIR}/components/libraries/usbd/app_usbd.c + ${NRF_SDK_DIR}/components/libraries/usbd/app_usbd_core.c + ${NRF_SDK_DIR}/components/libraries/usbd/app_usbd_serial_num.c + ${NRF_SDK_DIR}/components/libraries/usbd/app_usbd_string_desc.c + ${NRF_SDK_DIR}/components/libraries/usbd/class/cdc/acm/app_usbd_cdc_acm.c + ${NRF_SDK_DIR}/components/libraries/usbd/class/nrf_dfu_trigger/app_usbd_nrf_dfu_trigger.c +) + +set(SOFTDEVICE_SRC + ${NRF_SDK_DIR}/components/softdevice/common/nrf_sdh.c + ${NRF_SDK_DIR}/components/softdevice/common/nrf_sdh_freertos.c + ${NRF_SDK_DIR}/components/softdevice/common/nrf_sdh_ble.c +) + +set(BLE_SRC + ${NRF_SDK_DIR}/components/ble/common/ble_advdata.c + ${NRF_SDK_DIR}/components/ble/common/ble_conn_state.c + ${NRF_SDK_DIR}/components/ble/common/ble_srv_common.c + ${NRF_SDK_DIR}/components/ble/ble_advertising/ble_advertising.c + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dis/ble_dis.c + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dfu/ble_dfu.c + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dfu/ble_dfu_unbonded.c + ${NRF_SDK_DIR}/components/ble/nrf_ble_gatt/nrf_ble_gatt.c +) + +set(PRINTF_SRC + ${NRF_SDK_DIR}/external/fprintf/nrf_fprintf.c + ${NRF_SDK_DIR}/external/fprintf/nrf_fprintf_format.c + ${NRF_SDK_DIR}/external/segger_rtt/SEGGER_RTT.c + ${NRF_SDK_DIR}/external/segger_rtt/SEGGER_RTT_printf.c +) + +set(NRFX_DRIVERS_SRC + ${NRF_SDK_DIR}/modules/nrfx/drivers/src/nrfx_clock.c + ${NRF_SDK_DIR}/modules/nrfx/drivers/src/nrfx_power.c + ${NRF_SDK_DIR}/modules/nrfx/drivers/src/nrfx_usbd.c + ${NRF_SDK_DIR}/modules/nrfx/soc/nrfx_atomic.c +) + +set(NRFX_LEGACY_SRC + ${NRF_SDK_DIR}/integration/nrfx/legacy/nrf_drv_clock.c + ${NRF_SDK_DIR}/integration/nrfx/legacy/nrf_drv_power.c +) + +set(EXPERIMENTAL_SRC + ${NRF_SDK_DIR}/components/libraries/experimental_section_vars/nrf_section_iter.c +) + +file(GLOB_RECURSE APP_SOURCES "app/*.c") + +# ========================== +# Executable and Linker +# ========================== +add_executable(${EXECUTABLE} + $ + $ + $ + ${APP_SOURCES} + ${STARTUP_SRC} + ${UTILS_SRC} + ${ATOMIC_SRC} + ${USBD_SRC} + ${SOFTDEVICE_SRC} + ${BLE_SRC} + ${PRINTF_SRC} + ${NRFX_DRIVERS_SRC} + ${NRFX_LEGACY_SRC} + ${EXPERIMENTAL_SRC} + ${NRF_SDK_DIR}/components/libraries/pwr_mgmt/nrf_pwr_mgmt.c +) + +target_link_options(${EXECUTABLE} PRIVATE + -T${LINKER_FILE} + -L${LINKER_DIR} + -L${SD_LINKER_DIR} + -L${NRF_SDK_LINKER_DIR} + -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb + --specs=nano.specs --specs=nosys.specs -u _printf_float + -lc -lm + -Wl,-Map=${PROJECT_NAME}.map,--cref + -Wl,--gc-sections + -Xlinker -print-memory-usage -Xlinker +) + +target_link_libraries(${EXECUTABLE} PRIVATE + prj_config + lfs + freertos + nrf_log +) + +# Optional: Print executable size as part of the post build process +add_custom_command(TARGET ${EXECUTABLE} + POST_BUILD + COMMAND ${CMAKE_SIZE} ${EXECUTABLE}) + +# Optional: Create hex, bin and S-Record files after the build +add_custom_command(TARGET ${EXECUTABLE} + POST_BUILD + COMMAND ${CMAKE_OBJCOPY} -O srec --srec-len=64 ${EXECUTABLE} ${PROJECT_NAME}.s19 + COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE} ${PROJECT_NAME}.hex + COMMAND ${CMAKE_OBJCOPY} -O binary ${EXECUTABLE} ${PROJECT_NAME}.bin) + \ No newline at end of file diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..2f2f4d6 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,59 @@ +{ + "version": 3, + "configurePresets": [ + { + "name": "default", + "hidden": true, + "generator": "Ninja", + "binaryDir": "${sourceDir}/build/${presetName}", + "cacheVariables": { + } + }, + { + "name": "Debug", + "inherits": "default", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "RelWithDebInfo", + "inherits": "default", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } + }, + { + "name": "Release", + "inherits": "default", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + }, + { + "name": "MinSizeRel", + "inherits": "default", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "MinSizeRel" + } + } + ], + "buildPresets": [ + { + "name": "Debug", + "configurePreset": "Debug" + }, + { + "name": "RelWithDebInfo", + "configurePreset": "RelWithDebInfo" + }, + { + "name": "Release", + "configurePreset": "Release" + }, + { + "name": "MinSizeRel", + "configurePreset": "MinSizeRel" + } + ] +} \ No newline at end of file diff --git a/FreeRTOSConfig.h b/app/inc/FreeRTOSConfig.h similarity index 100% rename from FreeRTOSConfig.h rename to app/inc/FreeRTOSConfig.h diff --git a/adc_drv.h b/app/inc/adc_drv.h similarity index 100% rename from adc_drv.h rename to app/inc/adc_drv.h diff --git a/adc_drv_if.h b/app/inc/adc_drv_if.h similarity index 100% rename from adc_drv_if.h rename to app/inc/adc_drv_if.h diff --git a/adgs1412.h b/app/inc/adgs1412.h similarity index 100% rename from adgs1412.h rename to app/inc/adgs1412.h diff --git a/ads8691.h b/app/inc/ads8691.h similarity index 100% rename from ads8691.h rename to app/inc/ads8691.h diff --git a/apa102_2020.h b/app/inc/apa102_2020.h similarity index 100% rename from apa102_2020.h rename to app/inc/apa102_2020.h diff --git a/app_config.h b/app/inc/app_config.h similarity index 100% rename from app_config.h rename to app/inc/app_config.h diff --git a/block_dev_drv_if.h b/app/inc/block_dev_drv_if.h similarity index 100% rename from block_dev_drv_if.h rename to app/inc/block_dev_drv_if.h diff --git a/btn.h b/app/inc/btn.h similarity index 100% rename from btn.h rename to app/inc/btn.h diff --git a/builtin_saadc.h b/app/inc/builtin_saadc.h similarity index 100% rename from builtin_saadc.h rename to app/inc/builtin_saadc.h diff --git a/cpg.h b/app/inc/cpg.h similarity index 100% rename from cpg.h rename to app/inc/cpg.h diff --git a/cpg11_io.h b/app/inc/cpg11_io.h similarity index 100% rename from cpg11_io.h rename to app/inc/cpg11_io.h diff --git a/dac_drv.h b/app/inc/dac_drv.h similarity index 100% rename from dac_drv.h rename to app/inc/dac_drv.h diff --git a/dac_drv_if.h b/app/inc/dac_drv_if.h similarity index 100% rename from dac_drv_if.h rename to app/inc/dac_drv_if.h diff --git a/edc.h b/app/inc/edc.h similarity index 100% rename from edc.h rename to app/inc/edc.h diff --git a/edc20_io.h b/app/inc/edc20_io.h similarity index 100% rename from edc20_io.h rename to app/inc/edc20_io.h diff --git a/eis.h b/app/inc/eis.h similarity index 100% rename from eis.h rename to app/inc/eis.h diff --git a/elite.h b/app/inc/elite.h similarity index 100% rename from elite.h rename to app/inc/elite.h diff --git a/elite_adc.h b/app/inc/elite_adc.h similarity index 100% rename from elite_adc.h rename to app/inc/elite_adc.h diff --git a/elite_board.h b/app/inc/elite_board.h similarity index 100% rename from elite_board.h rename to app/inc/elite_board.h diff --git a/elite_correction.h b/app/inc/elite_correction.h similarity index 100% rename from elite_correction.h rename to app/inc/elite_correction.h diff --git a/elite_dac.h b/app/inc/elite_dac.h similarity index 100% rename from elite_dac.h rename to app/inc/elite_dac.h diff --git a/elite_def.h b/app/inc/elite_def.h similarity index 100% rename from elite_def.h rename to app/inc/elite_def.h diff --git a/elite_dev.h b/app/inc/elite_dev.h similarity index 100% rename from elite_dev.h rename to app/inc/elite_dev.h diff --git a/elite_mmm.h b/app/inc/elite_mmm.h similarity index 100% rename from elite_mmm.h rename to app/inc/elite_mmm.h diff --git a/fs.h b/app/inc/fs.h similarity index 100% rename from fs.h rename to app/inc/fs.h diff --git a/gd25d10c.h b/app/inc/gd25d10c.h similarity index 100% rename from gd25d10c.h rename to app/inc/gd25d10c.h diff --git a/le_uart_srv.h b/app/inc/le_uart_srv.h similarity index 100% rename from le_uart_srv.h rename to app/inc/le_uart_srv.h diff --git a/led_drv.h b/app/inc/led_drv.h similarity index 100% rename from led_drv.h rename to app/inc/led_drv.h diff --git a/led_drv_if.h b/app/inc/led_drv_if.h similarity index 100% rename from led_drv_if.h rename to app/inc/led_drv_if.h diff --git a/max14802.h b/app/inc/max14802.h similarity index 100% rename from max14802.h rename to app/inc/max14802.h diff --git a/max5136.h b/app/inc/max5136.h similarity index 100% rename from max5136.h rename to app/inc/max5136.h diff --git a/pel.h b/app/inc/pel.h similarity index 100% rename from pel.h rename to app/inc/pel.h diff --git a/pel20_io.h b/app/inc/pel20_io.h similarity index 100% rename from pel20_io.h rename to app/inc/pel20_io.h diff --git a/radio_config.h b/app/inc/radio_config.h similarity index 100% rename from radio_config.h rename to app/inc/radio_config.h diff --git a/sdio_config.h b/app/inc/sdio_config.h similarity index 100% rename from sdio_config.h rename to app/inc/sdio_config.h diff --git a/sdk_config.h b/app/inc/sdk_config.h similarity index 100% rename from sdk_config.h rename to app/inc/sdk_config.h diff --git a/sw_drv.h b/app/inc/sw_drv.h similarity index 100% rename from sw_drv.h rename to app/inc/sw_drv.h diff --git a/sw_drv_if.h b/app/inc/sw_drv_if.h similarity index 100% rename from sw_drv_if.h rename to app/inc/sw_drv_if.h diff --git a/tw1508.h b/app/inc/tw1508.h similarity index 100% rename from tw1508.h rename to app/inc/tw1508.h diff --git a/uart_drv.h b/app/inc/uart_drv.h similarity index 100% rename from uart_drv.h rename to app/inc/uart_drv.h diff --git a/usbd.h b/app/inc/usbd.h similarity index 100% rename from usbd.h rename to app/inc/usbd.h diff --git a/usbd_dfu_trigger.h b/app/inc/usbd_dfu_trigger.h similarity index 100% rename from usbd_dfu_trigger.h rename to app/inc/usbd_dfu_trigger.h diff --git a/adc_drv.c b/app/src/adc_drv.c similarity index 100% rename from adc_drv.c rename to app/src/adc_drv.c diff --git a/adgs1412.c b/app/src/adgs1412.c similarity index 100% rename from adgs1412.c rename to app/src/adgs1412.c diff --git a/ads8691.c b/app/src/ads8691.c similarity index 100% rename from ads8691.c rename to app/src/ads8691.c diff --git a/apa102_2020.c b/app/src/apa102_2020.c similarity index 100% rename from apa102_2020.c rename to app/src/apa102_2020.c diff --git a/btn.c b/app/src/btn.c similarity index 100% rename from btn.c rename to app/src/btn.c diff --git a/builtin_saadc.c b/app/src/builtin_saadc.c similarity index 100% rename from builtin_saadc.c rename to app/src/builtin_saadc.c diff --git a/cpg.c b/app/src/cpg.c similarity index 100% rename from cpg.c rename to app/src/cpg.c diff --git a/cpg11_io.c b/app/src/cpg11_io.c similarity index 100% rename from cpg11_io.c rename to app/src/cpg11_io.c diff --git a/dac_drv.c b/app/src/dac_drv.c similarity index 100% rename from dac_drv.c rename to app/src/dac_drv.c diff --git a/edc20.c b/app/src/edc20.c similarity index 100% rename from edc20.c rename to app/src/edc20.c diff --git a/edc20_cycle_iv_mode.c b/app/src/edc20_cycle_iv_mode.c similarity index 100% rename from edc20_cycle_iv_mode.c rename to app/src/edc20_cycle_iv_mode.c diff --git a/edc20_io.c b/app/src/edc20_io.c similarity index 100% rename from edc20_io.c rename to app/src/edc20_io.c diff --git a/elite.c b/app/src/elite.c similarity index 100% rename from elite.c rename to app/src/elite.c diff --git a/elite_adc.c b/app/src/elite_adc.c similarity index 100% rename from elite_adc.c rename to app/src/elite_adc.c diff --git a/elite_board.c b/app/src/elite_board.c similarity index 100% rename from elite_board.c rename to app/src/elite_board.c diff --git a/elite_correction.c b/app/src/elite_correction.c similarity index 100% rename from elite_correction.c rename to app/src/elite_correction.c diff --git a/elite_dac.c b/app/src/elite_dac.c similarity index 100% rename from elite_dac.c rename to app/src/elite_dac.c diff --git a/elite_dev.c b/app/src/elite_dev.c similarity index 100% rename from elite_dev.c rename to app/src/elite_dev.c diff --git a/elite_mmm.c b/app/src/elite_mmm.c similarity index 100% rename from elite_mmm.c rename to app/src/elite_mmm.c diff --git a/fs.c b/app/src/fs.c similarity index 100% rename from fs.c rename to app/src/fs.c diff --git a/gd25d10c.c b/app/src/gd25d10c.c similarity index 100% rename from gd25d10c.c rename to app/src/gd25d10c.c diff --git a/j_scop.c b/app/src/j_scop.c similarity index 100% rename from j_scop.c rename to app/src/j_scop.c diff --git a/le_adv.c b/app/src/le_adv.c similarity index 100% rename from le_adv.c rename to app/src/le_adv.c diff --git a/le_dfu.c b/app/src/le_dfu.c similarity index 100% rename from le_dfu.c rename to app/src/le_dfu.c diff --git a/le_elite_srv.c b/app/src/le_elite_srv.c similarity index 100% rename from le_elite_srv.c rename to app/src/le_elite_srv.c diff --git a/le_gap.c b/app/src/le_gap.c similarity index 100% rename from le_gap.c rename to app/src/le_gap.c diff --git a/le_gatt.c b/app/src/le_gatt.c similarity index 100% rename from le_gatt.c rename to app/src/le_gatt.c diff --git a/le_srv.c b/app/src/le_srv.c similarity index 100% rename from le_srv.c rename to app/src/le_srv.c diff --git a/le_uart_srv.c b/app/src/le_uart_srv.c similarity index 100% rename from le_uart_srv.c rename to app/src/le_uart_srv.c diff --git a/led_drv.c b/app/src/led_drv.c similarity index 100% rename from led_drv.c rename to app/src/led_drv.c diff --git a/main.c b/app/src/main.c similarity index 100% rename from main.c rename to app/src/main.c diff --git a/max14802.c b/app/src/max14802.c similarity index 100% rename from max14802.c rename to app/src/max14802.c diff --git a/max5136.c b/app/src/max5136.c similarity index 100% rename from max5136.c rename to app/src/max5136.c diff --git a/nrf5x.props b/app/src/nrf5x.props similarity index 100% rename from nrf5x.props rename to app/src/nrf5x.props diff --git a/nrf5x.xml b/app/src/nrf5x.xml similarity index 100% rename from nrf5x.xml rename to app/src/nrf5x.xml diff --git a/nrfutil.exe b/app/src/nrfutil.exe similarity index 100% rename from nrfutil.exe rename to app/src/nrfutil.exe diff --git a/pel.c b/app/src/pel.c similarity index 100% rename from pel.c rename to app/src/pel.c diff --git a/pel20_io.c b/app/src/pel20_io.c similarity index 100% rename from pel20_io.c rename to app/src/pel20_io.c diff --git a/private.pem b/app/src/private.pem similarity index 100% rename from private.pem rename to app/src/private.pem diff --git a/sw_drv.c b/app/src/sw_drv.c similarity index 100% rename from sw_drv.c rename to app/src/sw_drv.c diff --git a/syscalls.c b/app/src/syscalls.c similarity index 100% rename from syscalls.c rename to app/src/syscalls.c diff --git a/tw1508.c b/app/src/tw1508.c similarity index 100% rename from tw1508.c rename to app/src/tw1508.c diff --git a/uart.drv.c b/app/src/uart.drv.c similarity index 100% rename from uart.drv.c rename to app/src/uart.drv.c diff --git a/usbd.c b/app/src/usbd.c similarity index 100% rename from usbd.c rename to app/src/usbd.c diff --git a/usbd_dfu_trigger.c b/app/src/usbd_dfu_trigger.c similarity index 100% rename from usbd_dfu_trigger.c rename to app/src/usbd_dfu_trigger.c diff --git a/cmake/arm-none-eabi-gcc.cmake b/cmake/arm-none-eabi-gcc.cmake new file mode 100644 index 0000000..6a8da18 --- /dev/null +++ b/cmake/arm-none-eabi-gcc.cmake @@ -0,0 +1,47 @@ +# Call Cmake from the 'build' subfolder with the command below. +# For using Make: +# cmake -DCMAKE_MAKE_PROGRAM=make.exe -DCMAKE_TOOLCHAIN_FILE="arm-none-eabi-gcc.cmake" -G "Unix Makefiles" .. +# followed by +# 'make' or 'cmake --build .' to build it +# +# For using Ninja: +# cmake -DCMAKE_MAKE_PROGRAM=ninja.exe -DCMAKE_TOOLCHAIN_FILE="arm-none-eabi-gcc.cmake" -G "Ninja" .. +# followed by +# 'ninja' or 'cmake --build .' to build it + +set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_PROCESSOR arm) + +if(CMAKE_HOST_WIN32) + set(EXECUTESUFFIX ".exe") + set(ARM_TOOLCHAIN_DIR "C:/SysGCC/arm-eabi/bin") +elseif(CMAKE_HOST_UNIX) + set(EXECUTESUFFIX "") + if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin") + message(STATUS "Running on macOS") + set(ARM_TOOLCHAIN_DIR "/opt/homebrew/bin") + elseif(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux") + message(STATUS "Running on Linux (likely Ubuntu)") + set(ARM_TOOLCHAIN_DIR "/opt/arm-none-eabi/bin") + endif() +else() + message(WARNING "Unknown host OS: ${CMAKE_HOST_SYSTEM_NAME}") +endif() + +set(BINUTILS_PATH ${ARM_TOOLCHAIN_DIR}) + +set(TOOLCHAIN_PREFIX arm-none-eabi-) + +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) + +set(CMAKE_C_COMPILER ${ARM_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}gcc${EXECUTESUFFIX}) +set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) +set(CMAKE_CXX_COMPILER ${ARM_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}g++${EXECUTESUFFIX}) +set(CMAKE_LINKER ${ARM_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}ld${EXECUTESUFFIX}) +set(CMAKE_OBJCOPY ${ARM_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}objcopy${EXECUTESUFFIX} CACHE INTERNAL "objcopy tool") +set(CMAKE_SIZE ${ARM_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}size${EXECUTESUFFIX} CACHE INTERNAL "size tool") + +set(CMAKE_FIND_ROOT_PATH ${BINUTILS_PATH}) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/cmake/freertos.cmake b/cmake/freertos.cmake new file mode 100644 index 0000000..a29412f --- /dev/null +++ b/cmake/freertos.cmake @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.15.3) + +file(GLOB FREERTO_KERNEL_SOURCES "${NRF_SDK_DIR}/external/freertos/source/*.c") + +add_library(freertos OBJECT + ${NRF_SDK_DIR}/external/freertos/portable/GCC/nrf52/port.c + ${NRF_SDK_DIR}/external/freertos/portable/CMSIS/nrf52/port_cmsis.c + ${NRF_SDK_DIR}/external/freertos/portable/CMSIS/nrf52/port_cmsis_systick.c + ${NRF_SDK_DIR}/external/freertos/source/portable/MemMang/heap_4.c + ${FREERTO_KERNEL_SOURCES} +) + +target_include_directories(freertos PUBLIC + ${NRF_SDK_DIR}/external/freertos/portable/CMSIS/nrf52 + ${NRF_SDK_DIR}/external/freertos/portable/GCC/nrf52 + ${NRF_SDK_DIR}/external/freertos/source/include +) + +target_link_libraries(freertos PRIVATE + prj_config +) diff --git a/cmake/littlefs.cmake b/cmake/littlefs.cmake new file mode 100644 index 0000000..d4c313b --- /dev/null +++ b/cmake/littlefs.cmake @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.15.3) + +file(GLOB_RECURSE LFS_SOURCES "littlefs/*.c") + +add_library(lfs OBJECT ${LFS_SOURCES}) + +target_include_directories(lfs PUBLIC + ${CMAKE_SOURCE_DIR}/littlefs +) + +target_link_libraries(lfs PRIVATE + prj_config + freertos +) diff --git a/cmake/nrf_log.cmake b/cmake/nrf_log.cmake new file mode 100644 index 0000000..ef0909c --- /dev/null +++ b/cmake/nrf_log.cmake @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 3.15.3) + +set(NRF_LOG_SRC + ${NRF_SDK_DIR}/components/libraries/log/src/nrf_log_backend_rtt.c + ${NRF_SDK_DIR}/components/libraries/log/src/nrf_log_backend_serial.c + ${NRF_SDK_DIR}/components/libraries/log/src/nrf_log_default_backends.c + ${NRF_SDK_DIR}/components/libraries/log/src/nrf_log_frontend.c + ${NRF_SDK_DIR}/components/libraries/log/src/nrf_log_str_formatter.c +) + +add_library(nrf_log OBJECT + ${NRF_LOG_SRC} +) + +target_include_directories(nrf_log PUBLIC + ${NRF_SDK_DIR}/components/libraries/log + ${NRF_SDK_DIR}/components/libraries/log/src +) + +target_link_libraries(nrf_log PRIVATE + prj_config +) diff --git a/cmake/sdk.cmake b/cmake/sdk.cmake new file mode 100644 index 0000000..758e6ae --- /dev/null +++ b/cmake/sdk.cmake @@ -0,0 +1,166 @@ +cmake_minimum_required(VERSION 3.15.3) + +# ========================== +# Source Files +# ========================== +set(STARTUP_SRC + ${NRF_SDK_DIR}/modules/nrfx/mdk/gcc_startup_nrf52840.S + ${NRF_SDK_DIR}/modules/nrfx/mdk/system_nrf52.c +) + +set(LOGGING_SRC + ${NRF_SDK_DIR}/components/libraries/log/src/nrf_log_backend_rtt.c + ${NRF_SDK_DIR}/components/libraries/log/src/nrf_log_backend_serial.c + ${NRF_SDK_DIR}/components/libraries/log/src/nrf_log_default_backends.c + ${NRF_SDK_DIR}/components/libraries/log/src/nrf_log_frontend.c + ${NRF_SDK_DIR}/components/libraries/log/src/nrf_log_str_formatter.c +) + +set(UTILS_SRC + ${NRF_SDK_DIR}/components/libraries/util/nrf_assert.c + ${NRF_SDK_DIR}/components/libraries/util/app_error.c + ${NRF_SDK_DIR}/components/libraries/util/app_error_handler_gcc.c + ${NRF_SDK_DIR}/components/libraries/util/app_error_weak.c + ${NRF_SDK_DIR}/components/libraries/util/app_util_platform.c + ${NRF_SDK_DIR}/components/libraries/strerror/nrf_strerror.c + ${NRF_SDK_DIR}/components/libraries/pwr_mgmt/nrf_pwr_mgmt.c +) + +set(ATOMIC_SRC + ${NRF_SDK_DIR}/components/libraries/atomic/nrf_atomic.c + ${NRF_SDK_DIR}/components/libraries/atomic_fifo/nrf_atfifo.c + ${NRF_SDK_DIR}/components/libraries/atomic_flags/nrf_atflags.c + ${NRF_SDK_DIR}/components/libraries/memobj/nrf_memobj.c + ${NRF_SDK_DIR}/components/libraries/balloc/nrf_balloc.c + ${NRF_SDK_DIR}/components/libraries/ringbuf/nrf_ringbuf.c +) + +set(USBD_SRC + ${NRF_SDK_DIR}/components/libraries/usbd/app_usbd.c + ${NRF_SDK_DIR}/components/libraries/usbd/app_usbd_core.c + ${NRF_SDK_DIR}/components/libraries/usbd/app_usbd_serial_num.c + ${NRF_SDK_DIR}/components/libraries/usbd/app_usbd_string_desc.c + ${NRF_SDK_DIR}/components/libraries/usbd/class/cdc/acm/app_usbd_cdc_acm.c + ${NRF_SDK_DIR}/components/libraries/usbd/class/nrf_dfu_trigger/app_usbd_nrf_dfu_trigger.c +) + +set(SOFTDEVICE_SRC + ${NRF_SDK_DIR}/components/softdevice/common/nrf_sdh.c + ${NRF_SDK_DIR}/components/softdevice/common/nrf_sdh_freertos.c + ${NRF_SDK_DIR}/components/softdevice/common/nrf_sdh_ble.c +) + +set(BLE_SRC + ${NRF_SDK_DIR}/components/ble/common/ble_advdata.c + ${NRF_SDK_DIR}/components/ble/common/ble_conn_state.c + ${NRF_SDK_DIR}/components/ble/common/ble_srv_common.c + ${NRF_SDK_DIR}/components/ble/ble_advertising/ble_advertising.c + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dis/ble_dis.c + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dfu/ble_dfu.c + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dfu/ble_dfu_unbonded.c + ${NRF_SDK_DIR}/components/ble/nrf_ble_gatt/nrf_ble_gatt.c +) + +set(PRINTF_SRC + ${NRF_SDK_DIR}/external/fprintf/nrf_fprintf.c + ${NRF_SDK_DIR}/external/fprintf/nrf_fprintf_format.c + ${NRF_SDK_DIR}/external/segger_rtt/SEGGER_RTT.c + ${NRF_SDK_DIR}/external/segger_rtt/SEGGER_RTT_printf.c +) + +set(NRFX_DRIVERS_SRC + ${NRF_SDK_DIR}/modules/nrfx/drivers/src/nrfx_clock.c + ${NRF_SDK_DIR}/modules/nrfx/drivers/src/nrfx_power.c + ${NRF_SDK_DIR}/modules/nrfx/drivers/src/nrfx_usbd.c + ${NRF_SDK_DIR}/modules/nrfx/soc/nrfx_atomic.c +) + +set(NRFX_LEGACY_SRC + ${NRF_SDK_DIR}/integration/nrfx/legacy/nrf_drv_clock.c + ${NRF_SDK_DIR}/integration/nrfx/legacy/nrf_drv_power.c +) + +set(EXPERIMENTAL_SRC + ${NRF_SDK_DIR}/components/libraries/experimental_section_vars/nrf_section_iter.c +) + +set(PWR_MGMT_SRC + ${NRF_SDK_DIR}/components/libraries/pwr_mgmt/nrf_pwr_mgmt.c +) + +add_library(sdk OBJECT + ${STARTUP_SRC} + ${LOGGING_SRC} + ${UTILS_SRC} + ${ATOMIC_SRC} + ${USBD_SRC} + ${SOFTDEVICE_SRC} + ${BLE_SRC} + ${PRINTF_SRC} + ${NRFX_DRIVERS_SRC} + ${NRFX_LEGACY_SRC} + ${EXPERIMENTAL_SRC} + ${PWR_MGMT_SRC} +) + +target_include_directories(sdk PUBLIC + ${NRF_SDK_DIR}/components/ble/ble_db_discovery + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dis + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dis_c + ${NRF_SDK_DIR}/components/ble/common/ + ${NRF_SDK_DIR}/components/ble/nrf_ble_gatt + ${NRF_SDK_DIR}/components/ble/nrf_ble_gq + ${NRF_SDK_DIR}/components/ble/nrf_ble_scan + ${NRF_SDK_DIR}/components/ble/ble_services/ble_dfu + ${NRF_SDK_DIR}/components/ble/ble_advertising + ${NRF_SDK_DIR}/components/ble/peer_manager + + ${NRF_SDK_DIR}/components/libraries/atomic + ${NRF_SDK_DIR}/components/libraries/atomic_flags + ${NRF_SDK_DIR}/components/libraries/balloc + ${NRF_SDK_DIR}/components/libraries/delay + ${NRF_SDK_DIR}/components/libraries/experimental_section_vars + ${NRF_SDK_DIR}/components/libraries/log + ${NRF_SDK_DIR}/components/libraries/log/src + ${NRF_SDK_DIR}/components/libraries/memobj + ${NRF_SDK_DIR}/components/libraries/queue + ${NRF_SDK_DIR}/components/libraries/ringbuf + ${NRF_SDK_DIR}/components/libraries/strerror + ${NRF_SDK_DIR}/components/libraries/util + ${NRF_SDK_DIR}/components/libraries/block_dev + ${NRF_SDK_DIR}/components/libraries/bootloader + ${NRF_SDK_DIR}/components/libraries/bootloader/ble_dfu + ${NRF_SDK_DIR}/components/libraries/bootloader/dfu + ${NRF_SDK_DIR}/components/libraries/pwr_mgmt + ${NRF_SDK_DIR}/components/libraries/usbd + ${NRF_SDK_DIR}/components/libraries/usbd/class/cdc + ${NRF_SDK_DIR}/components/libraries/usbd/class/cdc/acm + ${NRF_SDK_DIR}/components/libraries/usbd/class/nrf_dfu_trigger + ${NRF_SDK_DIR}/components/libraries/atomic_fifo + ${NRF_SDK_DIR}/components/libraries/svc + ${NRF_SDK_DIR}/components/libraries/mutex + + ${NRF_SDK_DIR}/components/softdevice/common + ${NRF_SDK_DIR}/components/softdevice/mbr/headers + ${NRF_SDK_DIR}/components/softdevice/s140/headers + + ${NRF_SDK_DIR}/components/toolchain/cmsis/include + ${NRF_SDK_DIR}/modules/nrfx + ${NRF_SDK_DIR}/modules/nrfx/hal + ${NRF_SDK_DIR}/modules/nrfx/mdk + ${NRF_SDK_DIR}/modules/nrfx/drivers/include + + ${NRF_SDK_DIR}/external/fprintf + ${NRF_SDK_DIR}/external/freertos/portable/CMSIS/nrf52 + ${NRF_SDK_DIR}/external/freertos/portable/GCC/nrf52 + ${NRF_SDK_DIR}/external/freertos/source/include + ${NRF_SDK_DIR}/external/segger_rtt + ${NRF_SDK_DIR}/external/utf_converter + + ${NRF_SDK_DIR}/integration/nrfx + ${NRF_SDK_DIR}/integration/nrfx/legacy +) + +target_link_libraries(sdk PRIVATE + prj_config +) diff --git a/nRF52811_XXAA_s140.lds b/linkscripts/nRF52811_XXAA_s140.lds similarity index 100% rename from nRF52811_XXAA_s140.lds rename to linkscripts/nRF52811_XXAA_s140.lds diff --git a/nRF52840_XXAA_S140_reserve.lds b/linkscripts/nRF52840_XXAA_S140_reserve.lds similarity index 100% rename from nRF52840_XXAA_S140_reserve.lds rename to linkscripts/nRF52840_XXAA_S140_reserve.lds diff --git a/linkscripts/nrf_full.ld b/linkscripts/nrf_full.ld new file mode 100644 index 0000000..910ee6c --- /dev/null +++ b/linkscripts/nrf_full.ld @@ -0,0 +1,128 @@ +SECTIONS +{ +} + +SECTIONS +{ + . = ALIGN(4); + .mem_section_dummy_ram : + { + } + .cli_sorted_cmd_ptrs : + { + PROVIDE(__start_cli_sorted_cmd_ptrs = .); + KEEP(*(.cli_sorted_cmd_ptrs)) + PROVIDE(__stop_cli_sorted_cmd_ptrs = .); + } > RAM + .fs_data : + { + PROVIDE(__start_fs_data = .); + KEEP(*(.fs_data)) + PROVIDE(__stop_fs_data = .); + } > RAM + .log_dynamic_data : + { + PROVIDE(__start_log_dynamic_data = .); + KEEP(*(SORT(.log_dynamic_data*))) + PROVIDE(__stop_log_dynamic_data = .); + } > RAM + .log_filter_data : + { + PROVIDE(__start_log_filter_data = .); + KEEP(*(SORT(.log_filter_data*))) + PROVIDE(__stop_log_filter_data = .); + } > RAM + +} INSERT AFTER .data; + +SECTIONS +{ + .mem_section_dummy_rom : + { + } + .sdh_soc_observers : + { + PROVIDE(__start_sdh_soc_observers = .); + KEEP(*(SORT(.sdh_soc_observers*))) + PROVIDE(__stop_sdh_soc_observers = .); + } > FLASH + .sdh_ble_observers : + { + PROVIDE(__start_sdh_ble_observers = .); + KEEP(*(SORT(.sdh_ble_observers*))) + PROVIDE(__stop_sdh_ble_observers = .); + } > FLASH + .pwr_mgmt_data : + { + PROVIDE(__start_pwr_mgmt_data = .); + KEEP(*(SORT(.pwr_mgmt_data*))) + PROVIDE(__stop_pwr_mgmt_data = .); + } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH + .sdh_state_observers : + { + PROVIDE(__start_sdh_state_observers = .); + KEEP(*(SORT(.sdh_state_observers*))) + PROVIDE(__stop_sdh_state_observers = .); + } > FLASH + .sdh_stack_observers : + { + PROVIDE(__start_sdh_stack_observers = .); + KEEP(*(SORT(.sdh_stack_observers*))) + PROVIDE(__stop_sdh_stack_observers = .); + } > FLASH + .nrf_queue : + { + PROVIDE(__start_nrf_queue = .); + KEEP(*(.nrf_queue)) + PROVIDE(__stop_nrf_queue = .); + } > FLASH + .nrf_balloc : + { + PROVIDE(__start_nrf_balloc = .); + KEEP(*(.nrf_balloc)) + PROVIDE(__stop_nrf_balloc = .); + } > FLASH + .cli_command : + { + PROVIDE(__start_cli_command = .); + KEEP(*(.cli_command)) + PROVIDE(__stop_cli_command = .); + } > FLASH + .crypto_data : + { + PROVIDE(__start_crypto_data = .); + KEEP(*(SORT(.crypto_data*))) + PROVIDE(__stop_crypto_data = .); + } > FLASH + .log_const_data : + { + PROVIDE(__start_log_const_data = .); + KEEP(*(SORT(.log_const_data*))) + PROVIDE(__stop_log_const_data = .); + } > FLASH + .log_backends : + { + PROVIDE(__start_log_backends = .); + KEEP(*(SORT(.log_backends*))) + PROVIDE(__stop_log_backends = .); + } > FLASH + +} INSERT AFTER .text + + +INCLUDE "nrf_common.ld" + +PROVIDE(_sbss = __bss_start__); +PROVIDE(_ebss = __bss_end__); +PROVIDE(_sdata = __data_start__); +PROVIDE(_sidata = __etext); +PROVIDE(_estack = __StackTop); +PROVIDE(_edata = __data_end__); +PROVIDE(__isr_vector = __StackTop); +PROVIDE(_etext = __etext);