博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cortex-M3启动深度解析
阅读量:6821 次
发布时间:2019-06-26

本文共 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/

你可能感兴趣的文章