嵌入式系统学习中的难点解析

阅读: 评论:0

2024年9月21日发(作者:)

嵌入式系统学习中的难点解析

计算技术与自动化・ 

嵌入式系统学习中的难点解析 

刘国梅.王亚楠 

f郑州航空工业管理学院计算机科学与应用系,河南

郑州450015) 

要:嵌入式技术的学习有一定的难度,在越来越多的人开始学习嵌入式技术的情况下,本文结合自己实际的学习经验,分析 

了初学嵌入式技术时的几个难点,包括嵌入式系统的引导过程、ARM映像文件、¥3C2410的启动模式,文中对这些难点进行了详细的 

解析。 

关键词:嵌入式系统;Boofloader;ARM映像文件;¥3C2410启动模式 

Analysis of Operation Issues in Studying Embedded System 

LIU Guo—mei,WANG Ya-nan 

(Department of computer science and application of Zhengzhou Instate of Aeronautical Industry Management,Henan Zhengzhou45001 5) 

Key words:Embedded system;Bootloader;arm image file;startup mode of¥3C2410 

嵌入式系统被定义为以应用为中心,以计算机技术为基础, 

软硬件可裁剪,从而能够适应实际应用中对功能、可靠性、成本、 

体积、功耗等严格要求的专用计算机系统,目前嵌入式技术已广 

泛应用于国防、军工、航天航空、移动通讯、机器人、工业控制、医 

疗仪器、汽车电子等领域。由于社会对掌握嵌入式技术人才的大 

量需求,学习嵌入式技术的人越来越多,国内多所院校也已开设 

了嵌入式系统的相关课程。 

操作系统的Bootloader功能比较简单,是最简单的bootloader,叫 

做硬件启动程序更合适一些。 

2 ARM映像文件 

(1) .axf格式和 .bin格式文件 

ADS编译后生成的ARM映像文件有 .axf格式和 .bin 

格式两种,有时二者容易被混淆。其实 .bin格式文件是真正的 

可执行文件,而 .axf格式文件是ARM特有的调试文件,里面 

除了包含 .bin格式文件的内容之外,还附加了许多其它调试信 

息,这些调试信息可以用在AXD Debugger的调试中,在AXD 

Debugger中通过Load Image命令下载 -axf格式的文件到目标 

板的RAM中运行调试。由于烧写工具是原封不动地将映像文件 

烧人Flash中,所以 .axf格式文件是不可以被烧人的,否则 

Flash的OxO0000000处就不是真正的第一条指令,而是 .axf 

格式的头部分。应该将 .bin格式文件烧入,保证Flash的 

OxO0000000处是第一条指令。总之, .bin格式文件是用来被烧 

但是嵌入式系统不像那些8位单片机好懂,嵌入式系统的 

学习有一定的难度,特别是入门阶段,好多东西不懂,下面结合 

自己学习嵌入式技术时的实际经验,对初学嵌入式时容易迷惑 

的几个难点,同时也是比较重要的地方加以分析,希望能对初学 

者有所帮助。这里以学习arm9微处理器和嵌入式Linux操作系 

统为例。 

1 嵌入式系统的引导过程 

般的嵌入式系统在主程序执行之前都需要执行一些初始 

化的过程,来完成对系统的初始化,并创造嵌入式程序运行的环 写入Flash中的,而 .axf格式文件是在AXD Debugger中通过 

Load Image命令下载调试用的。 

(2)ARM映像文件的结构 

境,完成初始化过程的代码就是系统引导程序(Bootloader)。 

BootLoader所执行的操作跟具体的目标系统和开发系统有关,但 

通常可分为两大类:带操作系统的BootLoader和不带操作系统 

BootLoader。 

个典型的可执行程序的映像文件结构通常如图l所示。 

RO段一般包括代码段和一些常量,在运行的时候是只读 

的。而RW段包括一些全局变量和静态变量,定义时带初始值, 

在运行的时候可以被改变(读写)。如果有部分全局变量被初始 

化为零,则RW段里还包括了zI段。因为RO段是只读的,在运 

行的时候不可以被改变, 一 

不带操作系统的Bootloader完成的主要功能包括:分配中断 

向量表;初始化存储器系统;初始化堆栈;初始化有特殊要求的 

端口、设备;初始化应用程序执行环境;改变处理器模式;呼叫主 

应用程序,即最后跳到main函数执行应用程序。 

带操作系统的Bootloader的启动大多数分为stage1和 

所以,在运行的时候,R0 

段可以驻留在Flash里 

或者SRAM里了,这样速

度会更快些),而RW段 

映像文件 

} 

I 

、 

l 

Z】 

stage2两大部分,stage1阶段主要包含依赖于CPU体系结构及 

硬件设备的初始化等,通常都用汇编语言来实现。这个阶段的主 

要任务有:①基本的硬件设备初始化;②为加载stage2阶段的代 

(当然也可以在SDRAM整个可执行 J 

是可以被读写的,所以运 

行的时候必须被装载到 

SDRAM或者SRAM里。 

RW 

码准备RAM空间;③复制stage2阶段的代码到RAM空间中;④ 

设置好堆栈;⑤跳转到stage2阶段的C程序人口点。Stage2阶段 

通常用C语言来实现,以便实现更复杂的功能,也使程序有更好 

的可读性和可移植性。这个阶段的主要任务有:①初始化本阶段 

l 

RO 

图1 可执行程序映像的结构 

要使用到的硬件;②检测系统内存映射(memou map);③将内 

核(kerne1)映像和根文件系统映像从Flash读到RAM空间;④为 

图1中所示的映像文件的结构图指的是映像文件被烧人 

(存放)在ROM/Flash中时的状态,这时RW直接跟在RO后面, 

内核设置启动参数;⑤调用内核。 

可以看出,带操作系统的Bootloader完成的功能复杂,不带 

当程序运行时,初始化程序会把RW或zI拷贝到相应的地方。 

到底拷贝到什么位置,是通过设置RO BASE和RW BASE, 

告诉链接器(1inker)该程序的起始运行地址(RO BASE)和 

RW段的地址fRW BASE)。如果一个程序只有RO段,没有 

nGCS0,CPU从0x00000000位置的“Steppingstone”中开始执行启 

动代码。这4k代码必须把更多的代码从Nand Flash中读到 

SDRAM中去,因此要把最核心的启动程序放在Nand Flash 

的前4K中。 

RW段,那么这个程序可以完全在Flash里运行,不需要用到 

SDRAM或者SRAM。如果一个程序既包括RW段又包括RO 

段,那么该程序的RW段必须在被访问之前被拷贝到SDRAM 当程序被烧写到Nor Flash中时,则程序可以直接在Nor 

或者SRAM里去,以保证程序可以正确运行。 

执行前 执行时 

Q如IEE 

RAM 

0x0C000 . . 

Zl section 

RW section 

0x0A000 

’ 

ROM 

RW section 

一一 

(! D8㈣一 

RO section 

R0 section 

.一一 

Q 一 

图2映像文件在执行前和执行时的状态图 

图2说明r一个可执行映像文件执行前和执行时的状态。 

从图中可以看到,整个程序在执行前是放在ROM/Flash里的,在 

执行的时候,RW段被拷『J]到了RAM里的合适位置去。这时RO 

和RW的起始地址分别由RO BASE和RW BASE指定,也 

就是说,RO BASE和RW BASE的值是在映像文件开始运 

行时才起作用,当然,这里也用到了内存地址重映射。如果映像 

文件仅仅是存放存ROM/Flash中,映像文件是按图1的方式存 

放ROM/Flash中的,Rw直接跟在RO的后面。 

3 S3C2410的启动模式 

¥3C2410支持两种启动模式:从Nand Flash启动和从外 

部nGCS0片选的Nor Flash启动,默认的是从Nand Flash启 

动。 

¥3C2410到底从哪儿启动是由外部管脚OM1和OM0的电 

平组合决定的,OM1 OM0=00,表示从Nand Flash启动,OM1 

OMO=Il,表示测试模式,其余的为Nor Flash启动,其中OM1 

OM0=O1表示16bit的存储器,OMI OMO=10表示32bit的存储 

器。 

当程序被烧入到Nand Flash中时,程序不能直接在Nand 

Flash中运行,¥3C2410处理器内部集成了8位Nand Flash控 

制器,在该Nand Flash控制器内部有一个被称为“StePPing— 

stone”的4K的RAM。当OM1、OM0都是低电平——即¥3C2410 

从Nand Flash启动时,Nand Flash的前4k代码会被自动地复 

制到“Steppingstone”中,“Steppingstone”被映射为地址0,即 

Flash中运行,只需要将Nor Flash映射到存储器控制器的第0 

块,即nGCSO,再设置相应的寄存器即可。 

在这两种启动模式下,各片选的存储空间分配是不同的, 

如图3所示。 

裟 装 

懋 蒜 

1如 B 

sRoM 

S41 1 e 船 

} 

{ CS3 128 B 

12 M8 

j— 0M 8 

t (n辟Cs 1 

隔露蕊蕊蕊 : '2 ^ 

图3¥3C2410的存储空间分配 

4结束语 

俗话说,万事开头难,特别是对于有一定难度的嵌入式系统 

的学习,入门阶段更是容易迷惑,好多东西不能很好地理解,本 

文的目的就是帮助初学者能够较快地突破难点,能够较快地掌 

握嵌入式系统的基础知识,入了门以后,对整个嵌入式基础知识 

有了较好的理解和掌握,在此基础上再进行更深一步的学习 

和开发相对来说就会容易~些。当然,嵌入式系统的学习 

还有很多其他需要注意的地方,例如要多动脑、多动手、多 

实践、多研究、多分析源代码,很多时候需要通过跟踪调试 

才能真正理解系统的执行过程,等等,学习者可以在学习的过程 

中不断地总结。 

参考文献: 

【l】徐英慧,马忠梅等.ARM9嵌入式系统设计一基于¥3C2410 

与Linux[M].北京:北京航空航天大学出版社,2007,(9). 

[2]杜春雷.ARM体系结构与编程【M】.北京:清华大学出版社, 

2003. 

【3]李岩,王小玉,孙永春.嵌入式系统教学研究lJJ.南京:电气 

电子教学学报,2006,28(3). 

教研项目:郑州航空工业管理学院(zhjy~08—01—51) 

嵌入式系统学习中的难点解析

本文发布于:2024-09-21 14:50:35,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1726901435435486.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   执行   映像
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23