本文共 1175 字,大约阅读时间需要 3 分钟。
Cortex-Mx启动,备忘,以免将来忘记。中断向量表不用说,从重置中断开始吧
LDR R0, =SystemInitBLX R0LDR R0, =__mainBX R0
这里一共就执行了两个函数,SystemInit和__main。
我们一般在SystemInit里面配置系统时钟,这里跳过。__main是我们今天的重点。
__main:0x080000C0 4804 LDR r0,[pc,#16] ; @0x080000D40x080000C2 4685 MOV sp,r0 #设置栈顶 _main_scatterload:0x080000C4 F000F956 BL.W __scatterload (0x08000374) #分散加载(拷贝初始值、清零变量) __main_after_scatterload:0x080000C8 F000F8D4 BL.W __cpp_initialize__aeabi_ (0x08000274) #C++初始化(全局对象构造函数执行) _main_cpp_init:0x080000CC 4800 LDR r0,[pc,#0] ; @0x080000D00x080000CE 4700 BX r0 #进入C++的main函数
分散加载这里将会初始化我们的全局静态变量
.text:00000000 __scatterload_rt2.text:00000000 LDR R4, =Region$Table$Base.text:00000002 MOVS R5, #1.text:00000004 LDR R6, =Region$Table$Limit.text:00000006 B loc_14.text:00000008 ; ---------------------------------------------------------------------------.text:00000008.text:00000008 loc_8 ; CODE XREF: __scatterload_rt2+16
转载地址:http://nxpzl.baihongyu.com/