STM32F107启动文件分析(startup_stm32f10x_hd.s)

配置栈

Stack_Size      EQU    0x00000400      

;定义栈空间大小0x00000400个字节,即1Kbyte

                AREA    STACK, NOINIT, READWRITE, ALIGN=3

;伪指令AREA,定义一个新的代码段或者数据段

;STACK:段名,可以是任何段名。但是以一个数字开始的名称必须包含在竖杠号内,否则会产生一个缺失段名错误,例如,|1_DataArea|。有些名称是习惯性的名称,例如,|.text|用于表示由C 代码产生的代码段,或用于以某种方式与C 库关联的代码段。

;NOINIT:表示数据段是未初始化的或初始化为零。其只包含零初始化的空间保留命令SPACE 或DCB、DCD、DCDU、DCQ、DCQU、DCW 或DCWU。可以决定在链接时AREA 是未初始化的还是零初始化的。此处还可以为CODE、DATA等。

; READWRITE:表示此段可以读写,这是数据区域的默认情况

; ALIGN=3: ELF (可执行连接文件)的代码段和数据段是按2的多少次方的字节来对齐的,可以是0~31。默认情况下,ELF 在4字节边界上对齐。这里表示以8字节对齐

Stack_Mem       SPACE  Stack_Size

;分配一块Stack_Size大小的内存空间作为栈

__initial_sp

;表示栈空间顶地址

 

配置堆

Heap_Size       EQU    0x00000200

;定义堆空间大小0x00000200个字节,即512byte

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3

;同上

__heap_base

;表示堆空间起始地址

Heap_Mem        SPACE  Heap_Size

;分配一块Heap_Size大小的内存空间作为堆

__heap_limit

;表示堆空间的结束地址

 

声明代码对齐方式和指令集

PRESERVE8

;指定了以下代码以8byte对齐

                THUMB

;指定了以下代码为Thumb指令集

 

中断向量表

                AREA    RESET, DATA, READONLY

;同上

                EXPORT  __Vectors        ;中断向量表入口地址

                EXPORT  __Vectors_End        ;中断向量表结束地址

                EXPORT  __Vectors_Size       

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值