新聞中心

ARM連接器錯誤一則

作者: 時(shí)間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
在用RVCT3.1工作編寫ARM程序的時(shí)候,出現(xiàn)了一個連接錯誤:Error: L6915E: Library reports error: scatter-load file declares no heap or stack regions and __user_initial_stackheap is not defined.在網(wǎng)上找了一些資料,原因是使用了自定了的scat文件后,編譯器沒有沒有定義Image
ZI
Limit,默認(rèn)提供的__user_initial_stackheap()函數(shù)會用到這個值,此時(shí)有兩個解決辦法:

本文引用地址:http://m.butianyuan.cn/article/201611/319971.htm

1.改寫scat文件,定義ZI段,并將*(+ZI)數(shù)據(jù)放入該段.

2.覆蓋系統(tǒng)默認(rèn)提供 的__user_initial_stackheap()函數(shù),比如可以這樣做:

[plain]view plaincopy
print?
  1. /*
  2. *默認(rèn)提供的__user_initial_stackheap()函數(shù)會用到Image
    ZI
    Limit這個值,
  3. *因?yàn)樵谑褂肧cat時(shí)這個值在默認(rèn)情況下不被定義,所以要覆蓋同名的庫函數(shù)
  4. */
  5. __value_in_regsstruct__initial_stackheap__user_initial_stackheap(unsignedi0,unsignedi1,unsignedi2,unsignedi3)
  6. {
  7. struct__initial_stackheapconfig;
  8. config.heap_base=i1;
  9. config.heap_limit=i1;
  10. config.stack_base=i1;
  11. config.stack_limit=0;
  12. returnconfig;
  13. }
此外,還要加上#include ,連接的時(shí)候加上--keep __user_initial_stackheap否則還會提示該函數(shù)沒有定義.


關(guān)鍵詞: ARM連接器錯誤一

評論


技術(shù)專區(qū)

關(guān)閉