Cortex-M3启动深度解析

简介: Cortex-Mx启动,备忘,以免将来忘记。中断向量表不用说,从重置中断开始吧   LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0   这里一共就执行了两个函数,SystemInit和__main。

Cortex-Mx启动,备忘,以免将来忘记。
中断向量表不用说,从重置中断开始吧

 

LDR     R0, =SystemInit
BLX     R0
LDR     R0, =__main
BX      R0

 

这里一共就执行了两个函数,SystemInit和__main。

我们一般在SystemInit里面配置系统时钟,这里跳过。

__main是我们今天的重点。

 

                 __main:
0x080000C0 4804      LDR      r0,[pc,#16]  ; @0x080000D4
0x080000C2 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]  ; @0x080000D0
0x080000CE 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
我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
相关文章
|
4月前
|
边缘计算 编译器 数据中心
X86架构与Arm架构的主要区别分析
X86架构与Arm架构的主要区别分析
468 0
|
8天前
|
数据采集 测试技术 芯片
【DACx0502】具有精密内部基准的 DACx0502 简介及驱动应用示例
【DACx0502】具有精密内部基准的 DACx0502 简介及驱动应用示例
|
8天前
|
传感器 开发工具 芯片
【ZYNQ】ZYNQ7000 XADC 及其驱动示例
【ZYNQ】ZYNQ7000 XADC 及其驱动示例
|
1月前
|
存储 缓存 安全
【ARM架构】ARMv8-A 系统中的安全架构概述
【ARM架构】ARMv8-A 系统中的安全架构概述
32 0
|
3月前
|
存储 Ubuntu Linux
ARM-Linux开发与MCU开发的不同之处分析
ARM-Linux开发与MCU开发的不同之处分析
22 0
|
6月前
|
Java 编译器 测试技术
安谋科技(Arm China)刘庆川:借助Arm SIMD指令提升Java应用性能
2023年9月22日,系列课程收官的最后一节《借助Arm SIMD指令提升Java应用性能》正式上线,由安谋科技(Arm China)高级工程师刘庆川主讲,内容涵盖:SIMD 指令及 Java VM介绍、如何在 Java 应用中使用 SIMD 指令、Java Vector API在 倚天上的案例分析。本期节目在阿里云官网、阿里云微信视频号、阿里云钉钉视频号、InfoQ 官网、阿里云开发者微信视频号、阿里云创新中心直播平台 & 微信视频号同步播出,同时可以点击【https://developer.aliyun.com/topic/ecs-yitian】进入【倚天实例迁移课程官网】了解更多内容。
安谋科技(Arm China)刘庆川:借助Arm SIMD指令提升Java应用性能
|
芯片 内存技术
基于ARM Cortex-M0+内核的bootloader程序升级原理及代码解析
基于ARM Cortex-M0+内核的bootloader程序升级原理及代码解析
高通平台开发系列讲解(PCIE篇)图解PCIe EP驱动初始化流程
高通平台开发系列讲解(PCIE篇)图解PCIe EP驱动初始化流程
808 0
高通平台开发系列讲解(PCIE篇)图解PCIe EP驱动初始化流程
|
存储 安全 程序员
鲲鹏开发重点––ARM CPU的推测执行
MMU,内存管理单元,顾名思义就是用于管理内存的部件,这是CPU内部模块名,需要操作系统来进行空间配置和管理,所以,有时提到的MMU并不完全指硬件部分,也包括软件部分。其作用就是完成VA虚拟地址到PA物理地址的转换,页面大小管理,同时配置地址空间的访问属性,包括Normal(乱序访问)和Device(定序访问)进行区分,cache写回,cache写透,关闭cache等等,配置地址空间的访问权限。
405 0
鲲鹏开发重点––ARM CPU的推测执行
|
芯片
74HC595芯片的IO扩展(串转并)实验(包含硬件原理和软件编程解析和代码)
74HC595芯片的IO扩展(串转并)实验(包含硬件原理和软件编程解析和代码)
272 1
74HC595芯片的IO扩展(串转并)实验(包含硬件原理和软件编程解析和代码)

热门文章

最新文章