# How to use more than 16MB flash on AMB82 Mini

**URL:** https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651
**Category:** SDK
**Tags:** evb-amb82
**Created:** [January 12, 2026, 1:28pm UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651 "2026-01-12T13:28:23Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![yugandhar](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/yugandhar/32/2836_2.png) [@yugandhar](https://forum.amebaiot.com/u/yugandhar)
#### Post date: [January 12, 2026, 1:28pm UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651/1 "2026-01-12T13:28:23Z")

</div>

Hi,

Currently 16MB flash available on AMB82 Mini board. But, for my application more than 16MB is required. Can anyone provide me the details to upgrade it to 32MB(I have Winbond one)?

I think one change is flash partitions json file for new sizes.

Is there any other changes required apart from this like flashing tool settings, etc.

Thanks,

Yuagndhar

---

<div class="post-metadata">

### Author: ![Pammy](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/pammy/32/936_2.png) [@Pammy](https://forum.amebaiot.com/u/Pammy)
#### Post date: [January 13, 2026, 2:46am UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651/2 "2026-01-13T02:46:25Z")

</div>

> [@yugandhar](#):
>
> I think one change is flash partitions json file for new sizes.

Modifying the current flash partitions is not recommended, as the starting addresses for each partition are already fixed for the 16 MB flash layout. Changing them may lead to boot-up or compilation issues.

If 32 MB flash is required, we suggest you can append your own parameters after the existing flash partition table and use that area for data storage.

---

<div class="post-metadata">

### Author: ![yugandhar](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/yugandhar/32/2836_2.png) [@yugandhar](https://forum.amebaiot.com/u/yugandhar)
#### Post date: [January 13, 2026, 6:02am UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651/3 "2026-01-13T06:02:10Z")

</div>

Hi @Pammy ,

Why changing **amebapro2\_partitiontable.json** file is not allowed?

My binary file increased few more KBs than **fw1/fw2** partition size. I got partition overlap error while building the flash image.

I found that the **isp**  **iq** files are less than **iq** partition size, so I increased **fw1/fw2** partitions and reduced **iq** partition, now no obverlap error and able to flash the app and working wothout any issues.

As you said changing **amebapro2\_partitiontable.json** is not allowed and partition addresses are fixed, how it worked for me?

---

<div class="post-metadata">

### Author: ![Pammy](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/pammy/32/936_2.png) [@Pammy](https://forum.amebaiot.com/u/Pammy)
#### Post date: [January 13, 2026, 7:28am UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651/4 "2026-01-13T07:28:44Z")

</div>

Hi @yugandhar

What I meant was that modifying the partition structure is not recommended, as it might affect the application logic; however, it is allowed if you only intend to increase the length of each block. In that case, you may modify starting from fw1 onwards.

 ![FlashLayout](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/2X/2/2de98c9fe7b298b2705e4d3096149cfbb3858203.jpeg)

---

<div class="post-metadata">

### Author: ![yugandhar](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/yugandhar/32/2836_2.png) [@yugandhar](https://forum.amebaiot.com/u/yugandhar)
#### Post date: [January 13, 2026, 8:28am UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651/5 "2026-01-13T08:28:13Z")

</div>

Hi @Pammy ,

So, if I give any address which exceeds 16MB for firmware, ISP\_IQ or NN\_Model\_Data partitions, will flashing tool writes to it or not?

---

<div class="post-metadata">

### Author: ![Pammy](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/pammy/32/936_2.png) [@Pammy](https://forum.amebaiot.com/u/Pammy)
#### Post date: [January 13, 2026, 9:22am UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651/6 "2026-01-13T09:22:17Z")

</div>

Hi @yugandhar,

> [@yugandhar](#):
>
> So, if I give any address which exceeds 16MB for firmware, ISP\_IQ or NN\_Model\_Data partitions, will flashing tool writes to it or not?

Theoretically, flashing and writing should work if you are using a 32 MB flash.  
`flash_ntz.bin` file is generated according to the partition layout defined in `amebapro2_partitiontable.json`. However, we have not tested this setup with a 32 MB flash on our side.

Do note that start addresses and sizes of all partitions need to be configured correctly.

> [@yugandhar](#):
>
> application more than 16MB

Understand that your application may exceed 16 MB in size, which means you will need to increase the allocation for `fw1`. Depending on your partition configuration, OTA updates may no longer be usable, as OTA typically relies on `fw2`. For example, if your application requires 16 MB and only 8 MB remains available for `fw2` after all allocations, that space would be insufficient to support OTA firmware updates for your application.

---

<div class="post-metadata">

### Author: ![yugandhar](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/yugandhar/32/2836_2.png) [@yugandhar](https://forum.amebaiot.com/u/yugandhar)
#### Post date: [April 8, 2026, 9:36am UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651/7 "2026-04-08T09:36:59Z")

</div>

Hi @Pammy ,

We upgraded the flash memory to **32MB(W25Q256JVSM)** but not changed partition table, so the first 16MB will be applicable. We are able to flash the firmware and it is running without any issues.

But we found below issues.

1. WiFi is not connecting to saved SSID even though fast connect enabled. When we connect using AT commands it is working and not connecting upon device restart.
2. NN model inference is not happening. So we checked the log messages and found some errors.

The error messages we are suspecting for NN inference failure are

> [0x12345678]read\_bin\_header[32], fail nbg magic not match, nbg is bad  
> [0x12345678]nbg\_fmt\_read\_fixed[268], fail to read nbg file fixed section  
> [0x12345678]nbg\_fmt\_read[570], fail to read nbg version=0xffffffff, status=-3  
> [0x12345678]nbg\_create\_network\_from\_memory[2076], fail to read nbg status=-3  
> [0x12345678]vip\_create\_network[188], fail to create network status=-3  
> npu[12345678] fail to set task desc index=-1 property status=-3  
> [0x12345678]viphal\_task\_set\_property[1457], fail to check task set property status=-3  
> error: error: vip\_create\_network.  
> [0x12345678]vip\_finish\_network[667], network object is NULL  
> [0x12345678]vip\_destroy\_network[399], network object is NULL

Below is the full log.

> == Rtl8735b IoT Platform ==
> 
> [Normal mode]  
> BootFromNORFlash  
> [Start Boot ROM…]  
> === Load PARTBL ===  
> === Load Done ===  
> === Load ISP\_IQ ===  
> [fcs chk pass]  
> ISP\_IQ @ 0x8461080, 0x55f80, 0x0  
> mfcs\_data version 0x00010001  
> fcs\_data version 0x00010101  
> === Process ISP\_IQ ===  
> === Load Done ===  
> === Load BL ===  
> [Image Start Table @ 0x18200]  
> === Load Done ===
> 
> == Boot Loader ==  
> Nov 4 2025:14:24:05  
> === Load FCS Para ===  
> === Load Done ===  
> [crc pass]  
> === Load ISP\_IQ Sensor ===  
> ISP\_IQ @ 0x8461080, 0x55f80  
> === Process ISP\_IQ ===  
> === Load Done ===  
> === Load FW1 ===  
> FW\_ISP\_IQ @ 0x8061080, 0x57f80  
> === Process FW\_ISP\_IQ ===  
> DRAM\_TYPE is DDR2 128MB.  
> ddr\_freq = 533  
> VOE flash @ 0x80b9080, 0x80f80  
> FCS KM\_status 0x00002081 err 0x0000200a  
> Wait KM fcs done 0 us  
> FCS TM\_status 0x003f0000  
> store fcs data for application  
> It don’t do the sensor initial process  
> RAM TM\_STATUS 0x00bf1208 err 0x00001208  
> read fcs\_status 0x000000bf  
> read fcs\_status 0x000000bf  
> === Process VOE IMG ===  
> [Image Start Table @ 0x20106200]  
> RAM Load @ 0x813a100-\>0x20106200, 0x6c80  
> DDR Load @ 0x8141080-\>0x70100000, 0x2def93  
> === FW Load Done ===
> 
> Boot Loader \<==
> 
> == RAM Start ==  
> Build @ 15:55:42, Apr 7 2026
> 
> $8735b\>Activate Wi-Fi AP mode
> 
> # ========== Sensor: IMX662
> 
> [video\_voe\_presetting] fps:30 w:1920 h:1080
> 
> voe heap size = 45077504  
> fwin(1),enc\_en(0),IQ\_OFFSET = 0x17a00  
> fwin(1),enc\_en(0),SENSOR\_OFFSET = 0x29b00  
> sensor id 1 iq\_data 17a00 sensor\_data 29b00  
> VOE not init  
> VOE\_OUT\_CMD type 2 command fail -1  
> fwin(1),enc\_en(0),IQ\_OFFSET = 0x17a00  
> fwin(1),enc\_en(0),SENSOR\_OFFSET = 0x29b00  
> sensor id 1 iq\_data 17a00 sensor\_data 29b00  
> VOE not init  
> VOE\_OUT\_CMD type 2 command fail -1  
> fwin(1),enc\_en(0),IQ\_OFFSET = 0x17a00  
> fwin(1),enc\_en(0),SENSOR\_OFFSET = 0x29b00  
> sensor id 1 iq\_data 17a00 sensor\_data 29b00  
> VOE not init  
> VOE\_OUT\_CMD type 2 command fail -1  
> set ASP print off  
> ctx-\>enc\_info.frameLength \* 2 = 2048  
> ctx-\>enc\_info.frameLength \* 2 = 2048  
> ctx-\>enc\_info.frameLength \* 2 = 2048  
> interface 0 is initialized  
> interface 1 is initialized
> 
> RTSP[0] port: 554
> 
> RTSP[1] port: 555
> 
> RTSP[2] port: 556  
> kvs\_producer\_create…  
> ctx-\>enc\_info.frameLength \* 2 = 2048  
> fwin(1),enc\_en(0),IQ\_OFFSET = 0x17a00  
> fwin(1),enc\_en(0),SENSOR\_OFFSET = 0x29b00  
> sensor id 1 iq\_data 17a00 sensor\_data 29b00  
> npu[12345678] vipdrv vip\_drv\_init, video memory heap base: 0x77000000, size: 0x01000000  
> NN IRQ default priority : 0, set to 9  
> npu[12345678] HASHMAP 0x0x705822f0(process-ID) INIT SUCCESS  
> npu[12345678] DATABASE 0x0x705833fc(task-desc) INIT SUCCESS  
> npu[12345678] DATABASE 0x0x705833a8(memory-mgt) INIT SUCCESS  
> cfg\_size\_lib = 120, cfg\_size\_user = 120
> 
> Initializing WIFI …[Driver]: [HALMAC]  
> 11692M HALMAC\_MAJOR\_VER = 1  
> HALMAC\_PROTOTYPE\_VER = 4  
> HALMAC\_MINOR\_VER = 20  
> HALMAC\_PATCH\_VER =  
> [Driver]: The driver include MP  
> [Driver]: Ver = libwlan:2026.03.31.09.32\_b9.6\_8da5876be9c7aa226733778c75c3b38b242fedec  
> set yolo confidence thresh to 0.500000  
> set yolo NMS thresh to 0.300000  
> [0x12345678]read\_bin\_header[32], fail nbg magic not match, nbg is bad  
> [0x12345678]nbg\_fmt\_read\_fixed[268], fail to read nbg file fixed section  
> [0x12345678]nbg\_fmt\_read[570], fail to read nbg version=0xffffffff, status=-3  
> [0x12345678]nbg\_create\_network\_from\_memory[2076], fail to read nbg status=-3  
> [0x12345678]vip\_create\_network[188], fail to create network status=-3  
> npu[12345678] fail to set task desc index=-1 property status=-3  
> [0x12345678]viphal\_task\_set\_property[1457], fail to check task set property status=-3  
> error: error: vip\_create\_network.  
> [0x12345678]vip\_finish\_network[667], network object is NULL  
> [0x12345678]vip\_destroy\_network[399], network object is NULL  
> hal\_voe\_ready 0x0 0xbf1208  
> read fcs\_status 0x000000bf  
> [video\_init] uvcd iq is null, use default.  
> [video\_init] uvcd SNR is null, use default.  
> IQ:FW size (73960)  
> sensor:date 2026/3/4 version:RTL8735B\_VOE\_1.6.1.0  
> sensor:FW size (14464)  
> sensor timestamp: 2026/03/04  
> iq timestamp: 2024/09/13 14:00:00  
> voe\_heap malloc 0x70aa68e0, size 45077504  
> ISP:1 ENC:1 H265:1 NN:1  
> hal\_voe\_ready 0x0 0xbf1208  
> voe :RTL8735B\_VOE\_1.6.1.0  
> sensor:RTL8735B\_VOE\_1.6.1.0  
> hal :RTL8735B\_VOE\_1.7.0.0  
> load time sensor:180us iq:909us itcm:0us dtcm:0us ddr:0us ddr2:0us  
> Set H264 default HIGH profile  
> rc\_version RC\_v1  
> [video\_pre\_init\_procedure] START  
> [GRID Mode]: unused

Can you check and tell us what else we need to change to fix above mentioned issues with 32MB flash.

Thanks,

Yugandhar

---

<div class="post-metadata">

### Author: ![Pammy](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/pammy/32/936_2.png) [@Pammy](https://forum.amebaiot.com/u/Pammy)
#### Post date: [April 14, 2026, 9:32am UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651/8 "2026-04-14T09:32:26Z")

</div>

Hi @yugandhar,

> [@yugandhar](#):
>
> WiFi is not connecting to saved SSID even though fast connect enabled. When we connect using AT commands it is working and not connecting upon device restart.

Can I verify if the macro `ENABLE_FAST_CONNECT` is set to 1 in platform\_opts.h?

> [@yugandhar](#):
>
> NN model inference is not happening. So we checked the log messages and found some errors.

For this issue, in file [fwfs.c](https://github.com/Ameba-AIoT/ameba-rtos-pro2/blob/main/component/file_system/fwfs/fwfs.c) could you comment line 2285 `ATOMIC_CALL(nor_copy_read(data, curr_addr, size));`  
and uncomment  
line 2286 `ATOMIC_CALL(flash_stream_read(&nor_flash, (uint32_t)r->part_rec->start_addr + r->curr_pos + r->raw_offset, size, data));` and try again.

`nor_copy_read` API may not work for 32MB flash.

Thank you.

---

<div class="post-metadata">

### Author: ![yugandhar](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/yugandhar/32/2836_2.png) [@yugandhar](https://forum.amebaiot.com/u/yugandhar)
#### Post date: [April 16, 2026, 11:40am UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651/9 "2026-04-16T11:40:36Z")

</div>

Hi @Pammy ,

We verified the 32MB flash using flash test example provided in the Github repo and found that IO3 pin is not becoming 0 when the byte is like 0x48 when transmitting higher nibble 0x4 in quad IO mode, So the data on bus is visible as 0xC to the flash chip and when we read, it is appearing as 0xC8. Please check the below log messages.

Error: Loop = 1, Address = f04000, index = 72, Writedata = 48, Readdata = c8  
Error: Loop = 1, Address = f04000, index = 80, Writedata = 50, Readdata = d0

**We are seeing these type of errors at random addresses when we run the flash test everytime.**

This is the main reason for WiFi fast connect failures because the data becoming invalid on next boot because of signature mismatch or wrong SSID/PSK due to bit level errors.

Now, please tell us what settings need to change to fix this issue.

Thanks,

Yugandhar

---

<div class="post-metadata">

### Author: ![Pammy](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/pammy/32/936_2.png) [@Pammy](https://forum.amebaiot.com/u/Pammy)
#### Post date: [April 17, 2026, 10:19am UTC](https://forum.amebaiot.com/t/how-to-use-more-than-16mb-flash-on-amb82-mini/4651/10 "2026-04-17T10:19:36Z")

</div>

Hi @yugandhar,

Thank you for the findings.

I would like to discuss based on the HW perspective, the pattern somehow indicates that during Quad I/O operation, the IO3 (DQ3) line is not going LOW when required. As a result, the MSB of the transmitted nibble is always read as ‘1’, which causes the observed data mismatch.

Could you help with testing to clarify the following:

**Probe IO3 signal**

- Use a logic analyzer or oscilloscope to monitor IO3 during a write operation
- For example, when transmitting nibble `0x4 (0100)`, IO3 should be LOW
- If IO3 remains HIGH, this confirms the issue on that line

You can also provide me the waveform captured.

The issue is most likely related to IO3 not functioning correctly as a Quad data line.

Quad operation depends on the QE bit being enabled, I am also checking internally whether this is configured by default in our SDK. Will update on this again
