先來看看啟動**中的偽操作和偽指令
equ
用於定義常量,相當於c中的巨集定義
如stack_size equ 0x00000400 ——— #define stack_size 0x00000400
align
位元組對齊方式
align = 3
export
相當於宣告了乙個全域性變數
export __vectors //中斷向量的起始位址
export __vectors_end //中斷向量的結束位址
export __vectors_size //中斷向量的空間大小
import
相當c語言的extern
import __main ————— extern __main
dcd
dcd expr
分配一段連續的記憶體單元,並且用expr初始化
__vectors dcd __initial_sp ;top of statck———–__vectors = __initial_sp
dcd reset_handler ;reset handler
space
space expr
space用於分配一塊大小為expr的連續記憶體,並且初始化為0
area sectionname ….
area常用來定義乙個段,段名為sectionname,attr位段的屬性
code **段屬性,預設屬性位readonly
data 資料段,預設屬性為readwrite
readonly
readwrite
align
noint 表示資料段初始化為0
棧定義
stack_size equ 0x00000400
area stack,noint,readwrite,align=3
stack_mem space stack_size
__initial_sp
段名:stack
段大小:stack_size=0x00000400
段屬性:readwrite
段的對齊方式:align=3
上面的意思是從stack_mem初始化stack_size大小的記憶體,定義棧底為__initial_sp
堆的定義
heap_size equ 0x00000200
area heap,noint,readwrite,align=3
__heap_base
heap_mem space heap_size
__heap_limit
段名:heap
段大小:heap_size =0x00000200
段屬性:readwrite
段的對齊方式:align=3
stm32啟動檔案
這是st提供的3個啟動檔案,分別適用於不同容量的stm32晶元。這三個檔案為 startup stm32f10x ld.s startup stm32f10x md.s startup stm32f10x hd.s 其中,ld.s適用於小容量 產品 md.s適用於中等容量產品 hd適用於大容量產品 ...
stm32的啟動檔案
libraries cmsis core cm3 startup arm資料夾下是由彙編編寫的系統啟動檔案,不同的檔案對應不同的晶元型號。cl 互聯型產品,stm32f105 107系列 vl 超值型產品,stm32f100系列 xl 超高密度 容量 產品,stm32f101 103系列 ld 低密...
stm32啟動檔案分析
這篇文章主要是分析stm32啟動檔案,啟動檔案是由彙編編寫的,檔名為startup stm32f40 41 s。啟動檔案最主要的功能就是初始化堆疊指標sp,執行復位程式進入c語言main函式 1.初始化堆疊空間大小,定義棧頂位置 堆起始位置等等 2.定義中斷向量表,初始化sp指標 3.reset h...