0
Cheng Ting Wu

目前我在使用貴公司的Ameba RTL8710開發物聯網感測器節點

RTL8710的內部Flash有1MBytes

是將MXIC MX25L8006E和ARM-Cortex-M3與IEEE 802.11n PHY/MAC整合在一顆SOC內

且ARM-Cortex-M3是透過SPI和SOC內部的MX25L8006E做通訊

Flash前面的512KB用來存放程式碼

後面的512KB則是可以拿來存放OTA Image或用戶資料

在我的專案中我拿這空間存放網頁資料

但是奇怪的是每當我透過IAR使用J-Link下載程式到RTL8710後看起來都正常運作

下載時也有使用到Flash Loader

Serial Port上面也有印出Flash被寫入的訊息如圖所示

這程式在按板子上的reset前都有正常的執行

但是離開除錯模式後按了板子上的reset按鈕後發現程式就執行不起來了

同樣的動作用J-Link重燒再reset都是一樣的結果

試了好幾塊板子也是

一直跳出Validation Error的錯誤訊息如圖所示

很玄的是如果用mBED CMIS-DAP 的JTAG燒錄完後reset程式又能正常執行

但是reset幾次後如上圖一樣的問題又出現了

 

此外,更奇怪的是當我在寫入資料到Flash後面512KB空間時

時常發生資料寫錯的狀況

導致網頁顯示錯誤

問題幾乎都是有其出幾個byte甚至連續幾十個byte寫錯

讀出來資料中挫的那些byte的值幾乎都是0xFF

導致寫進去某個Sector的資料和從那個Setoor讀出的資料時常有不一致的情況

要重複寫好幾遍才會寫入和讀出一致

然而這問題會隨著寫入Flash的次數增加而有變嚴重的傾向

一開始使用時重複對某的Sector寫個兩三次寫入和讀出的資料就一致了

但是使用兩個月後就必須要重覆十幾次甚至幾百次才會寫入和讀出資料一致

不知道RTL8710的內部Flash是出了甚麼問題??

需要在同一Sector重複寫入好幾次一樣的資料讀出來的資料才會和寫入資料一致

sean 回答了