Topic

FAQ
Login Register
BLE单连接的OTA如何解除固件256K大小的限制

bls_ota_set_fwSize_and_fwBootAddr 同时支持两个功能: 修改最大 firmware size 和启动地址。这个启动地址指的是 OTA 设计中除了 0 地址外另一个存储 New_firmware 的地址(只能是 0x20000、 0x40000 或0x80000)。SDK 中默认的最大 firmware size 为 124K( 由于一些特殊的原因, 启动地址为 0x20000 的 firmware size 不得大于 124K),对应的启动地址为 0x00000 和 0x20000。这两个值和前文的描述一致。

void bls_ota_set_fwSize_and_fwBootAddr(int firmware_size_k, int boot_addr);

firmware_size_k 的设置一定要 4K byte 对齐,比如 size 为 97K 时需要设为 100K。这个 API 只能在 main 函数中 cpu_wakeup_init 之前调用,否则无效。原因是 cpu_sleep_wakeup 函数中需要根据 firmware_size_k 和 boot_addr 的值做一些设置。

如果最大 firmware_size 发生变化,超过了 124K,此时需要将启动地址挪到 0x40000( size 最大不得超过252K) , 同理如果 firmware_size 超过 252K, 需要将启动地址挪到 0x80000( size 最大不得超过 508K), 比如最大 firmware size 可能到 200K,设置如下: bls_ota_set_fwSize_and_fwBootAddr(200, 0x40000);