Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
407f307
lib: bin: lwm2m_carrier: fix DT macros
lucasvdp May 11, 2026
09d543b
dts: common: nordic: Update nRF91 SRAM partitions
lucasvdp May 12, 2026
e7a161c
boards: nordic: thingy91x: fix typo in external flash partition
lucasvdp May 19, 2026
ad466e6
dts: samples: cellular: Add commonly used partition tables
lucasvdp May 13, 2026
758fffc
samples: cellular: lwm2m_carrier: Disable Partition Manager
lucasvdp May 8, 2026
45d30ac
treewide: port PGPS partition to DTS
maxd-nordic May 13, 2026
b2354af
samples: cellular: at_cliect: Update DT to use common partitions
lucasvdp May 19, 2026
8c87fec
dfu: Full modem firmware upgrade with DTS
MarkusLassila May 8, 2026
0ab5115
samples: cellular: gnss: Disable Partition Manager
lucasvdp May 19, 2026
6299a74
samples: cellular: location: Disable Partition Manager
lucasvdp May 19, 2026
b8d466b
samples: cellular: modem_shell: Disable Partition Manager
lucasvdp May 19, 2026
53d3b69
snippets: nrf91-modem-trace: add trace partition using devicetree
lucasvdp May 19, 2026
ad39d30
samples: cellular: at_monitor: Disable Partition Manager
lucasvdp May 20, 2026
c704915
samples: cellular: battery: Disable Partition Manager
lucasvdp May 20, 2026
6853022
samples: cellular: fmfu_smp_svr: Disable Partition Manager
lucasvdp May 20, 2026
033fc7d
samples: cellular: http_update: Disable Partition Manager
lucasvdp May 21, 2026
b135d3d
samples: cellular: lwm2m_client: Disable Partition Manager
lucasvdp May 21, 2026
e7679c8
samples: cellular: modem_callbacks: Disable Partition Manager
lucasvdp May 22, 2026
5e89b59
samples: cellular: modem_trace_backend: Disable Partition Manager
lucasvdp May 22, 2026
fc2f8bf
samples: cellular: modem_trace_flash: Disable Partition Manager
lucasvdp May 22, 2026
61e3cb7
samples: cellular: nidd: Disable Partition Manager
lucasvdp May 22, 2026
cdc538e
samples: cellular: nrf_cloud_coap_cell_location: Disable PM
lucasvdp May 22, 2026
709ad31
samples: cellular: nrf_cloud_coap_device_message: Disable PM
lucasvdp May 22, 2026
39b2a6c
samples: cellular: nrf_cloud_mqtt_cell_location: Disable PM
lucasvdp May 22, 2026
1c73a6f
samples: cellular: nrf_cloud_mqtt_device_message: Disable PM
lucasvdp May 22, 2026
22d7081
samples: cellular: nrf_cloud_mqtt_fota: Disable Partition Manager
lucasvdp May 22, 2026
249c96d
samples: cellular: nrf_device_provisioning: Disable Partition Manager
lucasvdp May 22, 2026
347b0ee
samples: cellular: pdn: Disable Partition Manager
lucasvdp May 22, 2026
4811a25
samples: cellular: smp_svr: Disable Partition Manager
lucasvdp May 22, 2026
ad4b375
samples: cellular: sms: Disable Partition Manager
lucasvdp May 22, 2026
cf5e0d2
samples: cellular: tls_ciphersuites: Disable Partition Manager
lucasvdp May 22, 2026
e9160a5
samples: cellular: udp: Disable Partition Manager
lucasvdp May 22, 2026
03f89f0
samples: cellular: uicc_lwm2m: Disable Partition Manager
lucasvdp May 22, 2026
0c13ced
net: lib: lwm2m_client_utils: Allow building without Partition Manager
lucasvdp May 23, 2026
f8fca2a
samples: cellular: nrf_cloud_coap_fota: Disable Partition Manager
lucasvdp May 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions boards/nordic/thingy91x/thingy91x_nrf9151_partition.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
* 0x0003_0000 Primary secure image ( 32 kB)
* 0x0003_8000 Primary non-secure image (800 kB)
*/

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
Expand Down Expand Up @@ -63,7 +62,6 @@
* 0x004d_0000 Settings ( 8 kB)
* 0x004d_2000 Free (27832 kB)
*/

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
Expand Down Expand Up @@ -98,7 +96,7 @@
reg = <0x004d0000 0x2000>;
};

external_flash_partition: partition@4d20000 {
external_flash_partition: partition@4d2000 {
label = "external_flash";
reg = <0x0004d2000 0x1b2e000>;
};
Expand Down
33 changes: 31 additions & 2 deletions doc/nrf/libraries/dfu/dfu_target.rst
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,37 @@ The MCUboot target will then use the :ref:`zephyr:settings_api` subsystem in Zep
Using a dedicated partition for full modem upgrades
===================================================

External flash partitions require the chosen node ``nordic,pm-ext-flash`` to be set to the external flash device in devicetree, see :ref:`partition_manager` for details.
When ``nordic,pm-ext-flash`` is set, the :ref:`partition_manager` will add the partition ``fmfu_storage`` to the external flash region.
Configure a dedicated storage partition for full modem firmware updates:

* If you enable Partition Manager (:kconfig:option:`CONFIG_PARTITION_MANAGER_ENABLED`):

Set the chosen node ``nordic,pm-ext-flash`` to the external flash device in devicetree.
The Partition Manager automatically creates the ``fmfu_storage`` partition in the external flash region.
See :ref:`partition_manager` for details.

* If you do not enable Partition Manager (DTS-based partitioning):

Define a fixed partition in devicetree and set the ``nordic,fmfu_storage_partition`` chosen property to point to the defined partition:

.. code-block:: devicetree

/ {
chosen {
nordic,fmfu_storage_partition = &fmfu_storage_partition;
};
};

&your_external_flash {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

fmfu_storage_partition: partition@0 {
reg = <0x0 0x400000>;
};
};
};


API documentation
Expand Down
33 changes: 16 additions & 17 deletions dts/common/nordic/nrf91_partition_sram.dtsi
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need this file and the one in samples/cellular?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a small difference, in dts\samples/cellular/nrf91_ram_partition.dtsi we remove the old partitions first set by Zephyr. We could # include <dts/common/nordic/nrf91_partition_sram.dtsi> inside dts\samples/cellular/nrf91_ram_partition.dtsi after removing the old ram partitions?

Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@

&sram0 {
/*
* 0x2000_0000 Secure RAM ( 32 kB)
* 0x2000_8000 Non-secure RAM area ( 224 kB)
* 0x2000_8000 Modem shared area ( 18 kB)
* 0x2000_8000 control (1832 B)
* 0x2000_8728 app -> cell (8408 B)
* 0x2000_a800 cell -> app ( 8 kB)
* 0x2000_c800 Application RAM ( 206 kB)
* 0x2000_0000 Secure RAM ( 32 kB)
* 0x2000_8000 Non-secure RAM area ( 224 kB)
* 0x2000_8000 Modem shared area ( 17768 B)
* 0x2000_8000 control ( 1256 B)
* 0x2000_84e8 app -> cell ( 8320 B)
* 0x2000_a568 cell -> app ( 8 kB)
* 0x2000_c568 Application RAM (211608 B)
*/

sram0_s: sram@0 {
reg = <0x0 0x8000>;
};
Expand All @@ -28,30 +27,30 @@
/* Must be in first 128 kB of RAM. */
sram0_ns_modem: sram0_ns@0 {
/* Modem (shared) memory */
reg = <0x0 0x4800>;
reg = <0x0 0x4568>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x0 0x4800>;
ranges = <0x0 0x0 0x4568>;

cpuapp_cpucell_ipc_shm_ctrl: sram0_ns_modem@0 {
/* Modem IPC control */
reg = <0x0 0x728>;
reg = <0x0 0x4e8>;
};

cpuapp_cpucell_ipc_shm_heap: sram0_ns_modem@728 {
cpuapp_cpucell_ipc_shm_heap: sram0_ns_modem@4e8 {
/* Modem IPC transmit */
reg = <0x728 0x20d8>;
reg = <0x4e8 0x2080>;
};

cpucell_cpuapp_ipc_shm_heap: sram0_ns_modem@2800 {
cpucell_cpuapp_ipc_shm_heap: sram0_ns_modem@2568 {
/* Modem IPC receive */
reg = <0x2800 0x2000>;
reg = <0x2568 0x2000>;
};
};

sram0_ns_app: sram0_ns@4800 {
sram0_ns_app: sram0_ns@4568 {
/* Non-Secure application memory */
reg = <0x4800 0x33800>;
reg = <0x4568 0x33a98>;
};
};
};
85 changes: 85 additions & 0 deletions dts/samples/cellular/nrf91_bootloader_partitions.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
/*
* Copyright (c) 2026 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

/delete-node/ &boot_partition;
/delete-node/ &slot0_partition;
/delete-node/ &slot1_partition;
/delete-node/ &tfm_ps_partition;
/delete-node/ &tfm_its_partition;
/delete-node/ &tfm_otp_partition;
/delete-node/ &storage_partition;

&flash0 {
/*
* 0x0000_0000 MCUboot ( 64 kB)
* 0x0001_0000 Primary area (448 kB)
* 0x0001_0000 Primary secure image ( 32 kB)
* 0x0001_8000 Primary non-secure image (416 kB)
* 0x0008_0000 Secondary area (448 kB)
* 0x0008_0000 Secondary secure image ( 32 kB)
* 0x0008_8000 Secondary non-secure image (416 kB)
* 0x000f_0000 Settings storage ( 64 kB)
*/
partitions {
#address-cells = <1>;
#size-cells = <1>;
ranges;

boot_partition: partition@0 {
compatible = "zephyr,mapped-partition";
label = "mcuboot";
reg = <0x00000000 0x10000>;
};

slot0_partition: partition@10000 {
compatible = "zephyr,mapped-partition";
label = "image-0";
reg = <0x00010000 0x70000>;
ranges = <0x0 0x00010000 0x70000>;
#address-cells = <1>;
#size-cells = <1>;

slot0_s_partition: partition@0 {
compatible = "zephyr,mapped-partition";
label = "image-0-secure";
reg = <0x00000000 0x8000>;
};

slot0_ns_partition: partition@8000 {
compatible = "zephyr,mapped-partition";
label = "image-0-nonsecure";
reg = <0x00008000 0x68000>;
};
};

slot1_partition: partition@80000 {
compatible = "zephyr,mapped-partition";
label = "image-1";
reg = <0x00080000 0x70000>;
ranges = <0x0 0x00080000 0x70000>;
#address-cells = <1>;
#size-cells = <1>;

slot1_s_partition: partition@0 {
compatible = "zephyr,mapped-partition";
label = "image-1-secure";
reg = <0x00000000 0x8000>;
};

slot1_ns_partition: partition@8000 {
compatible = "zephyr,mapped-partition";
label = "image-1-nonsecure";
reg = <0x00008000 0x68000>;
};
};

storage_partition: partition@f0000 {
compatible = "zephyr,mapped-partition";
label = "storage";
reg = <0x000f0000 0x10000>;
};
};
};
49 changes: 49 additions & 0 deletions dts/samples/cellular/nrf91_crypto_partitions.dtsi
Comment thread
MarkusLassila marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
* Copyright (c) 2026 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

/delete-node/ &boot_partition;
/delete-node/ &slot0_partition;
/delete-node/ &slot1_partition;

&flash0 {
/*
* 0x0000_0000 Primary area (960 kB)
* 0x0000_0000 Primary secure image (384 kB)
* 0x0006_0000 Primary non-secure image (576 kB)
*
* Unchanged:
* 0x000f_0000 Protected Storage Area ( 16 KB)
* 0x000f_4000 Internal Trusted Storage Area ( 8 KB)
* 0x000f_6000 OTP / NV counters area ( 8 KB)
* 0x000f_8000 Settings storage ( 32 kB)
*/
partitions {
ranges;
#address-cells = <1>;
#size-cells = <1>;

slot0_partition: partition@0 {
compatible = "zephyr,mapped-partition";
label = "image-0";
reg = <0x00000000 0xf0000>;
ranges = <0x0 0x00000000 0xf0000>;
#address-cells = <1>;
#size-cells = <1>;

slot0_s_partition: partition@0 {
compatible = "zephyr,mapped-partition";
label = "image-0-secure";
reg = <0x00000000 0x60000>;
};

slot0_ns_partition: partition@60000 {
compatible = "zephyr,mapped-partition";
label = "image-0-nonsecure";
reg = <0x00060000 0x90000>;
};
};
};
};
92 changes: 92 additions & 0 deletions dts/samples/cellular/nrf91_immutable_bootloader_partitions.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
/*
* Copyright (c) 2026 Nordic Semiconductor
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

/delete-node/ &boot_partition;
/delete-node/ &slot0_partition;
/delete-node/ &slot1_partition;
/delete-node/ &tfm_ps_partition;
/delete-node/ &tfm_its_partition;
/delete-node/ &tfm_otp_partition;
/delete-node/ &storage_partition;

&flash0 {
/*
* 0x0000_0000 B0 (NSIB) ( 32 kB)
* 0x0000_8000 Primary updatable MCUboot ( 64 kB)
Comment thread
MarkusLassila marked this conversation as resolved.
* 0x0001_8000 Secondary updatable MCUboot ( 64 kB)
* 0x0002_8000 Primary image area (416 kB)
* 0x0002_8000 Primary secure image ( 32 kB)
* 0x0003_0000 Primary non-secure image (384 kB)
* 0x0009_0000 Secundary image area (416 kB)
* 0x0009_0000 Secundary secure image ( 32 kB)
* 0x0009_8000 Secundary non-secure image (384 kB)
* 0x000f_8000 Settings storage ( 32 kB)
*/

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

b0_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x8000>;
};

s0_partition: partition@8000 {
label = "mcuboot-0";
reg = <0x00008000 0x10000>;
};

s1_partition: partition@18000 {
label = "mcuboot-1";
reg = <0x00018000 0x10000>;
};

slot0_partition: partition@28000 {
compatible = "fixed-subpartitions";
label = "image-0";
reg = <0x00028000 0x68000>;
ranges = <0x0 0x00028000 0x68000>;
#address-cells = <1>;
#size-cells = <1>;

slot0_s_partition: partition@0 {
label = "image-0-secure";
reg = <0x00000000 0x8000>;
};

slot0_ns_partition: partition@8000 {
label = "image-0-nonsecure";
reg = <0x00008000 0x60000>;
};
};

slot1_partition: partition@90000 {
compatible = "fixed-subpartitions";
label = "image-1";
reg = <0x00090000 0x68000>;
ranges = <0x0 0x00090000 0x68000>;
#address-cells = <1>;
#size-cells = <1>;

slot1_s_partition: partition@0 {
label = "image-1-secure";
reg = <0x00000000 0x8000>;
};

slot1_ns_partition: partition@8000 {
label = "image-1-nonsecure";
reg = <0x00008000 0x60000>;
};
};

storage_partition: partition@f8000 {
compatible = "zephyr,mapped-partition";
label = "storage";
reg = <0x000f8000 0x8000>;
};
};
};
Loading
Loading