Hi,
We are using both nRF54L15 and nRF54L10 in our product, with DFU support where an external flash is used as the secondary partition on both MCUs. The hardware connections are identical on both boards.
To define partitions, we use partition manager with a pm_static.yml file (attached), which is the same for both MCUs and allocates around 850–900 KB of internal flash.
Question:
From our understanding, the only difference between nRF54L15 and nRF54L10 is the available flash and RAM, while the rest of the hardware is the same.
Our project is built using the nRF54L10 configuration to account for memory limitations.
-
Board target:
nrf54l15dk/nrf54l10/cpuapp -
Base overlay: our custom board overlay
hence we are using partition manager so its overtight other partition right?
Can we run the same nRF54L10 build on the nRF54L15 board?
external_flash:
address: 0x00000000
size: 0x00800000 # 8_MB total
region: external_flash
reserved_ext_flash_a:
address: 0x00000000
size: 0x00400000 # 4MB_(not mcuboot_secondary)
region: external_flash
mcuboot_secondary:
address: 0x00400000
size: 0x000E0000 # 896 KiB = 224*4 KiB matches primary
#size: 0x000F0000 # 960 KiB = 240*4 KiB matches primary
region: external_flash
device: DT_CHOSEN(nordic_pm_ext_flash)
reserved_ext_flash_b:
address: 0x004E0000
size: 0x00320000 # remaining external space
region: external_flash
# Internal flash (primary)
mcuboot:
address: 0x00000000
size: 0x00010000 # 64 KiB bootloader
region: flash_primary
placement:
align:
end: 0x1000
before:
- mcuboot_primary
mcuboot_pad:
address: 0x00010000
size: 0x00001000 # 4 KiB pad
region: flash_primary
placement:
align:
start: 0x1000
before:
- mcuboot_primary_app
app:
address: 0x00011000
size: 0x000E0000 # 896 KiB app_AR
# size: 0x000EF000 # 956 KiB app_AR
region: flash_primary
mcuboot_primary:
address: 0x00010000
size: 0x000E0000 # 896 KiB total (pad + app)_4 KiB*
region: flash_primary
span:
- mcuboot_pad
- app
mcuboot_primary_app:
address: 0x00011000
size: 0x000E0000
region: flash_primary
span:
- app
placement :
before:
- app
bootconf:
address: 0x00FFD080
size: 0x00000004
region: bootconf
sram_primary:
address: 0x20000000
size: 0x00030000 # 192 KiB
region: sram_primary
# General Settings CONFIG_NCS_SAMPLES_DEFAULTS=y CONFIG_HEAP_MEM_POOL_SIZE=8192 CONFIG_MAIN_STACK_SIZE=16384 CONFIG_RESET_ON_FATAL_ERROR=y CONFIG_REBOOT=y CONFIG_PM_DEVICE=y # Bluetooth Configuration CONFIG_BT=y CONFIG_BT_PERIPHERAL=y CONFIG_BT_CENTRAL=y CONFIG_BT_DEVICE_NAME="WA_X" CONFIG_BT_DEVICE_NAME_DYNAMIC=y CONFIG_BT_DEVICE_APPEARANCE=832 CONFIG_BT_MAX_CONN=1 CONFIG_BT_MAX_PAIRED=1 CONFIG_BT_EXT_ADV=y CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=250 CONFIG_BT_SMP=y CONFIG_DFU_TARGET=y CONFIG_BT_SCAN=y CONFIG_BT_SCAN_FILTER_ENABLE=y CONFIG_BT_SCAN_UUID_CNT=1 CONFIG_BT_GATT_CLIENT=y CONFIG_BT_GATT_DM=y # CONFIG_BT_HRS=y # CONFIG_BT_HRS_CLIENT=y CONFIG_BT_SETTINGS=y CONFIG_FLASH=y CONFIG_FLASH_PAGE_LAYOUT=y CONFIG_FLASH_MAP=y CONFIG_SETTINGS=y CONFIG_DK_LIBRARY=y # MPSL support CONFIG_MPSL=y CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y # Enable the GPIO peripheral CONFIG_GPIO=y CONFIG_GPIO_NRFX=y CONFIG_GPIO_NRFX_INTERRUPT=y CONFIG_INPUT=y # Enable the I2C peripheral CONFIG_I2C=y CONFIG_SENSOR=y CONFIG_LIS2DW12=y CONFIG_TMP112=y # TMP110 is compatible with TMP112 driver # CONFIG_BQ35100=y # Enable triggers (interrupt-based events) # CONFIG_LIS2DW12_TRIGGER_GLOBAL_THREAD=y # Enable the SPI peripheral CONFIG_SPI=y CONFIG_SPI_NOR=y # Enable the UART peripheral CONFIG_SERIAL=y #CONFIG_UART_INTERRUPT_DRIVEN=y # If you're using interrupts CONFIG_UART_ASYNC_API=y # Logging Core CONFIG_LOG=y CONFIG_LOG_DEFAULT_LEVEL=3 CONFIG_LOG_MODE_DEFERRED=y CONFIG_LOG_BUFFER_SIZE=4096 CONFIG_LOG_BACKEND_SHOW_COLOR=y # RTT backend CONFIG_USE_SEGGER_RTT=y CONFIG_LOG_BACKEND_RTT=y # Disable UART backend completely CONFIG_LOG_BACKEND_UART=n CONFIG_UART_CONSOLE=n CONFIG_CONSOLE=n CONFIG_STDOUT_CONSOLE=n # STEP 2.2 - Enable FOTA over Bluetooth LE CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y #enble watchdog CONFIG_WATCHDOG=y # Enable the Fuel Gauge CONFIG_FUEL_GAUGE=y # Enable the CJSON library for JSON parsing CONFIG_CJSON_LIB=y # Enable the CRC library for checksum calculations CONFIG_CRC=y # Enable Mbed TLS and Nordic's security wrapper CONFIG_MBEDTLS=y CONFIG_NRF_SECURITY=y # Enable AES and CBC mode in Mbed TLS CONFIG_MBEDTLS_LEGACY_CRYPTO_C=y CONFIG_MBEDTLS_AES_C=y CONFIG_MBEDTLS_CIPHER_MODE_CBC=y # Enable full cipher module (recommended) CONFIG_MBEDTLS_CIPHER_C=y #Added by chetan to solve float problem in Sprintf CONFIG_NEWLIB_LIBC=y CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y CONFIG_LOG_PRINTK=y CONFIG_CBPRINTF_FP_SUPPORT=y CONFIG_BASE64=y # Step 1.1 - Enable SPI driver for the application CONFIG_SPI_NOR_SFDP_DEVICETREE=y CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 # QSPI drivers are enabled by defualt for some chips. # Disable it explicitly to be sure QSPI is disabled. CONFIG_NORDIC_QSPI_NOR=n # Enable mcumgr DFU in application CONFIG_MCUMGR=y # Enable MCUMGR management for both OS and Images CONFIG_MCUMGR_GRP_OS=y CONFIG_MCUMGR_GRP_IMG=y # # Configure MCUMGR transport to UART # CONFIG_MCUMGR_TRANSPORT_UART=y # Dependencies # Configure dependencies for CONFIG_MCUMGR CONFIG_NET_BUF=y CONFIG_ZCBOR=y CONFIG_CRC=y # Configure dependencies for CONFIG_MCUMGR_GRP_IMG CONFIG_FLASH=y CONFIG_IMG_MANAGER=y # Configure dependencies for CONFIG_IMG_MANAGER CONFIG_STREAM_FLASH=y CONFIG_FLASH_MAP=y CONFIG_UARTE_NRFX_UARTE_COUNT_BYTES_WITH_TIMER=y CONFIG_BT_SCAN_ADDRESS_CNT=1
Thanks and Regards,
Jay
WaveInnova inc