請求幫忙解惑:因Flash Memory存如數據導致無法啟用攝影鏡頭的問題

我目前在開發Ameba AMB82-Mini的時候,因為需要將Wifi的SSID與Password存在Flash Memory中,我發現一旦存入後,我要啟用鏡頭就會出現失敗的狀況。原本以為是呼叫順序的問題,但是反覆測試的結果,我發現我只要不在Flash Memory寫入任何數據,就會是正常的。請問有辦法解決嗎?

我使用Arduino IDE, AMB82-Mini SDK版本是4.0.9-20250620的版本。

您好 @louischuang

您可以參考以下:
Flash memory 範例 - Flash Memory — Ameba Arduino AIoT Documentation v1.1 documentation
Flash layout - Flash Layout — AmebaPro2's Documentation v0.1 documentation

這裏有提到 Wifi-ssid data 是放在 0xf00020-0x1000000。啟用鏡頭出現失敗的狀況可能是您存 SSID 和 password 的位置覆蓋掉 ISP IQ 的部分,而這些設定是相機啟動時必要的。想請問您這邊是將 SSID 和 password 寫入 Flash 的哪個位址區段?

我目前是設定在 FLASH_MEMORY_APP_BASE → 0xFD000

#define NOR_FLASH_SIZE 0x1000000//0x100000
#define FLASH_MEMORY_APP_BASE 0xFD0000//0xFD000

@louischuang 這邊的位置一直以來都是寫錯的,你修正成這樣後應該就可以正常使用了。

@pammyleong 如果我這邊沒錯的話,再麻煩你們下一版SDK一併修正~

太感謝了,晚上回家後我再來試試看!

目前這個問題似乎沒有解決:

10:30:09.204 → [video_voe_presetting] fps:30 w:1920 h:1080

10:30:09.204 →

fwin(1),enc_en(0),IQ_OFFSET = 0x17b60

10:30:09.204 →

fwin(1),enc_en(0),SENSOR_OFFSET = 0x2fba0

10:30:09.204 →

sensor id 1 iq_data 17b60 sensor_data 2fba0

10:30:09.204 →

VOE not init

10:30:09.204 → VOE_OUT_CMD type 2 command fail -1

10:30:09.238 →

hal_voe_ready 0x0 0xbf1208

10:30:10.223 →

read fcs_status 0x000000bf

10:30:10.223 →

[video_init] uvcd iq is null, use default.

10:30:10.223 →

[video_init] uvcd SNR is null, use default.

10:30:10.223 →

IQ:FW size (98342)

10:30:10.255 →

sensor:date 2024/9/12 version:RTL8735B_VOE_1.5.7.0

10:30:10.255 →

sensor:FW size (5412)

10:30:10.255 →

sensor timestamp: 2024/09/12

10:30:10.255 →

iq timestamp: 2023/05/15 14:48:54

10:30:10.255 →

voe_heap malloc 0x704ca700, size 11722496

10:30:10.255 →

ISP:1 ENC:1 H265:1 NN:1

10:30:10.255 →

hal_voe_ready 0x0 0xbf1208

10:30:10.255 →

voe :RTL8735B_VOE_1.6.2.0

10:30:10.288 →

sensor:RTL8735B_VOE_1.5.7.0

10:30:10.288 →

hal :RTL8735B_VOE_1.6.2.0

10:30:10.288 →

load time sensor:151us iq:2707us itcm:0us dtcm:0us ddr:0us ddr2:0us

10:30:10.288 →

[video_pre_init_procedure] START

10:30:10.322 →

VOE command wait ACK timeout 0x0 != 0x206

10:30:11.300 →

VOE cmd 0x206 ACK timeout 1000ms.

10:30:11.300 →

VOE_OPEN_CMD command fail

10:30:11.300 → hal_video_open fail

10:30:11.300 → hal_voe_ready 0x0 0x1718

10:30:11.332 →

10:30:11.365 →

[VID Err]Please check sensor id first,the id is 1

當我執行截圖時,會出現以下訊息後,整個開發版就當掉了:

10:32:23.497 → VOE not init
10:32:23.497 → VOE_OUT_CMD type 2 command fail -1

@Howard 想請教一個問題,如果Flash Memory寫入的位置正確的話,每次重新修改Arduino程式重新燒錄後,應該不會影響儲存資料的位置,不知道我的理解對嗎? 目前這也是我困擾的問題之一,因為後續想要實作OTA, 不希望一更新韌體就會遺失掉已經儲存的數據