当前位置:首页 > 单片机 > 单片机
[导读]概况:STM32库版本:V3.5.0startup_stm32f10x_hd.s文件模块功能:设置初始堆栈指针;用ISR异常处理程序地址来设置向量表条目;配置系统时钟,配置安装在STM3210E-EVAL板子上被用作数据内存外部sram;设置初始PC程序计

概况:

STM32库版本:V3.5.0

startup_stm32f10x_hd.s文件模块功能:


设置初始堆栈指针;

用ISR异常处理程序地址来设置向量表条目;

配置系统时钟,配置安装在STM3210E-EVAL板子上被用作数据内存外部sram;

设置初始PC程序计数器 指向__iar_program_start代码段地址。

在这个文件中的模块被包含在libs库中,可能被替换通过任何用户定义的模块--被PUBLIC定义的_program_start或者用户定义的一个开始标识;

为了覆盖在库中定义的cstartup,只需添加被修改版本到 工作台项目;

矢量表通常是位于地址0;

当在RAM中调试时,矢量表位于ram中,至少对齐2^6;

对于C-SPY来说,“__vector_table”有特殊的意义;

堆栈指针SP能够在__vector_table中找到,如果NVIC(嵌套中断向量控制器) vectortable register (VTOR)的地址不为0,则初始化到这块地址。

启动代码解析:

为简单 明朗些,分成几部分展示:

关于IAR指令,参见《EWARM_AssemblerReference.ENU.pdf》文档。

.icf内存配置文件,与这个启动文件也是有大大的关系。

关于.icf 结构、功能分析,参见--stm32存储器结构、 IAR 开发环境下的.icf 文件、.map文件 解析
1、


;;格式:PROGRAMsymbol---其中symbol为分配模块的名字;;开始一个模块;PROGRAM和NAME指令的别名

MODULE?cstartup;汇编模块开始

;;Forwarddeclarationofsections.前置段声明

;;格式:SECTIONsection:type[flag][(align)]

;;NOROOT表示如果这个段里的标号(如CSTACK/.intvec等)没引用,则被linker舍弃;ROOT则是一定不舍弃。

;;(1)表示字节对齐数,为2的幂,(2)表示4字节对齐,(3)表示8字节对齐

;;定义各种模式STACK,具体大小、位置是由linker文件(IAR中.icf)决定的,这些STACK都定义在内部RAM中

SECTIONCSTACK:DATA:NOROOT(3);CSTACK数据段

;;通常INTVEC段被连接到flash闪存的开始地址,应该在.icf文件中有定义,如stmf10X系列闪存起始地址:0x08000000

SECTION.intvec:CODE:NOROOT(2);.intvec代码段

EXTERN__iar_program_start;;外部变量声明

EXTERNSystemInit;SystemInit声明,于外部定义

PUBLIC__vector_table;;外部可调用;向其他模块输出符号。


2、


DATA

;;中断向量表

__vector_table;;格式:DCDexpr[,expr]…;Generates32-bitconstants.生成32bit常数

DCDsfe(CSTACK);;格式:SFE(section[{+|-}offset])返回section段结束地址,SFB(section)返回section段开始地址;

DCDReset_Handler;ResetHandler

DCDNMI_Handler;NMIHandler

DCDHardFault_Handler;HardFaultHandler

DCDMemManage_Handler;MPUFaultHandler

DCDBusFault_Handler;BusFaultHandler

DCDUsageFault_Handler;UsageFaultHandler

DCD0;Reserved

DCD0;Reserved

DCD0;Reserved

DCD0;Reserved

DCDSVC_Handler;SVCallHandler

DCDDebugMon_Handler;DebugMonitorHandler

DCD0;Reserved

DCDPendSV_Handler;PendSVHandler

DCDSysTick_Handler;SysTickHandler

;ExternalInterrupts

DCDWWDG_IRQHandler;WindowWatchdog

DCDPVD_IRQHandler;PVDthroughEXTILinedetect

DCDTAMPER_IRQHandler;Tamper

DCDRTC_IRQHandler;RTC

DCDFLASH_IRQHandler;Flash

DCDRCC_IRQHandler;RCC

DCDEXTI0_IRQHandler;EXTILine0

DCDEXTI1_IRQHandler;EXTILine1

DCDEXTI2_IRQHandler;EXTILine2

DCDEXTI3_IRQHandler;EXTILine3

DCDEXTI4_IRQHandler;EXTILine4

DCDDMA1_Channel1_IRQHandler;DMA1Channel1

DCDDMA1_Channel2_IRQHandler;DMA1Channel2

DCDDMA1_Channel3_IRQHandler;DMA1Channel3

DCD DMA1_Cha

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭