微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32 arm汇编(thumb-2指令集)启动代码分析

STM32 arm汇编(thumb-2指令集)启动代码分析

时间:12-02 来源:互联网 点击:

;//Rset_Handler的实现 利用PROC、ENDP这一对伪指令把程序段分为若干个过程,使程序的结构加清晰
EXPORT Reset_Handler [WEAK] ;//在外部没有定义该符号时导出该符号,见HELP中[WEAK]
IMPORT __main ;//导入符号,__main为 运行时库提供的函数;完成堆栈,堆的初始话
LDR R0, =__main ;//等工作,会调用下面定义的__user_initial_stackheap;
BX R0 ;//跳到__main,进入C的世界
ENDP ;过程的结束
ALIGN
; User Initial Stack & Heap
IF :DEF:__MICROLIB ;//如果使用micro lib,micro lib 描述见armlib.chm

EXPORT __heap_base
EXPORT __heap_limit ;//只导出几个定义

ELSE ;//如果使用默认C运行时库

IMPORT __use_two_region_memory
EXPORT __user_initial_stackheap
__user_initial_stackheap ;//则进行堆栈和堆的赋值,在__main函数执行过程中调用。
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
LDR R3, = Stack_Mem
BX LR
ALIGN
ENDIF
END ;//OK ,完了

http://blog.csdn.net/chehlcy/archive/2010/01/09/5164472.aspx

http://files.ourdev.cn/bbs_upload134190/files_11/ourdev_495775.txt

======================================================================

Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
LDR R0, =__main
BX R0
ENDP
这段代码什么意思。
有2个地方不理解
一:PROC ENDP
二: [WEAK] 什么意思

-------------------------------------------------------------------------------

一:PROC为子程序开始,ENDP为子程序结束
二:[weak]的意思就是弱。
怎么弱呢?如果你在其他地方写一个同名函数,比如Reset_handler, 你写的这个函数就可以取代它这个函数了。

语法格式:
EXPORT 标号 {[WEAK]}
EXPORT 伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。 EXPORT可用 GLOBAL 代替。标号在程序中区分大小写, [WEAK] 选项声明其他的同名标号优先于该标号被引用。
使用示例:
AREA Init , CODE , READONLY
EXPORT Stest ;声明一个可全局引用的标号Stest……
END

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top