自己写了个启动代码,又写了个程序,发现进入不了 main() 就 software interrupt,这是个死循环,
不知怎么回事,经过单步运行,发现进入 __main 后 又调用了一些函数才进入main()
之前有个 __user_initial_stackheap:
__user_initial_stackheap [0xe92d4000] stmfd r13!,{r14}
00000378 [0xe24dd014] sub r13,r13,#0x14
0000037c [0xe1a0100d] mov r1,r13
00000380 [0xe28d2004] add r2,r13,#4
00000384 [0xe5812000] str r2,[r1,#0]
00000388 [0xe3a00016] mov r0,#0x16
0000038c [0xef123456] swi 0x123456
是它产生的 swi
__user_initial_stackheap 我重新实现过,好像没有起作用,仔细看了生成的 list 文件,发现里面有两
个 __user_initial_stackheap 我的那个是 Local Symbols,才明白我忘了 export 。
export __user_initial_stackheap
代替了系统的__user_initial_stackheap就一切OK了。