FIRMWARE OVER THE AIR

Here is a professional and technically detailed ticket template you can use to submit to Nordic Semiconductor (DevZone), Quectel Support, or your internal System Architect/Lead.

I have structured this to clearly highlight the hardware setup, the software stack, and the specific memory constraint issue.


Ticket Subject:

Urgent: Firmware Binary Size (598KB) Exceeds FOTA Partition Limit (150KB) on nRF5340 + Quectel EC200 Gateway

Ticket Description:

Device Overview:

  • Device Type: IoT Gateway

  • MCU: Nordic nRF5340 (Application Core)

  • Connectivity Module: Quectel EC200 (connected via UART/USB)

  • RTOS: Zephyr RTOS (nRF Connect SDK v2.x.x) [Insert your specific SDK version here]

  • Cloud Provider: AWS IoT Core

Functional Summary:

The gateway acts as a central hub. It scans for BLE Nodes using Extended Advertising packets, processes the data, and pushes it to the cloud via the Quectel EC200 modem using the AWS IoT library over HTTPS/MQTT.

The Problem:

We are implementing FOTA (Firmware Over-The-Air) updates. The current compiled application binary (app_update.bin / zephyr.signed.bin) is approximately 598 KB.

However, our current flash memory partitioning / download slot allocation appears to be restricted to 150 KB. We are unable to perform the FOTA update because the new image does not fit into the secondary slot.

Technical Constraints & Configuration:

  1. Current Build Size: ~600KB (Includes Zephyr Kernel, MCUboot, BLE Host, Extended Adv support, AWS IoT Stack, Modem Drivers).

  2. Target Size Limit: ~150KB (This seems unusually low for the nRF5340 App Core which has 1MB Flash).

  3. Bootloader: MCUboot enabled (CONFIG_BOOTLOADER_MCUBOOT=y).

Steps Taken So Far:

  1. Enabled standard FOTA configurations (CONFIG_AWS_FOTA, CONFIG_FOTA_DOWNLOAD).

  2. Attempted to optimize logging, but the size reduction is insufficient.

Requests for Support:

  1. Partition Manager: Is the 150KB limit a hard constraint of the default partition manager configuration? How can we adjust pm_static.yml to increase the secondary slot size on the nRF5340?

  2. Optimization: Given that we require the AWS Stack (which relies on mbedTLS) and BLE Extended Advertising, what are the recommended Kconfig options to aggressively strip unused drivers and symbols to reduce the binary size?

  3. Modem Offloading: Is it possible to offload the AWS TLS/SSL stack to the Quectel EC200 modem (using modem-internal TCP/IP stack) to remove the heavy mbedTLS library from the nRF5340 application code?

 


 

Parents
  • Hello,

    Please post your current pm_static.yml file so I can see how you have partitioned your memory.

    Best regards,

    Vidar

  • EMPTY_0:
      address: 0xfd000
      end_address: 0x100000
      placement:
        after:
        - settings_storage
      region: flash_primary
      size: 0x3000
    app:
      address: 0x15200
      end_address: 0xfc000
      region: flash_primary
      size: 0xe6e00
    external_flash:
      address: 0xe7000
      end_address: 0x800000
      region: external_flash
      size: 0x719000
    mcuboot:
      address: 0x0
      end_address: 0x15000
      placement:
        before:
        - mcuboot_primary
      region: flash_primary
      size: 0x15000
    mcuboot_pad:
      address: 0x15000
      end_address: 0x15200
      placement:
        before:
        - mcuboot_primary_app
      region: flash_primary
      size: 0x200
    mcuboot_primary:
      address: 0x15000
      end_address: 0xfc000
      orig_span: &id001
      - app
      - mcuboot_pad
      region: flash_primary
      size: 0xe7000
      span: *id001
    mcuboot_primary_app:
      address: 0x15200
      end_address: 0xfc000
      orig_span: &id002
      - app
      region: flash_primary
      size: 0xe6e00
      span: *id002
    mcuboot_secondary:
      address: 0x0
      device: DT_CHOSEN(nordic_pm_ext_flash)
      end_address: 0xe7000
      placement:
        align:
          start: 0x4
      region: external_flash
      share_size:
      - mcuboot_primary
      size: 0xe7000
    otp:
      address: 0xff8100
      end_address: 0xff83fc
      region: otp
      size: 0x2fc
    pcd_sram:
      address: 0x20000000
      end_address: 0x20002000
      placement:
        after:
        - start
      region: sram_primary
      size: 0x2000
    rpmsg_nrf53_sram:
      address: 0x20070000
      end_address: 0x20080000
      placement:
        before:
        - end
      region: sram_primary
      size: 0x10000
    settings_storage:
      address: 0xfc000
      end_address: 0xfd000
      placement:
        align:
          start: 0x4000
        before:
        - end
      region: flash_primary
      size: 0x1000
    sram_primary:
      address: 0x20002000
      end_address: 0x20070000
      region: sram_primary
      size: 0x6e000
  • Where are you seeing that the slots are 150 kB? You partition file show that they are 0xe7000 bytes. 

Reply Children
Related