Skip to content

Commit f4af9f7

Browse files
committed
app: Update NCS reference to v3.4
Replace Partition Manager with explicit DTS partition nodes in shared `att_flash_partitions.dtsi` and `att_sram_partitions.dtsi`, included by both board overlays and all sysbuild images. Add b0 (NSIB) as the first-stage bootloader in sysbuild, with per-board overlays and a new `sysbuild/b0/prj.conf`. Consolidate MCUboot config into a single `sysbuild/mcuboot/prj.conf` and drop the per-board conf files. Add `sysbuild.cmake` to produce `build/merged.hex` from all sysbuild images. Replace the `nrf91-modem-trace-uart` snippet with explicit overlays: `overlay-modem-trace-over-uart.conf` + `overlay-modem-trace-shmem.overlay` for UART tracing, and a new `overlay-upload-modem-traces-to-memfault.overlay` for the Memfault upload path (also used in debug builds). Switch cloud location and A-GNSS request/result types from `nrf_cloud_rest_*` to `nrf_cloud_coap_*`. Bump the CI container to `v0.29.2`, drop the `arm-zephyr-eabi-size` PATH workaround in favour of system `size`, and update the west manifest to NCS `pull/28834/head`. Signed-off-by: Simen S. Røstad <simen.rostad@nordicsemi.no>
1 parent f577a15 commit f4af9f7

41 files changed

Lines changed: 650 additions & 294 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actions/build-step/action.yml

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,14 @@ runs:
6262
echo CONFIG_MEMFAULT_NCS_FW_VERSION_STATIC=y >> overlay-debug-att.conf
6363
fi
6464
params+=("-DEXTRA_CONF_FILE=overlay-debug-att.conf")
65+
params+=("-DEXTRA_DTC_OVERLAY_FILE=overlay-upload-modem-traces-to-memfault.overlay")
6566
fi
6667
if [[ "${{ inputs.mqtt }}" == "true" ]]; then
6768
params+=("-DEXTRA_CONF_FILE=$(pwd)/../examples/modules/cloud/overlay-mqtt.conf")
6869
fi
6970
if [[ "${{ inputs.modem_trace }}" == "true" ]]; then
70-
params+=("-Dapp_SNIPPET=nrf91-modem-trace-uart")
71+
params+=("-DEXTRA_CONF_FILE=overlay-modem-trace-over-uart.conf")
72+
params+=("-DEXTRA_DTC_OVERLAY_FILE=overlay-modem-trace-shmem.overlay")
7173
fi
7274
if [[ "${{ inputs.external_gnss }}" == "true" ]]; then
7375
echo "CONFIG_MODEM_ANTENNA_GNSS_EXTERNAL=y" > overlay-external-gnss.conf
@@ -113,10 +115,3 @@ runs:
113115
artifacts/asset-tracker-template-${{ inputs.version }}-${{ inputs.short_board }}-nrf91.elf
114116
cp ${{ inputs.path }}/build/dfu_application.zip \
115117
artifacts/asset-tracker-template-${{ inputs.version }}-${{ inputs.short_board }}-nrf91-dfu.zip
116-
cd ${{ inputs.path }}/build
117-
ninja partition_manager_report > partition_manager_report.txt
118-
119-
- name: Generate Partition Manager Report
120-
shell: bash
121-
run: |
122-
sed '1d' ${{ inputs.path }}/build/partition_manager_report.txt > artifacts/pmr-${{ inputs.short_board }}-nrf91-default-${{ inputs.version }}.txt

.github/workflows/attach_release_assets.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ jobs:
3838
fail_on_unmatched_files: true
3939
files: |
4040
asset-tracker-template-*.*
41-
pmr-*-nrf91-*.txt
4241
4342
- name: Trigger workflow that publishes symbol files to Memfault
4443
working-directory: .github/workflows

.github/workflows/build.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ concurrency:
6262
jobs:
6363
build:
6464
runs-on: build_self_hosted
65-
container: ghcr.io/zephyrproject-rtos/ci:v0.28.7
65+
container: ghcr.io/zephyrproject-rtos/ci:v0.29.2
6666
env:
6767
CMAKE_PREFIX_PATH: /opt/toolchains
6868
outputs:
@@ -266,11 +266,6 @@ jobs:
266266
SIZE_COMMENT_PATH: ${{ github.workspace }}/size-comment.md
267267
CI_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
268268
run: |
269-
# Add the first Zephyr SDK binutils path to PATH if it exists
270-
SDK_BIN=$(ls -d /opt/toolchains/zephyr-sdk-*/arm-zephyr-eabi/bin 2>/dev/null | head -1)
271-
[ -n "$SDK_BIN" ] && export PATH="$SDK_BIN:$PATH"
272-
273-
# Generate the diff comment
274269
bash asset-tracker-template/scripts/ci/pr-size-diff.sh
275270
276271
- name: Post PR app-size sticky comment for thingy91x image

.github/workflows/sonarcloud.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
build:
2323
name: Build and analyze
2424
runs-on: build_self_hosted
25-
container: ghcr.io/zephyrproject-rtos/ci:v0.28.7
25+
container: ghcr.io/zephyrproject-rtos/ci:v0.29.2
2626
env:
2727
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
2828
CMAKE_PREFIX_PATH: /opt/toolchains

app/Kconfig.sysbuild

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,20 @@ endchoice
1111
config SECURE_BOOT_APPCORE
1212
default y if BOARD_NRF9151DK_NRF9151_NS
1313

14+
# Shared NSIB (b0) signing key for all ATT sysbuild targets. Sysbuild signs images with this
15+
# key; b0 verifies them. Without this, sysbuild autogenerates a new debug key on each pristine
16+
# build. Not for production.
17+
config SECURE_BOOT_SIGNING_KEY_FILE
18+
default "$(ZEPHYR_NRF_MODULE_DIR)/boards/nordic/thingy91x/nsib_signing_key.pem"
19+
1420
config WIFI_NRF70
1521
default y if BOARD_THINGY91X_NRF9151_NS
1622

1723
choice WIFI_NRF70_OPER_MODES
1824
default WIFI_NRF70_SCAN_ONLY if BOARD_THINGY91X_NRF9151_NS
1925
endchoice
2026

21-
config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY
22-
default y if BOARD_NRF9151DK_NRF9151_NS
27+
config PARTITION_MANAGER
28+
default n
2329

2430
source "${ZEPHYR_BASE}/share/sysbuild/Kconfig"

app/boards/nrf9151dk_nrf9151_ns.conf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ CONFIG_SPI=y
99
CONFIG_SPI_NOR=y
1010
CONFIG_SPI_NOR_SFDP_DEVICETREE=y
1111
CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096
12-
CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y
1312

1413
# Location priority order
1514
CONFIG_LOCATION_REQUEST_DEFAULT_METHOD_FIRST_GNSS=y

app/boards/nrf9151dk_nrf9151_ns.overlay

Lines changed: 5 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,46 +4,14 @@
44
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
55
*/
66

7+
#include "../dts/nrf9151dk_prelude.dtsi"
8+
/* Flash partitions (littlefs_storage, MCUboot slots, etc.): app/dts/att_flash_partitions.dtsi */
9+
#include "../dts/att_flash_partitions.dtsi"
10+
#include "../dts/att_sram_partitions.dtsi"
11+
712
/ {
8-
/* Configure partition manager to use gd25wb256 as the external flash */
913
chosen {
1014
nordic,modem-trace-uart = &uart1;
11-
nordic,pm-ext-flash = &gd25wb256;
12-
};
13-
14-
aliases {
15-
ext-flash = &gd25wb256;
16-
};
17-
18-
fstab {
19-
compatible = "zephyr,fstab";
20-
lfs1: lfs1 {
21-
compatible = "zephyr,fstab,littlefs";
22-
mount-point = "/att_storage";
23-
partition = <&littlefs_storage>;
24-
automount;
25-
read-size = <16>;
26-
prog-size = <16>;
27-
cache-size = <64>;
28-
lookahead-size = <32>;
29-
block-cycles = <512>;
30-
};
31-
};
32-
};
33-
34-
&gd25wb256 {
35-
status = "okay";
36-
37-
/* Partitions will be overridden by PM but needed for DTS parsing */
38-
partitions {
39-
compatible = "fixed-partitions";
40-
#address-cells = <1>;
41-
#size-cells = <1>;
42-
43-
littlefs_storage: partition@0 {
44-
label = "littlefs_storage";
45-
reg = <0x00000000 0x00100000>;
46-
};
4715
};
4816
};
4917

app/boards/thingy91x_nrf9151_ns.conf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
55
#
66

7+
# External flash (MCUboot secondary on GD25)
8+
CONFIG_SPI=y
9+
CONFIG_SPI_NOR=y
10+
CONFIG_SPI_NOR_SFDP_DEVICETREE=y
11+
CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096
12+
713
# Environmental module
814
CONFIG_APP_ENVIRONMENTAL=y
915

app/boards/thingy91x_nrf9151_ns.overlay

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
*/
66

77
#include <thingy91x_wifi.dtsi>
8+
#include "../dts/thingy91x_prelude.dtsi"
9+
/* Flash partitions (littlefs_storage, MCUboot slots, etc.): app/dts/att_flash_partitions.dtsi */
10+
#include "../dts/att_flash_partitions.dtsi"
11+
#include "../dts/att_sram_partitions.dtsi"
812

913
&bme680 {
1014
status = "okay";
@@ -26,35 +30,3 @@
2630
&nrf70 {
2731
compatible = "nordic,nrf7000-spi";
2832
};
29-
30-
31-
/ {
32-
fstab {
33-
compatible = "zephyr,fstab";
34-
lfs1: lfs1 {
35-
compatible = "zephyr,fstab,littlefs";
36-
mount-point = "/att_storage";
37-
partition = <&littlefs_storage>; /* Reference PM partition */
38-
automount;
39-
read-size = <16>;
40-
prog-size = <16>;
41-
cache-size = <64>;
42-
lookahead-size = <32>;
43-
block-cycles = <512>;
44-
};
45-
};
46-
};
47-
48-
&flash_ext {
49-
/* Partitions will be overridden by PM but needed for DTS parsing */
50-
partitions {
51-
compatible = "fixed-partitions";
52-
#address-cells = <1>;
53-
#size-cells = <1>;
54-
55-
littlefs_storage: partition@0 {
56-
label = "littlefs_storage";
57-
reg = <0x00000000 0x00100000>;
58-
};
59-
};
60-
};

app/dts/att_flash_partitions.dtsi

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
/*
2+
* Copyright (c) 2026 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*
6+
* Flash layout (flash0, 1 MiB internal):
7+
* 0x00000000 b0_partition ( 32 KiB) immutable bootloader
8+
* 0x00008000 s0_partition ( 80 KiB) primary MCUboot
9+
* 0x0001c000 s1_partition ( 80 KiB) secondary MCUboot
10+
* 0x00030000 slot0_partition (image-0) (800 KiB)
11+
* 0x00000000 slot0_s_partition ( 32 KiB)
12+
* 0x00008000 slot0_ns_partition (768 KiB)
13+
* 0x000f8000 memfault_coredump_partition ( 32 KiB)
14+
*
15+
* Flash layout (flash_ext, 32 MiB external):
16+
* 0x00000000 slot1_partition (image-1) (800 KiB) matches slot0 for MCUboot swap-move
17+
* 0x00000000 slot1_s_partition ( 32 KiB)
18+
* 0x00008000 slot1_ns_partition (768 KiB)
19+
* 0x000d0000 fmfu_storage_partition ( 4 MiB)
20+
* 0x004d0000 settings_storage ( 8 KiB)
21+
* 0x004d2000 littlefs_storage ( 1 MiB)
22+
* 0x005d2000 external_flash_partition (~26.2 MiB) free space
23+
*/
24+
25+
/delete-node/ &slot0_partition;
26+
/delete-node/ &slot1_partition;
27+
/delete-node/ &storage_partition;
28+
29+
/ {
30+
chosen {
31+
zephyr,settings-partition = &settings_storage;
32+
fmfu_storage = &fmfu_storage_partition;
33+
};
34+
35+
fstab {
36+
compatible = "zephyr,fstab";
37+
lfs1: lfs1 {
38+
compatible = "zephyr,fstab,littlefs";
39+
mount-point = "/att_storage";
40+
partition = <&littlefs_storage>;
41+
automount;
42+
read-size = <16>;
43+
prog-size = <16>;
44+
cache-size = <64>;
45+
lookahead-size = <32>;
46+
block-cycles = <512>;
47+
};
48+
};
49+
};
50+
51+
&flash0 {
52+
partitions {
53+
slot0_partition: partition@30000 {
54+
compatible = "fixed-subpartitions";
55+
label = "image-0";
56+
reg = <0x00030000 0xc8000>;
57+
ranges = <0x0 0x00030000 0xc8000>;
58+
#address-cells = <1>;
59+
#size-cells = <1>;
60+
61+
slot0_s_partition: partition@0 {
62+
label = "image-0-secure";
63+
reg = <0x00000000 0x8000>;
64+
};
65+
66+
slot0_ns_partition: partition@8000 {
67+
label = "image-0-nonsecure";
68+
reg = <0x00008000 0xc0000>;
69+
};
70+
};
71+
72+
storage_partition: memfault_coredump_partition: partition@f8000 {
73+
label = "memfault_coredump_partition";
74+
reg = <0x000f8000 0x00008000>;
75+
};
76+
};
77+
};
78+
79+
&flash_ext {
80+
status = "okay";
81+
82+
partitions {
83+
compatible = "fixed-partitions";
84+
#address-cells = <1>;
85+
#size-cells = <1>;
86+
87+
slot1_partition: partition@0 {
88+
compatible = "fixed-subpartitions";
89+
label = "image-1";
90+
reg = <0x00000000 0xc8000>;
91+
ranges = <0x0 0x00000 0xc8000>;
92+
#address-cells = <1>;
93+
#size-cells = <1>;
94+
95+
slot1_s_partition: partition@0 {
96+
label = "image-1-secure";
97+
reg = <0x00000000 0x8000>;
98+
};
99+
100+
slot1_ns_partition: partition@8000 {
101+
label = "image-1-nonsecure";
102+
reg = <0x00008000 0xc0000>;
103+
};
104+
};
105+
106+
fmfu_storage_partition: partition@d0000 {
107+
label = "fmfu_storage";
108+
reg = <0x000d0000 0x00400000>;
109+
};
110+
111+
settings_storage: partition@4d0000 {
112+
label = "settings_storage";
113+
reg = <0x004d0000 0x00002000>;
114+
};
115+
116+
littlefs_storage: partition@4d2000 {
117+
label = "littlefs_storage";
118+
reg = <0x004d2000 0x00100000>;
119+
};
120+
121+
external_flash_partition: partition@5d2000 {
122+
label = "external_flash";
123+
reg = <0x005d2000 0x01a2e000>;
124+
};
125+
};
126+
};

0 commit comments

Comments
 (0)