在用RVCT3.1作业编写ARM程序的时分,呈现了一个衔接过错:Error: L6915E: Library reports error: scatter-load file declares no heap or stack regions and __user_initial_stackheap is not defined.在网上找了一些材料,原因是运用了自定了的scat文件后,编译器没有没有界说Image
Limit,默许供给的__user_initial_stackheap()函数会用到这个值,此刻有两个解决办法:
1.改写scat文件,界说ZI段,并将*(+ZI)数据放入该段.
2.掩盖体系默许供给 的__user_initial_stackheap()函数,比方能够这样做:
[plain]view plaincopy
print?
- /*
- *默许供给的__user_initial_stackheap()函数会用到Image
ZI Limit这个值,
- *由于在运用Scat时这个值在默许情况下不被界说,所以要掩盖同名的库函数
- */
- __value_in_regsstruct__initial_stackheap__user_initial_stackheap(unsignedi0,unsignedi1,unsignedi2,unsignedi3)
- {
- struct__initial_stackheapconfig;
- config.heap_base=i1;
- config.heap_limit=i1;
- config.stack_base=i1;
- config.stack_limit=0;
- returnconfig;
- }
此外,还要加上#include