ARM嵌入式系统初始化过程

发布者:CMOS最新更新时间:2015-11-13 来源: eefocus关键字:ARM  嵌入式系统  初始化过程 手机看文章 扫描二维码
随时随地手机看文章
基于ARM内核微处理器的系统一般为复杂的片上系统,这种复杂系统的多数硬件模块都是可配 置的,需要软件设置为特定的工作状态,因此在用户的应用程序之前,需要有一些专门的代码完成对系统的初始化。由于这类代码直接面对ARM处理器内核和硬件 控制器,一般都使用汇编语言完成。初始化代码完成的操作与具有的硬件平台相关,但一般包括一下的内容:
--初始化异常向量表(中断向量表)
--初始化存储器系统
--初始化堆栈
--初始化有特殊要求的端口和设备
--初始化应用程序的运行环境
--调用主应用程序
 
1、初始化异常向量表(中断向量表)
   ARM微处理器结构要求中断向量表必须放置在从0x00地址开始的连续8×4字节的空间内,每当一个中断(异常)发生以后,ARM微处理器便强制把PC置 为对应的中断向量。由于每个中断只占用向量表中一个字(4个字节)的存储空间,只能放一条ARM指令,所以通常为跳转指令,使程序从向量表跳转到存储器的 其他位置,执行真正的中断处理。
具体代码实现如下:
AREA Init,CODE,READONLY
ENTRY
B  Reset_Handler     ;异常复位
B  Undef_Handler     ;未定义指令异常
B  SWI_Handler       ;软件中断
B  PreAbort_Handler  ;指令预取中止
B  DataAbord_Handler ;数据中止
B  .                 ;系统保留
B  IRQ_Handler       ;普通外部中断
B  FIQ_Handler       ;快速外部中断
..........
 
2、初始化存储器系统
   主要是对系统存储器控制器(MMU)的初始化。由于存储器控制器并不是ARM架构的一部分,不同芯片的实现方式各不相同。由于运算能力和寻址能力的强大, 基于ARM内核的微处理器系统一般都需要外扩展各种类型的存储器。对于存储器系统的初始化一般包括如下几个方面:
--存储器类型、时序和总线宽度的配置
--存储器地址的配置
(1)存储器类型
   基于ARM微处理系统的存储器一般有如下几类:SARM,DRAM,Flah,同时,即使同类存储器也有访问速度上的不同。其中,SRAM和Flah属于 静态存储器,可以共用存储器端口,而DRAM有动态刷新和地址复用等特征,需要专门的存储器端口。
(2)时序
   存储器端口的接口时序优化对系统性能影响非常大,因为系统运行的速度瓶颈一般都存在于存储器的访问,因此希望存储器的访问尽可能快,但又要考虑由此带来的 系统稳定性问题。
(3)总线宽度
   ARM微处理器架构支持8/16/32位的数据总线宽度访问存储器和外设,对于特定的存储器来说,需要设定数据总线的宽度。
(4)存储器地址的配置
   ARM微处理器架构理论上可以支持4GB的地址空间,而对于一个实际的系统来说,配置的物理地址远没有这么多,因此,如何配置存储器的地址,也是一个重要 的问题。
(5)存储器地址重映射
   存储器地址重映射就是可以通过软件配置来改变一块存储器物理地址的方法,是当前许多先进控制器所具有的功能。
进行地址重映射的原因:提高系统的运行效率。
进行地址重映射的注意:保证程序流程的连续性。
有的ARM处理器不具有地址重映射的功能,可以采样代码搬移加跳转的方式完成上述功能。
 
3、初始化堆栈
   由于ARM微处理器有7中运行模式,每一种模式的堆栈指针(SP)都是独立的(其中系统模式和用户模式使用相同的SP)。因此,需要对每一种模式的SP进 行初始化。
   采用的方法是:改变当前程序状态寄存器(CPSR)内的状态位,使处理器切换到不同的状态,然后初始化SP。但是对用户模式下SP的初始化应该放在最后, 因为ARM微处理器进入用户模式之后就无法再切换到其他模式。
   设置堆栈应该注意的问题是:堆栈的大小根据需要确定,要尽可能给堆栈分配高速存储器(例如片内的SRAM)。堆栈性能的提高对提高系统整体性能的影响非常 显著。
初始化堆栈的代码如下:
MRS  R0, CPSR
BIC  R0, R0, #MODEMASK
ORR  R1, R0, #IRQMODE
MSR  CPSR_c, R1
LDR  SP, =IRQStack
BIC  R0, R0, #MODEMASK
ORR  R1, R0, #FIQMODE
MSR  CPSR_c, R1
LDR  SP, =FIQStack
.........
 
4、初始化应用程序和有特殊要求的端口和设备
   该部分的初始化由具体的系统和用户需求决定,一般的外设初始化可以放在系统初始化以后进行。比较典型的应用是驱动一些简单的输出设备,例如LED等,用来 指示系统启动的进程和状态。初始化应用程序的运行环境,就是完成必要的从ROM到RAM的数据传输,初始化有特殊要求的端口、设备和应用程序的运行环境。
 
5、改变处理器的模式
   ARM微处理器支持7种模式,其中:
超级模式(Supervisor):复位后的缺省模式。
多种特权模式变化:主要完成各模式的堆栈设置,注意不要进入用户模式。
用户模式:用户程序运行模式。
 
6、调用应用主程序
   当完成所有的系统初始化工作之后,就需要把程序流程转入主应用程序。最常见的操作是:
   IMPORT  C_Entry
   ......
   B       C_Entry
关键字:ARM  嵌入式系统  初始化过程 引用地址:ARM嵌入式系统初始化过程

上一篇:基于ARM的硬件启动程序设计-初始化堆栈
下一篇:简单的启动代码(Startup.s)分析

推荐阅读最新更新时间:2024-03-16 14:39

声效芯片CS4235在DSP的嵌入式系统中的应用
摘要:通过分析Windows Sound System兼容声卡和PC机ISA总线的接口原理,将其中的声效芯片CS4235应用到基于DSP的嵌入式系统中,极大地改善了系统的音质;采用DMA控制器8237A实现DSP与CS4235的硬件接口,遵循PnP协议解决DSP对CS4235的资源配置以及寄存器读写等软件接口问题;最后给出CS4235在基于DSP的全数字化语言学习系统中的具体应用。 关键词:CS4235 DSP DMA PnP 引 言   声卡技术是多媒体计算机技术的关键技术之一, 它的出现使得计算机更富表达力。目前,由于采用的录放音芯片结构简单、采样率过低而使得嵌入式系统中的音质效果比较差,远远满足不了人们对高档生活
[嵌入式]
ARM IMPORT Image$$RO$$Limit 的含义
ARM IMPORT Image$$RO$$Limit 的含义 IMPORT |Image$$RO$$Base| ; Base of ROM code IMPORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data) IMPORT |Image$$RW$$Base| ; Base of RAM to initialise IMPORT |Image$$ZI$$Base| ; Base and limit of area IMPORT |Image$$ZI$$Limit| ; to zero initialise IMPORT MMU_SetAsyncBusMode
[单片机]
ARM Linux中断机制之中断的申请
底层硬件操作方法 每一条中断线都有一个底层硬件操作函数集struct irq_chip 。大多数控制方法都是重复的 ,基本上只要有中断响应 、 中断屏蔽 、 中断开启 、 中断触发类型设置等方法就可以满足要求了。其他各种方法基本上和这些相同。 这些操作方法的实现在文件linux/arch/arm/plat-s3c24xx/irq.c中。 例如外部中断 IRQ_EINT0 ~ IRQ_EINT3都用以下操作函数集: static struct irq_chip s3c_irq_eint0t4 = { .name = s3c-ext0 , .ack = s3c_irq_ack, .mask = s3c_irq_mask,
[单片机]
ARM编程中Flash ROM驱动示例
Intel Flash芯片 i28f160,i28f320: i28F320B: 64*64K,64个blocks,4M空间,每个block 64K,第一个64K由8个8*8K小blocks组成. 每个Black可以被独立擦写(寿命周期) 100,000次以上 Flash操作的大概步骤: flash读写操作中,读应该很简单,和RAM一样,写就复杂一点. Intel TE28F320C3的flash是4M空间 flash空间,划分成许多的block,Intel TE28F320C3的flash是4M空间,64个block,每个block由64K. 要对所有的block单独进行操作, 每个操作结束,都需要判断状态,
[单片机]
基于ARM920T的嵌入式电力参数检测系统设计
  0 引言   随着社会经济和科学技术的飞速发展,电力机车、地铁和电动汽车等将得到广泛的应用。这些用电设备的电能变换与控制系统均采用双向变流设备来实现节能运行。因此, 电力参数 检测装置对能量的双向计量问题越来越受到人们的关注,并已成为电能检测与计量技术发展的重要方向之一。   传统的电力参数检测装置一般都是基于单片机或 DSP 设计的,前者受运算速度和处理数据能力的限制,越来越难以满足目前电力参数检测装置的需要;而后者的输出控制能力又较差。为此,本文介绍了一种以ARM920T为核心并嵌入Linux操作系统的电力参数检测装置。   1系统硬件设计 电力参数检测装置的硬件部分采用 嵌入式 Linux操作系统和ARM结合
[单片机]
基于<font color='red'>ARM</font>920T的嵌入式电力参数检测系统设计
VxWorks嵌入式系统中的多串口卡通信的实现
VxWorks嵌入式系统是美国Wind River公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),良好的持续发展能力、高性能的内核以及友好的用户开发环境,使其在嵌入式实时操作系统领域居于领先地位,广泛应用于现代的各种嵌入式计算机系统中,比如军事指挥系统、武器控制系统或工业控制系统中。而在这些系统中,往往不是单个计算机的控制,而是多个计算机以及其他设备组成通信网络共同完成控制作用,因此,对于每一个嵌入式计算机除了连接必需的外设之外,还需要考虑计算机之间的通信。计算机间常用的通信方式是利用串行口来实现的。本文在VxWorks多串口通信的实现过程中未采用常见的标准VxWorks虚拟设备ttyDrv驱动方式,而是在用户
[单片机]
基于ARM7芯片LPC2132的在线升级方案
ARM处理器是一种高性能、低成本、低功耗的RISC微处理器,是目前最为流行的微处理器之一。ARM7作为ARM微处理器系列中的一员,广泛应用于工业控制、网络应用、消费电子和安全产品等。实际应用中往往需要对产品的程序进行升级以提升性能或消除缺陷,如何对已经投入使用的产品进行方便可靠的程序在线升级,是产品设计初期必须考虑的问题。尽管目前绝大多数基于Flash结构的ARM7芯片具备ISP功能,但是这需要特定的烧写软件支持和专业人员操作。烧写软件由芯片厂商提供,不便于集成到产品的主机端软件中。在产品软件功能中添加简单易用的程序升级功能十分必要,文中以NXP公司的ARM7芯片LPC2132为例,为具有IAP功能的ARM7芯片提出一个稳定的在线
[单片机]
基于<font color='red'>ARM</font>7芯片LPC2132的在线升级方案
非移动市场需求飙升ARM预计50亿片出货量
ARM核产品覆盖了MCU应用的每一个领域,从消费娱乐、无线移动、到网络和家庭应用等。而在便携式移动产品领域,以低功耗著称的ARM处理器占绝对优势。ARM公司于3月份宣称截至2007第四季度已累计“出货”100亿片MCU,而自2007年Q4至今又有10亿片基于ARM核的处理器出货。因此说ARM产品无处不在并不为过。而正当人们惊讶于ARM公司的快速成长与其低功耗产品在移动领域所取得的成就的同时,ARM已经将目光投向了非移动领域。 2008年6月11日,在深圳举办了ARM第一届家庭应用创新研讨会暨合作伙伴中国峰会上,ARM公司中国总裁谭军博士表示,ARM预计2010年的年出货量将达50亿片,而ARM也将在家庭应用上捕获更多的
[嵌入式]
非移动市场需求飙升<font color='red'>ARM</font>预计50亿片出货量
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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