boards: nxp: mimxrt10xx: fix non-optimal sector distribution

- Optimize slot sizes for MCUBoot swap move algorithm
  for mimxrt1010/15/20/24/40/50/60/64 boards.
- Save up to 64 wasted sectors.
- Use DT_SIZE_K/M macros for slot sizes.
- Fix partition size errors.
- Limit mcuboot max size to 128KB (was 256KB).

Signed-off-by: Andrej Butok <andrey.butok@nxp.com>
This commit is contained in:
Andrej Butok 2024-05-29 15:26:54 +02:00 committed by Henrik Brix Andersen
commit 03d1eabc32
11 changed files with 102 additions and 98 deletions

View file

@ -105,19 +105,22 @@ arduino_serial: &lpuart1 {};
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(64)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
slot0_partition: partition@10000 { /* The MCUBoot swap-move algorithm uses the last 3 sectors
* of the primary slot0 for swap status and move.
*/
slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00010000 DT_SIZE_M(7)>; reg = <0x00020000 (DT_SIZE_M(7) + DT_SIZE_K(12))>;
}; };
slot1_partition: partition@710000 { slot1_partition: partition@723000 {
label = "image-1"; label = "image-1";
reg = <0x00710000 DT_SIZE_M(7)>; reg = <0x00723000 DT_SIZE_M(7)>;
}; };
storage_partition: partition@E10000 { storage_partition: partition@E23000 {
label = "storage"; label = "storage";
reg = <0x00E10000 DT_SIZE_K(1984)>; reg = <0x00E23000 (DT_SIZE_M(2) - DT_SIZE_K(140))>;
}; };
}; };
}; };

View file

@ -102,19 +102,22 @@ arduino_serial: &lpuart4 {
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(64)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
slot0_partition: partition@10000 { /* The MCUBoot swap-move algorithm uses the last 3 sectors
* of the primary slot0 for swap status and move.
*/
slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00010000 DT_SIZE_M(7)>; reg = <0x00020000 (DT_SIZE_M(7) + DT_SIZE_K(12))>;
}; };
slot1_partition: partition@710000 { slot1_partition: partition@723000 {
label = "image-1"; label = "image-1";
reg = <0x00710000 DT_SIZE_M(7)>; reg = <0x00723000 DT_SIZE_M(7)>;
}; };
storage_partition: partition@E10000 { storage_partition: partition@E23000 {
label = "storage"; label = "storage";
reg = <0x00E10000 DT_SIZE_K(1984)>; reg = <0x00E23000 (DT_SIZE_M(2) - DT_SIZE_K(140))>;
}; };
}; };
}; };

View file

@ -107,25 +107,24 @@ arduino_serial: &lpuart2 {
compatible = "fixed-partitions"; compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(64)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
/* Note slot 0 has one additional sector, /* The MCUBoot swap-move algorithm uses the last 2 sectors
* this is intended for use with the swap move algorithm * of the primary slot0 for swap status and move.
*/ */
slot0_partition: partition@10000 { slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00010000 (DT_SIZE_M(3) + DT_SIZE_K(4))>; reg = <0x00020000 (DT_SIZE_M(3) + DT_SIZE_K(8))>;
}; };
slot1_partition: partition@311000 { slot1_partition: partition@322000 {
label = "image-1"; label = "image-1";
reg = <0x00311000 DT_SIZE_M(3)>; reg = <0x00322000 DT_SIZE_M(3)>;
}; };
storage_partition: partition@611000 { storage_partition: partition@622000 {
label = "storage"; label = "storage";
reg = <0x00611000 DT_SIZE_K(1980)>; reg = <0x00622000 (DT_SIZE_M(2) - DT_SIZE_K(136))>;
}; };
}; };
}; };

View file

@ -100,25 +100,24 @@ arduino_serial: &lpuart2 {
compatible = "fixed-partitions"; compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(64)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
/* Note slot 0 has one additional sector, /* The MCUBoot swap-move algorithm uses the last 2 sectors
* this is intended for use with the swap move algorithm * of the primary slot0 for swap status and move.
*/ */
slot0_partition: partition@10000 { slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00010000 DT_SIZE_K(1924)>; reg = <0x00020000 (DT_SIZE_K(1920) + DT_SIZE_K(8))>;
}; };
slot1_partition: partition@1f1000 { slot1_partition: partition@202000 {
label = "image-1"; label = "image-1";
reg = <0x001F1000 DT_SIZE_K(1920)>; reg = <0x00202000 DT_SIZE_K(1920)>;
}; };
storage_partition: partition@3d1000 { storage_partition: partition@3E2000 {
label = "storage"; label = "storage";
reg = <0x003D1000 DT_SIZE_K(188)>; reg = <0x003E2000 DT_SIZE_K(120)>;
}; };
}; };
}; };

View file

@ -103,19 +103,22 @@
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(64)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
slot0_partition: partition@10000 { /* The MCUBoot swap-move algorithm uses the last 2 sectors
* of the primary slot0 for swap status and move.
*/
slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00010000 DT_SIZE_M(3)>; reg = <0x00020000 (DT_SIZE_M(3) + DT_SIZE_K(8))>;
}; };
slot1_partition: partition@310000 { slot1_partition: partition@322000 {
label = "image-1"; label = "image-1";
reg = <0x00310000 DT_SIZE_M(3)>; reg = <0x00322000 DT_SIZE_M(3)>;
}; };
storage_partition: partition@610000 { storage_partition: partition@622000 {
label = "storage"; label = "storage";
reg = <0x00610000 DT_SIZE_K(1984)>; reg = <0x00622000 (DT_SIZE_M(2) - DT_SIZE_K(136))>;
}; };
}; };
}; };

View file

@ -46,25 +46,24 @@
compatible = "fixed-partitions"; compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(256)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
/* Note slot 0 has one additional sector, /* The MCUBoot swap-move algorithm uses the last 14 sectors
* this is intended for use with the swap move algorithm * of the primary slot0 for swap status and move.
*/ */
slot0_partition: partition@40000 { slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00040000 (DT_SIZE_M(3) + DT_SIZE_K(4))>; reg = <0x00020000 (DT_SIZE_M(3) + DT_SIZE_K(56))>;
}; };
slot1_partition: partition@341000 { slot1_partition: partition@32E000 {
label = "image-1"; label = "image-1";
reg = <0x00341000 DT_SIZE_M(3)>; reg = <0x0032E000 DT_SIZE_M(3)>;
}; };
storage_partition: partition@641000 { storage_partition: partition@62E000 {
label = "storage"; label = "storage";
reg = <0x00641000 (DT_SIZE_M(57) + DT_SIZE_K(764))>; reg = <0x0062E000 (DT_SIZE_M(58) - DT_SIZE_K(184))>;
}; };
}; };
}; };

View file

@ -27,30 +27,28 @@
jedec-id = [9d 70 17]; jedec-id = [9d 70 17];
erase-block-size = <4096>; erase-block-size = <4096>;
write-block-size = <1>; write-block-size = <1>;
partitions { partitions {
compatible = "fixed-partitions"; compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(64)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
/* Note slot 0 has one additional sector, /* The MCUBoot swap-move algorithm uses the last 2 sectors
* this is intended for use with the swap move algorithm * of the primary slot0 for swap status and move.
*/ */
slot0_partition: partition@10000 { slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00010000 (DT_SIZE_M(3) + DT_SIZE_K(4))>; reg = <0x00020000 (DT_SIZE_M(3) + DT_SIZE_K(8))>;
}; };
slot1_partition: partition@311000 { slot1_partition: partition@322000 {
label = "image-1"; label = "image-1";
reg = <0x00311000 DT_SIZE_M(3)>; reg = <0x00322000 DT_SIZE_M(3)>;
}; };
storage_partition: partition@611000 { storage_partition: partition@622000 {
label = "storage"; label = "storage";
reg = <0x00611000 DT_SIZE_K(1980)>; reg = <0x00622000 (DT_SIZE_M(2) - DT_SIZE_K(136))>;
}; };
}; };
}; };

View file

@ -44,25 +44,24 @@
compatible = "fixed-partitions"; compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(256)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
/* Note slot 0 has one additional sector, /* The MCUBoot swap-move algorithm uses the last 14 sectors
* this is intended for use with the swap move algorithm * of the primary slot0 for swap status and move.
*/ */
slot0_partition: partition@40000 { slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00040000 (DT_SIZE_M(3) + DT_SIZE_K(4))>; reg = <0x00020000 (DT_SIZE_M(3) + DT_SIZE_K(56))>;
}; };
slot1_partition: partition@341000 { slot1_partition: partition@32E000 {
label = "image-1"; label = "image-1";
reg = <0x00341000 DT_SIZE_M(3)>; reg = <0x0032E000 DT_SIZE_M(3)>;
}; };
storage_partition: partition@641000 { storage_partition: partition@62E000 {
label = "storage"; label = "storage";
reg = <0x00641000 (DT_SIZE_M(57) + DT_SIZE_K(764))>; reg = <0x0062E000 (DT_SIZE_M(58) - DT_SIZE_K(184))>;
}; };
}; };
}; };

View file

@ -34,25 +34,24 @@
compatible = "fixed-partitions"; compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(64)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
/* Note slot 0 has one additional sector, /* The MCUBoot swap-move algorithm uses the last 2 sectors
* this is intended for use with the swap move algorithm * of the primary slot0 for swap status and move.
*/ */
slot0_partition: partition@10000 { slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00010000 (DT_SIZE_M(3) + DT_SIZE_K(4))>; reg = <0x00020000 (DT_SIZE_M(3) + DT_SIZE_K(8))>;
}; };
slot1_partition: partition@311000 { slot1_partition: partition@322000 {
label = "image-1"; label = "image-1";
reg = <0x00311000 DT_SIZE_M(3)>; reg = <0x00322000 DT_SIZE_M(3)>;
}; };
storage_partition: partition@611000 { storage_partition: partition@622000 {
label = "storage"; label = "storage";
reg = <0x00611000 DT_SIZE_K(1980)>; reg = <0x00622000 (DT_SIZE_M(2) - DT_SIZE_K(136))>;
}; };
}; };
}; };

View file

@ -206,22 +206,24 @@
compatible = "fixed-partitions"; compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(256)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
slot0_partition: partition@40000 { /* The MCUBoot swap-move algorithm uses the last 14 sectors
* of the primary slot0 for swap status and move.
*/
slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00040000 DT_SIZE_M(3)>; reg = <0x00020000 (DT_SIZE_M(3) + DT_SIZE_K(56))>;
}; };
slot1_partition: partition@340000 { slot1_partition: partition@32E000 {
label = "image-1"; label = "image-1";
reg = <0x00340000 DT_SIZE_M(3)>; reg = <0x0032E000 DT_SIZE_M(3)>;
}; };
storage_partition: partition@640000 { storage_partition: partition@62E000 {
label = "storage"; label = "storage";
reg = <0x00640000 (DT_SIZE_M(557) + DT_SIZE_K(768))>; reg = <0x0062E000 (DT_SIZE_M(58) - DT_SIZE_K(184))>;
}; };
}; };
}; };

View file

@ -202,22 +202,22 @@ arduino_i2c: &lpi2c1 {};
compatible = "fixed-partitions"; compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
boot_partition: partition@0 { boot_partition: partition@0 {
label = "mcuboot"; label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(64)>; reg = <0x00000000 DT_SIZE_K(128)>;
}; };
/* Note slot 0 has one additional sector, /* The MCUBoot swap-move algorithm uses the last 2 sectors
* this is intended for use with the swap move algorithm * of the primary slot0 for swap status and move.
*/ */
slot0_partition: partition@10000 { slot0_partition: partition@20000 {
label = "image-0"; label = "image-0";
reg = <0x00010000 DT_SIZE_K(2016)>; reg = <0x00020000 (DT_SIZE_K(1980) + DT_SIZE_K(8))>;
}; };
slot1_partition: partition@208000 { slot1_partition: partition@211000 {
label = "image-1"; label = "image-1";
reg = <0x00208000 DT_SIZE_K(2012)>; reg = <0x00211000 DT_SIZE_K(1980)>;
}; };
/* The storage partition is located in is25wp064 */
}; };
}; };