教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> ARM7在嵌入式应用中启动程序的实现

ARM7在嵌入式应用中启动程序的实现

上传者:网友
|
翻新时间:2023-02-07

ARM7在嵌入式应用中启动程序的实现

ARM7在嵌入式应用中启动程序的实现 ARM7在嵌入式应用中启动程序的实现 信息技术论文 更新:2006-4-8 阅读: ARM7在嵌入式应用中启动程序的实现【摘要】 本文给出了基于ARM7嵌入式系统的启动程序的实现流程,并针对存储器控制单元的使用以及目标文件的分布装载等技术难点进行详细分析。 【关键词】嵌入式系统、启动程序、ARM7

嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统的核心部件是各种类型的嵌入式处理器,随着嵌入式系统不断深入到人们生活中的各个领域,嵌入式处理器得到前所未有的飞速发展。

典型的32位RISC芯片──ARM处理器,不论是在PDA,STB,DVD等消费类电子产品中,还是在GPS,航空,勘探,测量等军方产品中都得到了广泛的应用。越来越多的芯片厂商早已看好ARM的前景,如Intel,NS,Ateml,Philips,NEC,CirrusLogic等公司都有相应的产品。在1999年,ARM突破1.5亿个,市场份额超过了50%,已经成为业界的龙头。

在我们研制开发基于ARM7的嵌入式系统过程中,发现技术难点主要在于系统启动程序的编写,为此本文详细论述了在ARM7基础上开发嵌入式系统时启动程序的实现。

1.启动程序流程

嵌入式系统的资源有限,程序通常都是固化在ROM中运行。ROM中程序执行前,需要对系统硬件和软件运行环境进行初始化,这些工作由用汇编语言编写的启动程序完成。

启动程序是嵌入式程序的开头部分,应与应用程序一起固化在ROM中,并首先在系统上运行。它应包含进各模块中可能出现的所有段类,并合理安排它们的次序。

写好启动程序是设计好嵌入式程序的关键,系统启动程序所执行的操作依赖于正在开发其软件的系统,一般流程如下:

2.详细步骤

⑴设置入口指针

启动程序首先必须定义入口指针,而且整个应用程序只有一个入口指针。

    设置中断向量

    ARM7要求中断向量表必须设置在从0地址开始,连续8×4字节的空间,分别是复位、未定义指令错误、软件中断、预取指令错误、数据存取错误、IRQ、FIQ和一个保留的中断向量。

    如果ROM定位于0地址,向量表包含一系列指令跳转到中断服务程序,否则向量必须被动态初始化。可以在启动程序中添加一段代码,使其在运行时将向量表拷贝到0地址开始的存储器空间。

    对于各未用中断,使其指向一个只含返回指令的哑函数,以防止错误中断引起系统的混乱。

    初始化堆栈和寄存器

    系统堆栈初始化取决于用户使用了哪些中断,以及系统需要处理哪些错误类型。一般来说管理者堆栈必须设置,如果使用了IRQ中断,则IRQ堆栈也必须设置。

    如果系统使用了DRAM或其它外设,需要设置相关的寄存器,以确定其刷新频率,数据总线宽度等信息。

    初始化存储器系统

    有些芯片可通过寄存器编程初始化存储器系统,而对于较复杂系统通常集成有MMU来管理内存空间。

    ⑸ 如有必要改变处理器模式、状态

    如果系统应用程序是运行在用户模式下,可在此处将系统改为用户模式并初始化用户堆栈指针。

      初始化C语言所需的存储器空间。

      为正确运行应用程序,在初始化期间应将系统需要读写的数据和变量从ROM拷贝到RAM里;一些要求快速响应的程序,如中断处理程序,也需要在RAM中运行;如果使用FLASH,对FLASH的擦除和写入操作也一定要在RAM里运行。ARM公司软件开发工具包中的链接器提供了分布装载功能,可以实现这一目的。

      呼叫C程序。

      3.技术难点分析

      ⑴.MMU的使用

      MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由MMU决定数据是在RAM内还是在大容量存储器设备内。如果数据不在存储空间内,MMU将产生页面错误中断。

      MMU的两个主要功能是:

      将虚地址转换成物理地址。 控制存储器存取允许。MMU关掉时,虚地址直接输出到物理地址总线。

      在实践中,使用MMU解决了如下几个问题:

      ①使用DRAM作为大容量存储器时,如果DRAM的行列是非平方的,会导致该DRAM的物理地址不连续,这将给程序的编写调试造成极大不便,而适当配置MMU可将其转换成虚拟地址连续的空间。

      ②ARM内核的中断向量表要求放在0地址, 对于ROM在0地址的情况,无法调试中断服务程序,所以在调试阶段有必要将可读写的存储器空间映射到0地址。

      ③系统的某些地址段是不允许被访问的,否则会产生不可预料的后果,为了避免这类错误,可以通过MMU匹配表的设置将这些地址段设为用户不可存取类型。

      启动程序中生成的匹配表中包含地址映射,存储页大小(1M,64K,或4K)以及是否允许存取等信息。

      例如:目标板上的16兆DRAM的物理地址区间为0xc000,0000~0xc07f,ffff;0xc100,0000~0xc17f,ffff;16兆ROM的虚拟地址区间为:0x0000,0000~0x00ff,ffff。匹配表配置如下:

      可以看到左边是连续的虚拟地址空间,右边是不连续的物理地址空间,而且将DRAM映射到了0地址区间。 MMU通过虚拟地址和页面表位置信息,按照转换逻辑获得对应物理地址,输出到地址总线上。

      应注意到的是使能MMU后,程序继续运行,但是对于程序员来说程序计数器的指针已经改变,指向了ROM所对应的虚拟地址。

      ⑵目标文件的分布装载分析

      首先创建一个文本文件,称为分布装载描述文件。它为应用程序的各部分指定装载区间和执行区间。

      举例如下:

      {

      FLASH 0x01000000

      {

      boot.o(BOOT,+First)

      * (+RO)

      }

      DRAM 0x00000000

      {

      vector.0(VECTOR,+First)

      int_handler.o (+RO)

      * (+RW,+ZI)

      }

      }

      在ARM链接器的命令行里加入“-scov description-file –scf”或“-scatter description-file”,编译链接后,将产生一个分布装载文件。

      链接器同时产生一组符号,给出每个分布描述文件中命名的区间的长度,装载地址和执行地址。由于链接器和C库都没有将代码从它的装载区间拷贝到执行区间,或创建一个零初始化区域的功能,所以要由应用程序员利用这组符号产生的信息完成这项工作,这是在呼叫C程序之前必须完成的,举例如下:

      LDR r0, = |Load$$DRAM$$Base|

      LDR r1, = |Image$$DRAM$$Base|

      CMP r0, r1 ; 检查装载地址和执行地址是否相同

      BEQ do_zi_init ; 相同,则不拷贝该区间,初始化零数据区

      MOV r2, r1 ; 不相同,将装载区拷贝到执行区

      LDR r4, = |Image$$DRAM$$length|

      ADD r2, r2, r4

      BL copy

      do_zi_init

      LDR r1, = |Image$$DRAM$$ZI$$Base|

      MOV r2, r1

      LDR r4, = |Image$$DRAM$$ZI$$length|

      ADD r2, r2, r4

      MOV r3, #0

      BL zi_init ; 调用零初始化子程序

      4.结束语:

      本文介绍的启动程序已经在以Cirrus Logic公司的EP7211和Ateml公司的AT91M40400开发的系统上运行并测试通过。今后可以在这一基础上添加串行通信模块和FLASH操作模块,开发系统监控程序,从而实现应用程序的在线升级。

      参考资料:

      《嵌入式微处理器及其应用开发》 计算机世界第四十三期

      姜桥 罗蕾

      《面向二十一世纪的嵌入式系统综述》 北京诺浩数字基因研究所

      中国单片机公共实验(BOL)

      吕京建 肖海桥

      《EP7211数据手册》

      《ARM7TDMI数据手册》

      作者:

      王京林 解放军信息工程大学基础部研究生队 二年级研究生

      通讯地址:郑州1001信箱6-5#

      邮编:450002

      岳春生 解放军信息工程大学基础部 副教授,研究生导师

      张海英 解放军信息工程大学基础部研究生队 二年级研究生

下载文档

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

网友最新关注

天上的星星
我故乡的杏啊
心中的校园
校园,我心中的乐园
我心中的平安校园
巴国城揽胜
蓝色的窗户
我心中的校园
打开心窗
我故乡的春啊
小波同学二三事
石林揽胜
同学眼中的我
关于留学的利弊
博士生如何写好开题报告
怎样在《Nature》杂志上发表论文
怎么样写一篇文章,容易被别人接受呢
外刊论文撰写的五个基本要求
Scientific paper structure
英文论文写作体会
一些英文文章写作的技巧总结zz
撰写外刊论文的心得体会
如何发表和撰写SCI论文
2016年跟单员工作总结范文
课题选定与题目设计 ――学位论文写作方法(一)
撰写外刊论文的心得体会(1)
科技论文摘要写作体会
如何写学术论文
The Most Common Habits written
商业谈判的九大技巧商务礼仪论文(1)论文
中国亟需35万注册会计师 现不足8万职业指导论文(1)论文
职业生涯:“精算”每一步职业指导论文(1)论文
工作中的礼节和道德商务礼仪论文(1)论文
商务礼仪和政务礼仪商务礼仪论文(1)论文
HR管理者的职业生涯规划职业指导论文(1)论文
职业生涯拐个弯 未来方向转个圈职业指导论文(1)论文
海归精英谈职业规划:人生要紧就几步职业指导论文(1)论文
想跳槽切莫冲动辞职职业指导论文(1)论文
白领:自我激励的九方法职业指导论文(1)论文
商务会议禁忌事项商务礼仪论文(1)论文
商界开业礼仪商务礼仪论文(1)论文
公共场合的衣帽摆放商务礼仪论文(1)论文
商务谈判五大基本功商务礼仪论文(1)论文
国家人事部:未来中国急需八类人才职业指导论文(1)论文
《七月的天山》重点字词梳理
《中彩那天》 老师语录
《中彩那天》 同步范文二
《七月的天山》教学重点
《中彩那天》 主旨 线索
《七月的天山》教学重难点
《中彩那天》 同步范文一
《中彩那天》 美文欣赏
《中彩那天》 作文指导
《中彩那天》考点练兵 一
《七月的天山》整体阅读感知
《中彩那天》 字词
《中彩那天》 作者简介
《七月的天山》教师语录
《七月的天山》相关资料