From c71964cda3b642fe42a4ff781f44b4bd28a74006 Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Mon, 8 Jul 2024 13:46:13 +0800 Subject: [PATCH] Cleanup NRF s140 Softdevice variants Note: This idea is originally from @caveman99 and should be credited as such. Submitting as a separate PR so the work in meshtastic/firmware#4148 can be a bit cleaner and Seeed boards can build while that work is ongoing. The nrf52 boards that depend on the v7 softdevice all use the same code and linker files. Rather than duplicate the code, keep it all together with the platform. --- boards/wio-tracker-wm1110.json | 2 +- .../platform/nrf52}/nrf52840_s140_v7.ld | 0 .../platform/nrf52}/softdevice/ble.h | 0 .../platform/nrf52}/softdevice/ble_err.h | 0 .../platform/nrf52}/softdevice/ble_gap.h | 0 .../platform/nrf52}/softdevice/ble_gatt.h | 0 .../platform/nrf52}/softdevice/ble_gattc.h | 0 .../platform/nrf52}/softdevice/ble_gatts.h | 0 .../platform/nrf52}/softdevice/ble_hci.h | 0 .../platform/nrf52}/softdevice/ble_l2cap.h | 0 .../platform/nrf52}/softdevice/ble_ranges.h | 0 .../platform/nrf52}/softdevice/ble_types.h | 0 .../nrf52}/softdevice/nrf52/nrf_mbr.h | 0 .../platform/nrf52}/softdevice/nrf_error.h | 0 .../nrf52}/softdevice/nrf_error_sdm.h | 0 .../nrf52}/softdevice/nrf_error_soc.h | 0 .../platform/nrf52}/softdevice/nrf_nvic.h | 0 .../platform/nrf52}/softdevice/nrf_sdm.h | 2 +- .../platform/nrf52}/softdevice/nrf_soc.h | 0 .../platform/nrf52}/softdevice/nrf_svc.h | 0 variants/wio-sdk-wm1110/platformio.ini | 6 +-- .../wio-tracker-wm1110/nrf52840_s140_v7.ld | 38 ------------------- variants/wio-tracker-wm1110/platformio.ini | 6 +-- variants/xiao_ble/nrf52840_s140_v7.ld | 38 ------------------- variants/xiao_ble/platformio.ini | 4 +- 25 files changed, 10 insertions(+), 86 deletions(-) rename {variants/wio-sdk-wm1110 => src/platform/nrf52}/nrf52840_s140_v7.ld (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/ble.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/ble_err.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/ble_gap.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/ble_gatt.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/ble_gattc.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/ble_gatts.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/ble_hci.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/ble_l2cap.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/ble_ranges.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/ble_types.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/nrf52/nrf_mbr.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/nrf_error.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/nrf_error_sdm.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/nrf_error_soc.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/nrf_nvic.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/nrf_sdm.h (99%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/nrf_soc.h (100%) rename {variants/xiao_ble => src/platform/nrf52}/softdevice/nrf_svc.h (100%) delete mode 100644 variants/wio-tracker-wm1110/nrf52840_s140_v7.ld delete mode 100644 variants/xiao_ble/nrf52840_s140_v7.ld diff --git a/boards/wio-tracker-wm1110.json b/boards/wio-tracker-wm1110.json index 04db525188..37a9186abb 100644 --- a/boards/wio-tracker-wm1110.json +++ b/boards/wio-tracker-wm1110.json @@ -53,6 +53,6 @@ "require_upload_port": true, "wait_for_upload_port": true }, - "url": "https://www.seeedstudio.com/Wio-WM1110-Dev-Kit-p-5677.html", + "url": "https://www.seeedstudio.com/Wio-Tracker-1110-Dev-Board-p-5799.html", "vendor": "Seeed Studio" } diff --git a/variants/wio-sdk-wm1110/nrf52840_s140_v7.ld b/src/platform/nrf52/nrf52840_s140_v7.ld similarity index 100% rename from variants/wio-sdk-wm1110/nrf52840_s140_v7.ld rename to src/platform/nrf52/nrf52840_s140_v7.ld diff --git a/variants/xiao_ble/softdevice/ble.h b/src/platform/nrf52/softdevice/ble.h similarity index 100% rename from variants/xiao_ble/softdevice/ble.h rename to src/platform/nrf52/softdevice/ble.h diff --git a/variants/xiao_ble/softdevice/ble_err.h b/src/platform/nrf52/softdevice/ble_err.h similarity index 100% rename from variants/xiao_ble/softdevice/ble_err.h rename to src/platform/nrf52/softdevice/ble_err.h diff --git a/variants/xiao_ble/softdevice/ble_gap.h b/src/platform/nrf52/softdevice/ble_gap.h similarity index 100% rename from variants/xiao_ble/softdevice/ble_gap.h rename to src/platform/nrf52/softdevice/ble_gap.h diff --git a/variants/xiao_ble/softdevice/ble_gatt.h b/src/platform/nrf52/softdevice/ble_gatt.h similarity index 100% rename from variants/xiao_ble/softdevice/ble_gatt.h rename to src/platform/nrf52/softdevice/ble_gatt.h diff --git a/variants/xiao_ble/softdevice/ble_gattc.h b/src/platform/nrf52/softdevice/ble_gattc.h similarity index 100% rename from variants/xiao_ble/softdevice/ble_gattc.h rename to src/platform/nrf52/softdevice/ble_gattc.h diff --git a/variants/xiao_ble/softdevice/ble_gatts.h b/src/platform/nrf52/softdevice/ble_gatts.h similarity index 100% rename from variants/xiao_ble/softdevice/ble_gatts.h rename to src/platform/nrf52/softdevice/ble_gatts.h diff --git a/variants/xiao_ble/softdevice/ble_hci.h b/src/platform/nrf52/softdevice/ble_hci.h similarity index 100% rename from variants/xiao_ble/softdevice/ble_hci.h rename to src/platform/nrf52/softdevice/ble_hci.h diff --git a/variants/xiao_ble/softdevice/ble_l2cap.h b/src/platform/nrf52/softdevice/ble_l2cap.h similarity index 100% rename from variants/xiao_ble/softdevice/ble_l2cap.h rename to src/platform/nrf52/softdevice/ble_l2cap.h diff --git a/variants/xiao_ble/softdevice/ble_ranges.h b/src/platform/nrf52/softdevice/ble_ranges.h similarity index 100% rename from variants/xiao_ble/softdevice/ble_ranges.h rename to src/platform/nrf52/softdevice/ble_ranges.h diff --git a/variants/xiao_ble/softdevice/ble_types.h b/src/platform/nrf52/softdevice/ble_types.h similarity index 100% rename from variants/xiao_ble/softdevice/ble_types.h rename to src/platform/nrf52/softdevice/ble_types.h diff --git a/variants/xiao_ble/softdevice/nrf52/nrf_mbr.h b/src/platform/nrf52/softdevice/nrf52/nrf_mbr.h similarity index 100% rename from variants/xiao_ble/softdevice/nrf52/nrf_mbr.h rename to src/platform/nrf52/softdevice/nrf52/nrf_mbr.h diff --git a/variants/xiao_ble/softdevice/nrf_error.h b/src/platform/nrf52/softdevice/nrf_error.h similarity index 100% rename from variants/xiao_ble/softdevice/nrf_error.h rename to src/platform/nrf52/softdevice/nrf_error.h diff --git a/variants/xiao_ble/softdevice/nrf_error_sdm.h b/src/platform/nrf52/softdevice/nrf_error_sdm.h similarity index 100% rename from variants/xiao_ble/softdevice/nrf_error_sdm.h rename to src/platform/nrf52/softdevice/nrf_error_sdm.h diff --git a/variants/xiao_ble/softdevice/nrf_error_soc.h b/src/platform/nrf52/softdevice/nrf_error_soc.h similarity index 100% rename from variants/xiao_ble/softdevice/nrf_error_soc.h rename to src/platform/nrf52/softdevice/nrf_error_soc.h diff --git a/variants/xiao_ble/softdevice/nrf_nvic.h b/src/platform/nrf52/softdevice/nrf_nvic.h similarity index 100% rename from variants/xiao_ble/softdevice/nrf_nvic.h rename to src/platform/nrf52/softdevice/nrf_nvic.h diff --git a/variants/xiao_ble/softdevice/nrf_sdm.h b/src/platform/nrf52/softdevice/nrf_sdm.h similarity index 99% rename from variants/xiao_ble/softdevice/nrf_sdm.h rename to src/platform/nrf52/softdevice/nrf_sdm.h index 2786a86a45..33b6cc3421 100644 --- a/variants/xiao_ble/softdevice/nrf_sdm.h +++ b/src/platform/nrf52/softdevice/nrf_sdm.h @@ -141,7 +141,7 @@ the start of the SoftDevice (without MBR)*/ * Add @ref MBR_SIZE to find the first available flash address when the SoftDevice is installed * just above the MBR (the usual case). */ -#define SD_FLASH_SIZE 0x26000 +#define SD_FLASH_SIZE 0x27000 /** @brief Defines a macro for retrieving the actual FWID value from a given base address. Use * @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the usual diff --git a/variants/xiao_ble/softdevice/nrf_soc.h b/src/platform/nrf52/softdevice/nrf_soc.h similarity index 100% rename from variants/xiao_ble/softdevice/nrf_soc.h rename to src/platform/nrf52/softdevice/nrf_soc.h diff --git a/variants/xiao_ble/softdevice/nrf_svc.h b/src/platform/nrf52/softdevice/nrf_svc.h similarity index 100% rename from variants/xiao_ble/softdevice/nrf_svc.h rename to src/platform/nrf52/softdevice/nrf_svc.h diff --git a/variants/wio-sdk-wm1110/platformio.ini b/variants/wio-sdk-wm1110/platformio.ini index 619f86e1e2..aa10f525d3 100644 --- a/variants/wio-sdk-wm1110/platformio.ini +++ b/variants/wio-sdk-wm1110/platformio.ini @@ -1,4 +1,4 @@ -; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921 +; The black Wio-WM1110 Dev Kit with sensors and the WM1110 module [env:wio-sdk-wm1110] extends = nrf52840_base board = wio-sdk-wm1110 @@ -8,10 +8,10 @@ build_unflags = ${nrf52840_base:build_unflags} -DUSBCON -DUSE_TINYUSB board_level = extra ; platform = https://github.com/maxgerhardt/platform-nordicnrf52#cac6fcf943a41accd2aeb4f3659ae297a73f422e -build_flags = ${nrf52840_base.build_flags} -Ivariants/wio-sdk-wm1110 -DWIO_WM1110 +build_flags = ${nrf52840_base.build_flags} -Ivariants/wio-sdk-wm1110 -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -DWIO_WM1110 -L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m4/fpv4-sp-d16-hard" -DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely. -board_build.ldscript = variants/wio-sdk-wm1110/nrf52840_s140_v7.ld +board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld build_src_filter = ${nrf52_base.build_src_filter} +<../variants/wio-sdk-wm1110> lib_deps = ${nrf52840_base.lib_deps} diff --git a/variants/wio-tracker-wm1110/nrf52840_s140_v7.ld b/variants/wio-tracker-wm1110/nrf52840_s140_v7.ld deleted file mode 100644 index 6aaeb4034f..0000000000 --- a/variants/wio-tracker-wm1110/nrf52840_s140_v7.ld +++ /dev/null @@ -1,38 +0,0 @@ -/* Linker script to configure memory regions. */ - -SEARCH_DIR(.) -GROUP(-lgcc -lc -lnosys) - -MEMORY -{ - FLASH (rx) : ORIGIN = 0x27000, LENGTH = 0xED000 - 0x27000 - - /* SRAM required by Softdevice depend on - * - Attribute Table Size (Number of Services and Characteristics) - * - Vendor UUID count - * - Max ATT MTU - * - Concurrent connection peripheral + central + secure links - * - Event Len, HVN queue, Write CMD queue - */ - RAM (rwx) : ORIGIN = 0x20006000, LENGTH = 0x20040000 - 0x20006000 -} - -SECTIONS -{ - . = ALIGN(4); - .svc_data : - { - PROVIDE(__start_svc_data = .); - KEEP(*(.svc_data)) - PROVIDE(__stop_svc_data = .); - } > RAM - - .fs_data : - { - PROVIDE(__start_fs_data = .); - KEEP(*(.fs_data)) - PROVIDE(__stop_fs_data = .); - } > RAM -} INSERT AFTER .data; - -INCLUDE "nrf52_common.ld" diff --git a/variants/wio-tracker-wm1110/platformio.ini b/variants/wio-tracker-wm1110/platformio.ini index e8c6811866..5ecc414adc 100644 --- a/variants/wio-tracker-wm1110/platformio.ini +++ b/variants/wio-tracker-wm1110/platformio.ini @@ -1,12 +1,12 @@ -; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921 +; The red tracker Dev Board with the WM1110 module [env:wio-tracker-wm1110] extends = nrf52840_base board = wio-tracker-wm1110 ; platform = https://github.com/maxgerhardt/platform-nordicnrf52#cac6fcf943a41accd2aeb4f3659ae297a73f422e -build_flags = ${nrf52840_base.build_flags} -Ivariants/wio-tracker-wm1110 -DWIO_WM1110 +build_flags = ${nrf52840_base.build_flags} -Ivariants/wio-tracker-wm1110 -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -DWIO_WM1110 -L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m4/fpv4-sp-d16-hard" -DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely. -board_build.ldscript = variants/wio-tracker-wm1110/nrf52840_s140_v7.ld +board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld build_src_filter = ${nrf52_base.build_src_filter} +<../variants/wio-tracker-wm1110> lib_deps = ${nrf52840_base.lib_deps} diff --git a/variants/xiao_ble/nrf52840_s140_v7.ld b/variants/xiao_ble/nrf52840_s140_v7.ld deleted file mode 100644 index 6aaeb4034f..0000000000 --- a/variants/xiao_ble/nrf52840_s140_v7.ld +++ /dev/null @@ -1,38 +0,0 @@ -/* Linker script to configure memory regions. */ - -SEARCH_DIR(.) -GROUP(-lgcc -lc -lnosys) - -MEMORY -{ - FLASH (rx) : ORIGIN = 0x27000, LENGTH = 0xED000 - 0x27000 - - /* SRAM required by Softdevice depend on - * - Attribute Table Size (Number of Services and Characteristics) - * - Vendor UUID count - * - Max ATT MTU - * - Concurrent connection peripheral + central + secure links - * - Event Len, HVN queue, Write CMD queue - */ - RAM (rwx) : ORIGIN = 0x20006000, LENGTH = 0x20040000 - 0x20006000 -} - -SECTIONS -{ - . = ALIGN(4); - .svc_data : - { - PROVIDE(__start_svc_data = .); - KEEP(*(.svc_data)) - PROVIDE(__stop_svc_data = .); - } > RAM - - .fs_data : - { - PROVIDE(__start_fs_data = .); - KEEP(*(.fs_data)) - PROVIDE(__stop_fs_data = .); - } > RAM -} INSERT AFTER .data; - -INCLUDE "nrf52_common.ld" diff --git a/variants/xiao_ble/platformio.ini b/variants/xiao_ble/platformio.ini index 76e91e8444..6c47780d5f 100644 --- a/variants/xiao_ble/platformio.ini +++ b/variants/xiao_ble/platformio.ini @@ -3,9 +3,9 @@ extends = nrf52840_base board = xiao_ble_sense board_level = extra -build_flags = ${nrf52840_base.build_flags} -Ivariants/xiao_ble -Ivariants/xiao_ble/softdevice -Ivariants/xiao_ble/softdevice/nrf52 -DEBYTE_E22 -DEBYTE_E22_900M30S -DPRIVATE_HW +build_flags = ${nrf52840_base.build_flags} -Ivariants/xiao_ble -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -D EBYTE_E22 -DEBYTE_E22_900M30S -DPRIVATE_HW -L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m4/fpv4-sp-d16-hard" -board_build.ldscript = variants/xiao_ble/nrf52840_s140_v7.ld +board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld build_src_filter = ${nrf52_base.build_src_filter} +<../variants/xiao_ble> lib_deps = ${nrf52840_base.lib_deps}