ESP8266編譯錯誤提示 ... eagle.app.v6.out section `.irom0.text' will not fit in region `irom0_0_seg'


  這些天想研究一下esp8266,於是從官網下載sdk想試試。這個開發環境搭建了半天也按網上的教程把sdk里的文件都整理好后編譯。可編譯提示錯誤,提示如下

19:29:03 **** Incremental Build of configuration Default for project ESP8266_NONOS_SDK ****
make all 
make[1]: Entering directory '/cygdrive/i/BaiduYunDownload/esp8266/esp8266 sdk/ESP8266_NONOS_SDK/app'
make[2]: Entering directory '/cygdrive/i/BaiduYunDownload/esp8266/esp8266 sdk/ESP8266_NONOS_SDK/app/user'
make[2]: Leaving directory '/cygdrive/i/BaiduYunDownload/esp8266/esp8266 sdk/ESP8266_NONOS_SDK/app/user'
xt-xcc  -L../lib -nostdlib -T../ld/eagle.app.v6.ld -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,--start-group -lc -lgcc -lhal -lphy -lpp -lnet80211 -llwip -lwpa -lcrypto -lmain -ljson -lupgrade -lssl -lwps -lsmartconfig -lairkiss user/.output/eagle/debug/lib/libuser.a                     -lat -Wl,--end-group -o .output/eagle/debug/image/eagle.app.v6.out 
/opt/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .output/eagle/debug/image/eagle.app.v6.out section `.irom0.text' will not fit in region `irom0_0_seg'
collect2: error: ld returned 1 exit status
../Makefile:363: recipe for target '.output/eagle/debug/image/eagle.app.v6.out' failed
make[1]: *** [.output/eagle/debug/image/eagle.app.v6.out] Error 1
make[1]: Leaving directory '/cygdrive/i/BaiduYunDownload/esp8266/esp8266 sdk/ESP8266_NONOS_SDK/app'
Makefile:308: recipe for target '.subdirs' failed
make: *** [.subdirs] Error 2
"make all" terminated with exit code 2. Build might be incomplete.

  網上找了半天看到有人說把sdk根目錄的Makefile文件 第23行BOOT?=none 改成new, APP?=0 改成1 ,SPI_SIZE_MAP?=0改成6 如下圖

 

   改完之后居然真的編譯通過。可是發現又不對勁了。這個boot改變了就意味的功能都不一樣了。於是又去網上搜了半天總是看明白了有boot的是支持雲端升級的沒有boot是不支持雲端升級的。然后我對比后發現boot所需空間很小就4可k左右,而沒有boot功能的bin文件有40k左右。那如果不要boot,就不能改Makefile文件還是BOOT?=none ,APP?=0。可是這樣編譯又提示錯誤。

 

 

 

   又因為這個問題研究了半天終於讓我找到問題的原因了。編譯所產生的燒錄文件eagle.irom0text.bin大小352kb,而ld文件eagle.app.v6.ld中的irom0_0seg ,len =0x3c000,這才240k。如下圖

 

 

  於是我換算了一下352k十六進制 0x58000如下圖,

 

 

 

 

 

  再預留大一些把ld文件的ld文件eagle.app.v6.ld中的irom0_0seg 改成len=0x59000編譯成功如下圖。

編譯前最后先make clean一下。這個問題花了不少時間因為之前對這個也不了解。如果有遇到相同問題的也希望能幫到初學者少走些彎路。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM