W801的FLASH布局如上圖,留給應用程序的FLASH只有1M左右,DEMO多打開幾個就超過了,編譯會報錯誤,諮詢幾個問題:
1、這個布局圖裡各個部分都是固定嗎?在不影響正常使用的時候哪些部分肯定不能動,哪些部分有可能可以修改?
2、User Area區域如果沒有使用能設小嗎?能不能為0?如果可以如何設置?
3、如果不遠程更新程序,使用不到Image OTA Area,這個區域可以設小或設為0嗎?如何設置?
編譯報錯的話要具體情況具體分析,這個不一定是程序空間不夠,當然也不能直接否認,需要看具體報錯內容。
1、Flash 布局各個部分的不是嚴格固定的,是可以修改的,像RF SYSTEM PARAM 這些最好不要改動的
2、User Area 區域如果你的整個系統中確實沒有要寫入的東西是,可以變小的,將空間全部用於存放程序代碼都是可以的 只需要找到 gcc_csky.ld 鏈接文件,修改I-SRAM 的長度就可以,注意需要你計算ORIGIN + LENGTH 的結果不要超過SYSTEM PARAM 的其實地址就可以。
3、如果遠程功能確實是用不上的話也是可以將其直接劃分為程序空間的<程序中OTA升級的代碼就不要使用了,如果有需要的話需要修改對應的宏定義>,做法基本和上一步一致,所不同的是,要修改 ORIGIN 和 LENGTH ,需要注意的是 程序的 ORIGIN 要保持0x400地址對齊,至於原因的話手冊上講的很清楚,當然通過內核手冊也可以知道原因;這裡就不再贅述了;Run Image Header 地址可以緊挨著SecBootImage Area 的結束地址,然後LENGTH 需要加上對應的長度即可,修改好後找到aft_build_project.sh腳本文件,將其中的run_img_header 和run_img_pos 改成你定義的地址就可以了,重新編譯代碼就可以了
非常感謝,經測試已經解決問題!