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

来源 :光盘技术 | 被引量 : 0次 | 上传用户:yan4321
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:嵌入式技术的学习有一定的难度,在越来越多的人开始学习嵌入式技术的情况下,本文结合自己实际的学习经验,分析了初学嵌入式技术时的几个难点,包括嵌入式系统的引导过程、ARM映像文件、S3C2410的启动模式,文中对这些难点进行了详细的解析。
  关键词:嵌入式系统;Bootloader;ARM映像文件;S3C2410启动模式
  
  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 Zhengzhou450015)
  Key words: Embedded system;Bootloader;arm image file;startup mode of S3C2410
  
  嵌入式系统被定义为以应用为中心,以计算机技术为基础,软硬件可裁剪,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统,目前嵌入式技术已广泛应用于国防、军工、航天航空、移动通讯、机器人、工业控制、医疗仪器、汽车电子等领域。由于社会对掌握嵌入式技术人才的大量需求,学习嵌入式技术的人越来越多,国内多所院校也已开设了嵌入式系统的相关课程。
  但是嵌入式系统不像那些8位单片机好懂,嵌入式系统的学习有一定的难度,特别是入门阶段,好多东西不懂,下面结合自己学习嵌入式技术时的实际经验,对初学嵌入式时容易迷惑的几个难点,同时也是比较重要的地方加以分析,希望能对初学者有所帮助。这里以学习arm9微处理器和嵌入式Linux操作系统为例。
  
  1 嵌入式系统的引导过程
  
  一般的嵌入式系统在主程序执行之前都需要执行一些初始化的过程,来完成对系统的初始化,并创造嵌入式程序运行的环境,完成初始化过程的代码就是系统引导程序(Bootloader)。BootLoader所执行的操作跟具体的目标系统和开发系统有关,但通常可分为两大类:带操作系统的BootLoader和不带操作系统BootLoader。
  不带操作系统的Bootloader完成的主要功能包括:分配中断向量表;初始化存储器系统;初始化堆栈;初始化有特殊要求的端口、设备;初始化应用程序执行环境;改变处理器模式;呼叫主应用程序,即最后跳到main函数执行应用程序。
  带操作系统的Bootloader的启动大多数分为stage1和stage2两大部分,stage1阶段主要包含依赖于CPU体系结构及硬件设备的初始化等,通常都用汇编语言来实现。这个阶段的主要任务有:①基本的硬件设备初始化;②为加载stage2阶段的代码准备RAM空间;③复制stage2阶段的代码到RAM空间中;④设置好堆栈;⑤跳转到stage2阶段的C程序入口点。Stage2阶段通常用C语言来实现,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。这个阶段的主要任务有:①初始化本阶段要使用到的硬件;②检测系统内存映射(memory map);③将内核(kernel)映像和根文件系统映像从Flash读到RAM空间;④为内核设置启动参数;⑤调用内核。
  可以看出,带操作系统的Bootloader完成的功能复杂,不带操作系统的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的0x00000000处就不是真正的第一条指令,而是*.axf 格式的头部分。应该将*.bin格式文件烧入,保证Flash的0x00000000处是第一条指令。总之,*.bin格式文件是用来被烧写入Flash中的,而*.axf格式文件是在AXD Debugger中通过Load Image命令下载调试用的。
  (2)ARM映像文件的结构
  一个典型的可执行程序的映像文件结构通常如图1所示。
  RO段一般包括代码段和一些常量,在运行的时候是只读的。而RW段包括一些全局变量和静态变量,定义时带初始值,在运行的时候可以被改变(读写)。如果有部分全局变量被初始化为零,则RW段里还包括了ZI段。因为RO段是只读的,在运行的时候不可以被改变,所以,在运行的时候,RO段可以驻留在Flash里(当然也可以在SDRAM或者SRAM里了,这样速度会更快些),而RW段是可以被读写的,所以运行的时候必须被装载到SDRAM或者SRAM里。
  


  图1 可执行程序映像的结构
  图1中所示的映像文件的结构图指的是映像文件被烧入(存放)在ROM/Flash中时的状态,这时RW直接跟在RO后面,当程序运行时,初始化程序会把RW或ZI拷贝到相应的地方。到底拷贝到什么位置,是通过设置RO BASE 和RW BASE,告诉链接器(linker)该程序的起始运行地址(RO BASE)和 RW段的地址 (RW BASE)。如果一个程序只有RO段,没有RW段,那么这个程序可以完全在Flash里运行,不需要用到SDRAM 或者 SRAM。如果一个程序既包括RW段又包括RO段,那么该程序的RW段必须在被访问之前被拷贝到SDRAM 或者SRAM里去,以保证程序可以正确运行。
  


  图2 映像文件在执行前和执行时的状态图
  图2说明了一个可执行映像文件执行前和执行时的状态。从图中可以看到,整个程序在执行前是放在ROM/Flash里的,在执行的时候,RW段被拷贝到了RAM里的合适位置去。这时RO和RW的起始地址分别由RO BASE 和RW BASE指定,也就是说,RO BASE 和RW BASE的值是在映像文件开始运行时才起作用,当然,这里也用到了内存地址重映射。如果映像文件仅仅是存放在ROM/Flash中,映像文件是按图1的方式存放ROM/Flash中的,RW直接跟在RO的后面。
  
  3 S3C2410的启动模式
  
  S3C2410支持两种启动模式:从Nand Flash 启动和从外部nGCS0片选的Nor Flash启动,默认的是从Nand Flash启动。
  S3C2410到底从哪儿启动是由外部管脚OM1和OM0的电平组合决定的,OM1 OM0=00,表示从Nand Flash启动,OM1 OM0=11,表示测试模式,其余的为Nor Flash启动,其中OM1 OM0=01表示16bit的存储器,OM1 OM0=10表示32bit的存储器。
  当程序被烧入到Nand Flash中时,程序不能直接在Nand Flash中运行,S3C2410处理器内部集成了8位Nand Flash控制器,在该Nand Flash控制器内部有一个被称为“Steppingstone”的4K的RAM。当OM1、OM0都是低电平——即S3C2410从Nand Flash启动时,Nand Flash的前4k代码会被自动地复制到“Steppingstone”中,“Steppingstone”被映射为地址0,即nGCS0,CPU从0x00000000位置的“Steppingstone”中开始执行启动代码。这4k代码必须把更多的代码从Nand Flash中读到SDRAM中去,因此要把最核心的启动程序放在Nand Flash 的前4K中。
  当程序被烧写到Nor Flash 中时,则程序可以直接在Nor Flash中运行,只需要将Nor Flash映射到存储器控制器的第0块,即nGCS0,再设置相应的寄存器即可。
  在这两种启动模式下, 各片选的存储空间分配是不同的,如图3所示。
  


  图3 S3C2410的存储空间分配
  
  4 结束语
  
  俗话说,万事开头难,特别是对于有一定难度的嵌入式系统的学习,入门阶段更是容易迷惑,好多东西不能很好地理解,本文的目的就是帮助初学者能够较快地突破难点,能够较快地掌握嵌入式系统的基础知识,入了门以后,对整个嵌入式基础知识有了较好的理解和掌握,在此基础上再进行更深一步的学习和开发相对来说就会容易一些。当然,嵌入式系统的学习还有很多其他需要注意的地方,例如要多动脑、多动手、多实践、多研究、多分析源代码,很多时候需要通过跟踪调试才能真正理解系统的执行过程,等等,学习者可以在学习的过程中不断地总结。
  
  参考文献:
  [1]徐英慧,马忠梅等.ARM9嵌入式系统设计-基于S3C2410与Linux[M].北京:北京航空航天大学出版社,2007,(9).
  [2]杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.
  [3]李岩,王小玉,孙永春.嵌入式系统教学研究[J].南京:电气电子教学学报,2006,28(3).
  教研项目:郑州航空工业管理学院(zhjy-08-01-51)
其他文献
PLC与上位机和组态软件的通讯是工控中一个非常重要的内容.向大家介绍了三菱Q系列PLC的设置以及与组态软件"组态王"的通讯方法.
结合网格技术提出了一种基于电算化考试系统的通用网格平台横型,将电算化考试个单位的计算资源整合起木:形成一个功能强大的计算池,从而方便电算化考试用户使用和提高电算化考试
根据对两电极放电现象的研究以及国外的电源设计理念,设计并制作出复合式脉冲电源,对脉冲电弧团簇离子源(PACIS)内的两电极棒施加复合式脉冲电压使两电极棒放电,用以制备稳定
方便快捷的实现文本、图形图像及公式等图文混合信息的录入、编排及输出,是试题库系统研究中的一个重点和难点,在以前的应用中都没有达到很好的效果.本文在研究Word组件嵌入
面向应用的设计思路.不仅仅适合于数据保密方案,也适合于所有信息安全技术。信息安全技术只有真正地面向应用.以应用为主导.才能够解决目前信息安全领域难解的“头疼医头,脚疼医脚
笔者根据自己近年来在非力学专业本科基础力学课程教学中的体验,对非力学专业基础力学教材体系改革方面作出了一些思考。
新《行政诉讼法》第51条规定了立案登记制度。然而,立案登记制度自确立以来,并没有实际改变立案审查的惯性模式。就审查内容来看,《行政诉讼法》第49条规定的起诉条件不仅包