ARM 启动过程

发布者:leader5最新更新时间:2020-02-12 来源: eefocus关键字:ARM  启动过程 手机看文章 扫描二维码
随时随地手机看文章

    对于一般的嵌入式系统来讲,考虑到系统成本,运行速度等因素,往往联合使用好几种存储器件。在下面讲到的例子中,是我在开发中用到的一个 ARM9EJ 的处理器,系统中采用了SDRAM, ROM, Nand FLASH, ITCM ,DTCM 等。

   
    SDRAM: 程序正常运行时所在的存储器, 物理地址 0x24000000 - 0x24800000 (以8M 为例);
    ROM:   复位后, ARM 从 ROM 启动, ROM 是只读的,出厂时就烧好了,不可更改,正常运行时,物理地址:
            0x2C000000 - 0x2C006000 (24KB);
    Nand FLASH: 外接存储器件,正常运行的程序会通过烧录工具先放在这里。也可以做为用户的数据存储区,通过文件系统来访问。


    ITCM, DTCM: 类似与 SDRAM ,但是速度比 SDRAM 快很多,当进行大量,繁琐,且实时性要求较高的运算时,使用该存储。


    从开机,即对处理器发送一个 RESET 信号后, ARM 处理器就进入中断模式,从中断向量 RESET 处理,即地址0x00000000 处开始执行。但是,我们看到,整个系统在物理地址 0 处是没有存储器件的。实际上是, 对与大多数的ARM处理器来讲,有一个硬件映射的机制。对与这个处理器来说,开始时,默认将 ROM (0x2C000000 - 0x2C006000) 映射到地址零处,注意,此动作是由硬件达成的,软件不用考虑。此时,送到地址总线的地址是 0x00000000, 但是对应的却是ROM 中offset 为0处的代码。 看看ROM 中代码是怎么考虑的:

    .section .boot                  #1
    __RESET_ADDR:
 /* Move PC to ROM address */
  LDR PC, =0x2C000024            #2
 /* Hardward init */
 BL  __HARDWARD_INIT          

 /* Detect SDRAM size */
 BL  __SDRAM_DETECT

 /* SDRAM init */
 BL  __SDRAM_INIT

 /* Data section init */
 BL  __DATA_INIT                #3


 /* BSS section init */
 BL  __BSS_INIT                 #4
 
 /* ARM mode stacks init */
 BL  __STACK_INIT               #5


 /* Enter C code */
 B __MMU_START_MAIN              #6
    
    需要注意的是上面标出来的6个地方,下面分别解释:
    #1
    GCC 会把以下的代码放到 .boot 段中,通过 ld 中对 .boot 的安排,可将该段放在指定的地址空间,参见后面的 ld 描述;
    
    #2
    此处将 PC 指针赋值为 0x2C000024, 通过对这个 .boot 段进行反汇编,可以看到该地址对应 
    BL  __HARDWARD_INIT, 就是该条指令的下一条。 此时,物理地址 0x00000024 和 0x2C000024 都对应这条指令,这是由于重映射机制造成的。通过,执行 
    LDR PC, =0x2C000024, 使得处理器的地址空间从原来的 0x0000000 变到 0x2C000000 ,这是必要的。其一: ROM 本身就对应在 0x2C000000 这个地址空间,恢复到此空间是很自然的。其二:为后面的重映射做准备。因为ROM 的运行速度没有 SDRAM 快,所以通常把程序加载到 SDRAM 中运行,由于中断向量的在 0x00000000 处,所以需要把 SDRAM 映射到 0 地址去,这也是硬件映射的。如果不做这种转换的话,当进行了硬件映射后,两条指令就接不上了,上一条指令是 0x0000xxxx, 位于 ROM 中,下一条指令 0x0000xxxy 为与SDRAM ,会接着从 SDRAM 中执行,很容易出问题。
    
    #3
    此处做数据段的初始化的,数据段是可读可写的。所以必须把数据段搬到 SDRAM 中去,方可使用。该数据段的 LMA 和  VMA 是不同的,通过在 ld 中加上标签,可以得知从哪儿搬数据,要搬到那儿去。

    #4
    做BSS 段初始话,一般清0。 值得注意的是,对于初始化为 0 的全局变量,可能会放在这里。

    #5
    初始化,各个模式下的堆栈。

    #6
    启动MMU,进入main 函数。      

    由于 ROM 中空间有限,上面在 ROM 中代码不可能做更多动作。 一般我们把自己编写程序生成 arm 代码放在 Nand Flash 中。在 ROM 中的程序进入main 后,就会通过nand driver 将存在nand 中的code 读到 SDRAM 中,然后做硬件重映射,将 SDRAM 映射到地址 0 处, 然后在 SDRAM 中跑。 对于 ARM 的 bootload 来将,做的就是这个工作。

关键字:ARM  启动过程 引用地址:ARM 启动过程

上一篇:移植Python3到TQ2440(一)
下一篇:ARM开发总结的小知识 Code,RO-data,RW-data,ZI-

推荐阅读最新更新时间:2024-11-03 10:27

ARM9的IIC
实验前须知: I. IIC中断发生的三种情况: 1 当发出地址信息或接收到一个从机地址并且吻合时 2 当总线仲裁失败时 3 当发送或接收完一个字节的数据(包括响应位)时 II.启动或恢复IIC传输的两种方法: 1 当IICCON 即中断状态为0时,通过写IICSTAT寄存器启动IIC操作。 2 当IICCON 即中断状态为1时,表示IIC操作被暂停。在这期间设置好其他寄存器之后,向IICCON 写入0即可恢复IIC操作。 具体操作可参考s3c2440芯片手册的流程。在这里仅分析IIC主机发送和IIC主机读取。 实验的目的: 从型号为AT24C02C的EEPROM中写数据,然后去读写入的数据。s3c2440中的IIC主控制器作为
[单片机]
<font color='red'>ARM</font>9的IIC
基于ARM 和Qt/E的车载HMI终端的设计方案
  0 引言   改善HMI (Human Machine Interface)终端性能可降低车辆控制系统操作的复杂性,也可提高驾驶员对自己车辆的控制力。车载HMI通过单一结构中控台,可以减少零部件数量,提高性价比。传统机械式的控制终端正在逐步向直观、便捷的HMI终端发展。2009年6月29日,美国汽车多媒体与通信研究服务公司Strategy Analytics发布最新研究报告,认为"车载人机界面市场领先者保持强势地位".报告预测,2015年,车载语音和触摸屏市场规模将达到29 亿美元。目前,HMI设备,尤其是语音、触觉控制和触摸屏,在汽车市场上被大量应用。   本文报告了一种基于触摸控制与数字显示理念的车载HMI终端,通过在
[单片机]
基于<font color='red'>ARM</font> 和Qt/E的车载HMI终端的设计方案
基于ARM 和Qt/E的车载HMI终端设计
  改善HMI (Human Mac hine Inte rf ace)终端性能可降低车辆 控制系统 操作的复杂性,也可提高驾驶员对自己车辆的控制力。车载HMI通过单一结构中控台,可以减少零部件数量,提高性价比。传统机械式的控制终端正在逐步向直观、便捷的HMI终端发展。2009年6月29日,美国汽车多媒体与 通信 研究服务公司Strategy Analyt ic s发布最新研究报告,认为“车载 人机界面 市场领先者保持强势地位”。报告预测,2015年,车载语音和 触摸屏 市场规模将达到29 亿美元。目前,HMI设备,尤其是语音、触觉控制和触摸屏,在汽车市场上被大量应用。   本文报告了一种基于触摸控制与数字显示理念的车载HMI
[电源管理]
基于<font color='red'>ARM</font> 和Qt/E的车载HMI终端设计
英伟达申请欧盟批准收购ARM交易 10月出结果
北京时间9月9日早间消息,来自欧盟委员会的文件显示,周三时英伟达向欧盟提出申请,希望对方批准ARM收购案。ARM是英国芯片公司,英伟达开价540亿美元收购,只等监管机构批准。对于这宗收购案,上月英国监管机构已经表达担忧之意,欧盟可能也有类似想法。    欧盟委员会将10月13日设定为是否批准的最后期限。英伟达申请通过交易将会启动为期25天的初步评估,如果英伟达拒绝让步,可能会引发为期90天的调查。    ARM被英伟达收购之后能保持中立吗?这是一个值得思考的问题。ARM客户博通、联发科、Marvell支持收购,高通、三星、苹果则感到担忧。英伟达在声明中表示:“我们正在努力走完监管流程,希望与欧盟委员会密切合作解决可能存在的担忧。交
[半导体设计/制造]
基于32位ARM微处理器的多媒体车载音响
简介:本文设计了一种基于32位ARM微处理器的多媒体车载音响,带RADIO、IRDA、MP3、DVD等功能。文中结合汽车车身的复杂环境,给出系统软硬件 设计,以及系统各部分功能的实现方法,主要介绍收音机、MP3软硬件的设计和系统集成。 系统硬件架构 系统的硬 件电路部分主要由按键、红外遥控、MOTOR控制、收音机、MP3、DVD以及LCD显示模块等构成,模块部分都由MCU通过相应的通讯协议进行控制。鉴 于MCU在处理速度、外设功能以及价格等方面的考虑,32位ARM处理器在片内资源、性价比方面都明显优于8位MCU。这里选用ARM7TDMI处理器 S3C44B0作为主控芯片。该芯片与外设的连接如图1所示。 图1
[单片机]
基于32位<font color='red'>ARM</font>微处理器的多媒体车载音响
基于ARM的智能家居视频监控系统
0 引言 随着科学技术的进步,人们对生活质量也提出了越来越高的要求,舒适、合理、便捷和安全的家居环境正逐步被大众所青睐。视频监控作为家居安防的重要组成部分,也逐步受到人们的重视。这里设计采用ARM处理器嵌入Linux操作系统的方法实现家居视频监控。Linux操作系统作为嵌入式系统的新宠以其开源特点非常适合面向开发,而ARM核凭借其较高的指令和数据处理能力更是吸引了众多研发人员的眼球,二者的结合为智能家居视频监控提供了一个崭新的发展方向。 1 智能家居系统的总体架构 智能家居系统就是利用计算机技术、数字技术、网络通信技术和综合布线技术,将与家庭生活密切相关的家电控制系统、防盗报警系统、网络信息服务系统等通过家庭网络有机结合
[单片机]
基于<font color='red'>ARM</font>的智能家居视频监控系统
基于ARM的嵌入式TCP/IP协议的实现
0 引 言 以太网具有通用性强、技术成熟、带宽迅速增加等特性,工业控制领域出现嵌入式技术,尤其是ARM技术的发展和DSP在工业控制领域的广泛应用,利用嵌入式技术实现以太网通信已经不难见到。嵌入式实时操作系统接入网络后将使远程监测、远程控制、远程诊断和远程维护变得越来越容易。从根本上讲,嵌入式设备接入网络,当前基本采用基于TCP/IP的通信协议。该方案以LPC2210为核心元件研究基于ARM的嵌入式TCP/IP协议的实现的硬件电路,同时在μC/OS一Ⅱ平台上编写应用软件程序。下面对系统做详实的阐述,并重点介绍嵌入式实时操作系统μC/OS—II应用于TCP/IP时应进行合理的裁减。 1 系统硬件设计 基于ARM的嵌入式TCP/
[单片机]
基于<font color='red'>ARM</font>的嵌入式TCP/IP协议的实现
Part2_lesson1---arm家族大检阅
芯片(比如2440、6410、210等等)包含ARM核。 指令结构和ARM核有关系: ARM9对应指令架构版本ARMV4 ARM11对应指令架构版本ARMV6 cortex A8对应指令架构版本ARMV7 6410芯片的概况: 2440芯片的概况: 210芯片的概况:
[单片机]
Part2_lesson1---<font color='red'>arm</font>家族大检阅
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved