ARM硬件启动程序的工作一般包括:
1.分配中断向量表;
2.初始化存储器系统;
3.初始化各工作模式下的堆栈;
4.初始化有特殊要求的硬件模块;
5.初始化用户程序的执行环境;
6.切换处理器的工作模式;
7.调用主应用程序;
这里主要讲解写初始化应用程序执行环境:
一个典型的可执行程序的映像结构通常如表所列。
可执行程序映像的结构
分区 |
说明 |
ZI(初始化为0的可读/写数据) |
只定义了变量名的全局变量 |
RW(可读/写数据) |
定义了带初始值的全局变量 |
RO(代码和只读数据) |
编译后的程序 |
映像一开始总是存储在ROM/Flash中的,其RO部分既可以在ROM/Flash中执行,也可以转移到速度更快的RAM中执行;而RW和ZI这两部分必须转移到可写的RAM中。所谓应用程序执行环境的初始化,就是必须完成必要的从ROM到RAM的数据传输和内容清空。
下面是在ADS集成开发环境中,一种常用存储器模型的直接实现。
LDR R0,=|Image$$RO$$Limit|
LDR R1,=|Image$$RW$$Base|
LDR R3,=|Image$$ZI$$Base|
CMP R0,R1
BEQ %F1
0
CMP R1,R3
LDRCC R2,[R0],#4
STRCC R2,[R1],#4
BCC %B0
1
LDR R1,=|Image$$ZI$$Limit|
MOV R2,#0
2
CMP R3,R1
STRCC R2,[R3],#4
BCC %B2
程序实现了RW数据的和ZI区域的清空。其中引用到的4个符号是由链接器定义的。
|Image$$RO$$Limit|:表示RO区末地址后面的地址,即RW数据源的起始地址。
|Image$$RW$$Base|:RW区在RAM里的执行区起始地址,也就是编译器选项RW_Base指定的地址;程序中是RW数据的目的地址。
|Image$$ZI$$Base|:ZI区在RAM中的起始地址。
|Image$$ZI$$Limit|:ZI区在RAM中的结束地址后面的一个地址。
程序先把ROM中|Image$$RO$$Limit|地址开始的RW初始数据到RAM中|Image$$RW$$Base|开始的地址,当RAM这边的目标地址到达|Image$$ZI$$Base|后,
就表示RW区的结束和ZI区的开始,然后就对这片Zi区进行清零操作,直到遇到结束地址|Image$$ZI$$Limit|。
关键字:ARM 硬件初始化
引用地址:
基于ARM硬件初始化的一些细节问题的解释
推荐阅读最新更新时间:2024-03-16 15:00
AMD明年推出首款ARM服务器芯片 代号西雅图
AMD计划在明年年初推出首款ARM架构的服务器芯片,跟配套的CPU和集成显卡核心一起,向英特尔Xeon在服务器芯片市场上的霸主地位发起冲击。 AMD的高管表示,这款ARM核心代号为“西雅图”(Seattle),将在2014年下半年批量出货。AMD还会在2014年推出“柏林”(Berlin)核心,它将以CPU和APU两种形式出现,其APU形式集成了处理器和一个集显。此外还有“华沙”(Warsaw),它将在高性能计算(HPC,high-performancecomputing)层面与Xeon处理器开展竞争。
行业观察家们对“西雅图”很感兴趣,因为对AMD来说,这可能会是一个非常有趣的机遇,或许能帮AMD在服务器芯片市
[手机便携]
ARM平台的低功耗软件设计和编写
我们这些软件工程师都热衷于为我们遇到的问题找出完美的解决方案。但奇怪的是,我们会发现在这个特定的领域,没有一个完美的解决方案。聪明的技巧可能会节省一些功率,但是这个领域是由其他更简单的因素支配的。就象房间里有几头很大的大象,我们必须要先小心翼翼地猎取我们可以看到的大象,然后再花精力去猎捕体型小的动物。 在考量某个系统的功耗时,重要的是要弄清楚我们实际测量的对象是什么。我们说的“节省功耗”可能意味着几个方面。它意味着“功率”还是“能量”。实际上,我们既需要功率也需要能量。大多数手持便携式设备均具有以下两个不同的预算:功率预算——它管理着瞬间功耗、避免过热或产生热应力,而能量预算则管理着长期使用的能量总数。而软件则需要满足短期的功
[单片机]
瑞萨SH-Mobile应用引擎4打入GHz领域
2009年11月30日,瑞萨科技(以下简称瑞萨)宣布展开对其SH-Mobile应用引擎4(SH73720)的抽样调查。SH-Mobile应用引擎4是一款基于ARM® Cortex™-A8*1的应用引擎,最高工作频率可达1GHz,适用于新一代手机和移动器件设计。该产品集成了各种专用处理引擎,具有终极多媒体功能,如全HD 1080p视频录制、30fps回放和高速3D图形渲染,可实现复杂的3D UI和高级游戏体验。SH-Mobile应用引擎4采用了瑞萨得到广泛市场认证的图像信号处理器(ISP)技术,并提供了先进的1600万像素ISP,可以实现最高的视觉质量,同时还支持全HD 1080p电影处理功能。该器件利用了瑞萨科技公司优化的
[手机便携]
基于IAR集成开发平台的ARM程序设计方法
摘 要: 本文主要介绍了在不加载操作系统的情况下,如何使用IAR软件平台进行基于ARM的嵌入式系统开发,包括了底层驱动、I/O控制,中断控制等程序设计。 /script script src="/ASNew/Include/A_Service.asp?AS_PID=10" /script
关键词: 嵌入式系统;IAR;ARM;中断控制
引言
在项目开发,特别是中小型项目开发中,为了降低开发难度和开发成本,常选择不加载操作系统的方案。本文选择IAR嵌入式开发平台,在不加载操作系统的前提下,使用C语言(约95%)和汇编语言(约5%),对以ATMEL公司的AT91M40800芯片(ARM7TDMI
[嵌入式]
PWM在ARM Linux中的原理和蜂鸣器驱动实例开发
1. 什么是PWM? PWM(脉冲宽度调制)简单的讲是一种变频技术之一,是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。如果还不是很清楚,好吧,来看看我们实际生活中的例子,我们的电风扇为什么扭一下按扭,风扇的转速就会发生变化;调一下收音机的声音按钮,声音的大小就会发生变化;还有待会儿我们要讲的蜂鸣器也会根据不同的输入值而发出不同频率的叫声等等!!这些都是PWM的应用,都是通过PWM输出的频率信号进行控制的。 2. ARM Linux中的PWM 根据S3C2440的手册介绍,S3C2440A内部有5个16位的定时器,定时器0、1、2、3都带有脉冲宽度调制功能(PWM),定时器4是一个没有输出引脚的内部定时器,定
[单片机]
基于 ARM 的绣花机控制系统设计
0 引言 随着全自动绣花机的不断发展,机械方面的改进对机器的性能改善已经没有太大的效果。因而,控制系统就成为了绣花机提高性能和降低成本的关键,也是各大绣花机厂商的竞 争重点 。控制系统的硬件决定了整个系统的可靠性和稳定性,硬件质量的好坏除了 CPU 芯片之外,外围芯片的选择和电路的设计也起着至关重要的作用。而控制系统所有的功能都 需要通过软件来实现,软件的设计对于将来系统的稳定运行至关重要。 由于市场上绝大部分微处理器芯片都是以 ARM 为基础 ,本文研究了基于 ARM 的绣 花机控制系统的软硬件设计。首先在 LH7A404 和 LPC2214 的基础上确定了绣花机控制系统的硬件框架,详细设计了电源电路、复位电路、存储器接口电
[单片机]
恩智浦:与ARM共拼32位MCU江山
ARM的闯入,似乎打破了MCU稳步的发展路线,而恩智浦与ARM的某种特殊情节,又使得恩智浦自出征32位MCU起始之时,就一直情有独钟的全套配备着ARM核的武器。2009年2月ARM发布了号称最小型、最低功耗的Cortex-M0处理器,在随后的3月,恩智浦就宣布推出了世界首款功能性ARM Cortex-M0硅芯片,作为第一家Cortex-M0处理器授权合作方。 在32位单片机的纷争中,这位力挺ARM核的强者是否能够一路走好?近日,EEWORLD就持续发展的32位MCU市场在全球特别是在中国的发展状况,对恩智浦半导体大中华区微控制器产品市场经理郭志锐进行了采访。 恩智浦半导体大中华区微控制器产品市场经理 郭志锐
[EEWORLD独家]
arm启动代码详解
基于ARM的芯片多数为复杂的片上系统,这种复杂系统里的多数硬件模块都是可配置的,需要由软件来设置其需要的工作状态。因此在用户的应用程序之前,需要由专门的一段代码来完成对系统的初始化。由于这类代码直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言。一般通用的内容包括: 中断向量表 初始化存储器系统 初始化堆栈 初始化有特殊要求的断口,设备 初始化用户程序执行环境 改变处理器模式 呼叫主应用程序 1. 中断向量表 ARM要求中断向量表必须放置在从0地址开始,连续8X4字节的空间内。 每当一个中断发生以后,ARM处理器便强制把PC指针置为向量表中对应中断类型的地址值。因为每个中断只占据向量表中1个字的存储空间,
[单片机]