当前位置:首页 > 单片机 > 单片机
[导读] 想要读懂启动文件,需要一些基本的汇编基础。 1 在汇编语言中,注释是 ; 2汇编ARM指令DCDDCD ( DCDU )用于分配一片连续的字存储单元并用指定的数据初始化。 语法格式: 标号 DCD (或 DCDU ) 表达式 DCD (或 DC

想要读懂启动文件,需要一些基本的汇编基础。

1 在汇编语言中,注释是 ;

2汇编ARM指令DCD

DCD ( DCDU )用于分配一片连续的字存储单元并用指定的数据初始化。

语法格式:
标号 DCD (或 DCDU ) 表达式

DCD (或 DCDU )伪指令用于分配一片连续的字存储单元并用伪指令中指定的表达式初始化。其中,表达式可以

为程序标号或数字表达式。 DCD 也可用 “ & ” 代替。

用 DCD 分配的字存储单元是字对齐的,而用 DCDU 分配的字存储单元并不严格字对齐。

使用示例:
DataTest DCD 4 , 5 , 6 ;分配一片连续的字存储单元并初始化。

3 [weak] 的意思是该函数优先级比较弱,如果其它地方定义了一个同名函数,那么此处的这个函数就被取代了。


语法格式为 EXPORT 标号 {[WEAK]} 。EXPORT 可用GLOBAL代替。

4AREA指令的理解

AREA指令是一个伪指令,用于段定义。ARM汇编程序由段组成,段是相对独立的指令或数据单位,每个段由AREA

伪指令定义,并定义段的属性。


AREA参数说明:


*STACK——AREA指令的一个参数,定义段名称


*NOINIT——AREA指令的一个参数,指定本数据段仅仅保留了内在单元,而将句初始值写入内存单元,此时内存单元值初始化为0


*READWRITE——指定本段为可读可写,数据段默认为READWRITE.


READWRITE(读写)、READONLY(只读)


*ALIGN——也是一个伪指令,指定对齐方式。ALIGN n 指令的对齐值有两种选择:n或者2^n


例子:开辟一个堆栈段,段名为STACK,定义为可读可写,将内存单元初始化为0,对齐方式为8字节对齐。


AREA STACK,NOINIT,READWRITE,ALIGN=3


;********************(C)COPYRIGHT2011STMicroelectronics********************

;*FileName:startup_stm32f10x_hd.s

;*Author:MCDApplicationTeam

;*Version:V3.5.0

;*Date:11-March-2011

;*Description:STM32F10xHighDensityDevicesvectortableforMDK-ARM

;*toolchain.

;*Thismoduleperforms:

;*-SettheinitialSP

;*-SettheinitialPC==Reset_Handler

;*-SetthevectortableentrieswiththeexceptionsISRaddress

;*-Configuretheclocksystemandalsoconfiguretheexternal

;*SRAMmountedonSTM3210E-EVALboardtobeusedasdata

;*memory(optional,tobeenabledbyuser)

;*-Branchesto__mainintheClibrary(whicheventually

;*callsmain()).

;*AfterResettheCortexM3processorisinThreadmode,

;*priorityisPrivileged,andtheStackissettoMain.

;*<<>>

;*******************************************************************************

;THEPRESENTFIRMWAREWHICHISFORGUIDANCEONLYAIMSATPROVIDINGCUSTOMERS

;WITHCODINGINFORMATIONREGARDINGTHEIRPRODUCTSINORDERFORTHEMTOSAVETIME.

;ASARESULT,STMICROELECTRONICSSHALLNOTBEHELDLIABLEFORANYDIRECT,

;INDIRECTORCONSEQUENTIALDAMAGESWITHRESPECTTOANYCLAIMSARISINGFROMTHE

;CONTENTOFSUCHFIRMWAREAND/ORTHEUSEMADEBYCUSTOMERSOFTHECODING

;INFORMATIONCONTAINEDHEREININCONNECTIONWITHTHEIRPRODUCTS.

;*******************************************************************************

;Amountofmemory(inbytes)allocatedforStack

;Tailorthisvaluetoyourapplicationneeds

;StackConfiguration

;StackSize(inBytes)<0x0-0xFFFFFFFF:8>

;

Stack_SizeEQU0x00001000;定义栈大小为40960x1000=4096

AREASTACK,NOINIT,READWRITE,ALIGN=3

Stack_MemSPACEStack_Size

__initial_sp

;HeapConfiguration

;HeapSize(inBytes)<0x0-0xFFFFFFFF:8>

;

Heap_SizeEQU0x00001000;定义堆的空间为1024

AREAHEAP,NOINIT,READWRITE,ALIGN=3

__heap_base

Heap_MemSPACEHeap_Size

__heap_limit

PRESERVE8

THUMB

;VectorTableMappedtoAddress0atReset

AREARESET,DATA,READONLY

EXPORT__Vectors

EXPORT__Vectors_End

EXPORT__Vectors_Size

__VectorsDCD__initial_sp;TopofStack

DCDReset_Handler;ResetHandler

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

STM32的内存管理效率直接影响系统性能,以某智能电表项目为例,其数据采集模块每秒需处理12000次ADC采样,传统malloc/free机制导致内存碎片率超过40%,系统运行12小时后出现内存分配失败。通过引入ART内...

关键字: STM32 内存加速器

在工业控制、音频处理等实时性要求严苛的场景中,传统单缓冲DMA模式常因数据覆盖导致系统崩溃。以某自动化产线为例,当PLC以115200bps速率接收Modbus RTU指令时,若采用单缓冲模式,CPU处理延迟超过50μs...

关键字: STM32 多线程DMA

以STM32F103为例,当使用USART1以115200bps速率连续接收数据时,若采用传统轮询方式,每接收1字节需至少5条指令(读DR、写内存、增址、判数、跳转),在72MHz主频下耗时约200ns。表面看CPU仍有...

关键字: STM32 DMA

DMA(Direct Memory Access)技术通过硬件自治机制实现高速数据传输,但实际工程中常因内存对齐、缓存一致性、外设同步等问题导致数据错位。本文以STM32为例,结合STM32CubeMonitor工具,解...

关键字: STM32 DMA传输

工业HMI、医疗影像处理等高性能嵌入式场景中,STM32通过FSMC/FMC接口外扩SRAM已成为突破片内资源限制的关键方案。然而,当总线频率突破50MHz时,信号完整性(SI)问题凸显:某智慧园区监控系统采用STM32...

关键字: STM32 FSMC

在嵌入式存储领域,STM32的SDIO接口凭借其硬件加速能力成为高速SD卡通信的核心方案。随着SD卡规格从Class 10向UHS-I/UHS-II演进,传统48MHz时钟配置已无法满足现代应用对带宽的需求。本文通过硬件...

关键字: STM32 SDIO

在工业自动化、高速数据采集和实时控制领域,USB 3.0凭借其5Gbps的理论带宽和全双工通信能力,成为STM32微控制器扩展高速外设的核心接口。然而,其超高速信号(2.5GHz基频)对PCB设计提出严苛要求,需通过差分...

关键字: USB 3.0 STM32

STM32高速信号处理SRAM作为关键存储组件,其信号完整性直接影响系统稳定性。然而,串扰(Crosstalk)作为高速电路中的“隐形杀手”,常导致SRAM读写错误、数据丢失甚至系统崩溃。本文将从串扰的物理机制出发,结合...

关键字: STM32 高速信号

嵌入式设备,功耗管理是决定产品续航能力与市场竞争力的核心要素。针对STM32高速电路,需通过动态电源管理策略优化SRAM、SD卡和USB等关键外设的功耗,实现毫安级到纳安级的电流控制。本文从硬件架构、时钟配置、唤醒机制和...

关键字: STM32 高速电路 低功耗

STM32高速电路设计,SD卡作为核心存储设备,其数据传输稳定性直接影响系统可靠性。然而,当SDIO接口时钟超过8MHz时,地弹效应(Ground Bounce)会显著增加误码率,导致数据丢失或存储错误。本文通过解析地弹...

关键字: STM32 高速电路
关闭