当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]ARM7在嵌入式应用中启动程序技术难点分析

技术难点分析

⑴.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 0x011fffff ;2M FLASH

{

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 ; 调用零初始化子程序

结束语:

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

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

2025年8月4日 – 提供超丰富半导体和电子元器件™的业界知名新品引入 (NPI) 代理商贸泽电子 (Mouser Electronics) 即日起开售Altera®的Agilex™ 3 FPGA C系列开发套件。此开...

关键字: FPGA 边缘计算 嵌入式应用

我们讨论了为嵌入式应用程序设置断言通常需要的内容。我们还看到,根据所使用的工具链,它可能会略有不同。尽管存在这些较小的差异,但仍将断言用于相同的目的:检测开发人员对应用程序的假设何时在应用程序中的特定点不正确。

关键字: 实时断言 嵌入式应用

自发布以来,这款由米尔首发的真工业级核心板-米尔基于全志T536核心板就获得了广大关注,现正式开售,核心板278元起、开发板750元起。米尔基于米尔全志T536核心板,配备四核Cortex-A55,拥有17路串口和4路C...

关键字: 开发板 核心板 嵌入式应用

嵌入式软件开发团队面临的最大挑战之一是他们花费太多时间调试软件。当我在参加的各种会议上与世界各地的团队和工程师交谈时,很明显,开发人员平均花费 40% 或更多的时间来调试他们的软件。

关键字: 合同设计来 嵌入式应用

新微控制器 STM32C071扩大闪存和 RAM容量,增加USB控制器,支持 TouchGFX图形软件,让终端产品变得更纤薄、小巧,更具竞争力

关键字: 微控制器 嵌入式应用

在现代计算机体系结构中,内存管理单元(Memory Management Unit, MMU)扮演着至关重要的角色,它是连接处理器与物理内存之间的桥梁,负责将处理器生成的虚拟地址(Virtual Address, VA)...

关键字: MMU 虚拟地址

SiFive 的解决方案正被加速采用,目前市场上已有超过 20 亿颗基于 SiFive RISC-V 的芯片

关键字: 嵌入式应用 RISC-V 芯片

由于传统嵌入式软件升级存在成本高、便捷性差、实时性差等问题 , 空中下载技术(0ver-the-Air ,OTA)被用于嵌入 式软件应用的敏捷在线升级。由于嵌入式0TA系统缺乏高效安全的加密和认证机制 ,升级包在传输过程...

关键字: 嵌入式应用 远程升级 OTA系统

在许多领域和应用中,精确的定位变得日益重要。实时动态 (RTK)技术的定位精度明显高于传统的多GNSS系统,并且成本效益不断提高。儒卓力系统解决方案 (Rutronik System Solutions) 的专家与儒卓力...

关键字: 适配器板 嵌入式应用
关闭