EDA365电子论坛网
标题: ARM连接器错误 [打印本页]
作者: dreams5678 时间: 2021-3-26 15:10
标题: ARM连接器错误
在用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文件后,编译器没有没有定义ImageZI/ }3 R5 r8 S7 X$ \2 w5 g. K6 J
Limit,默认提供的__user_initial_stackheap()函数会用到这个值,此时有两个解决办法:7 S5 `$ D6 ~; `" R6 |
1.改写scat文件,定义ZI段,并将*(+ZI)数据放入该段.
2.覆盖系统默认提供 的__user_initial_stackheap()函数,比如可以这样做:
# V, T( ?" T5 S% @& x( F
[plain]view plaincopy/ Z6 E0 l2 }3 v5 t0 h
print?
! A% l- ~' ~ r, {6 V, j
+ O/ u: v$ l6 a* f# b/ b% E0 t- /*
- *默认提供的__user_initial_stackheap()函数会用到ImageZI
* |: D5 x, P% u( iLimit这个值, - *因为在使用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;
- }
1 n7 t. J4 d5 f8 ^+ a' h- {$ w
* y( O* Z+ `# X3 R! J% t) R此外,还要加上#include ,连接的时候加上--keep __user_initial_stackheap否则还会提示该函数没有定义. 4 P, p! f3 g9 A
作者: nevadaooo 时间: 2021-3-26 16:22
学习了
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) |
Powered by Discuz! X3.2 |