当前位置:首页 > 思想汇报 > 一种专用ARM处理器的Linux系统开发:嵌入式linux系统开发
 

一种专用ARM处理器的Linux系统开发:嵌入式linux系统开发

发布时间:2019-01-10 04:22:39 影响了:

  摘要:简要介绍了瑞典ANOTO公司推出的专用ARM图像处理器ARGUS Ⅲ的特点,为使其在更多领域发挥其视频应用上的优势,在其开发板上构建了嵌入式Linux平台,详细论述了Linux系统在专用ARM处理器上的移植过程中,各个部分的设计及实现方法,其中包括引导加载、内核、接口驱动、文件系统、用户应用程序等。
  关键词:ARGUS Ⅲ;embedded-Linux;引导加载;YAFFS
  中图分类号:TP39文献标识码:A文章编号:1009-3044(2007)18-31626-02
  Development of the Embeded Linux System for a Special ARM MCU
  DENG Wei,PAN Meng-chun,XIN Jian-guang
  (School of Mechatronics and Automation,National University of Defense Technology,Changsha 410073,China)
  Abstract:This paper introduces the architecture of a special purpose microprocessor ARGUS Ⅲ of ANOTO Corporation and discusses the design and implementation of the embedded Linux including bootloader,kernel and file systems through an example of realizing the embedded Linux System base on the ARGUS Ⅲ developing board in details,soas to take advantage of its superiority in video application.
  Key words:ARGUS Ⅲ;embedded Linux;Bootloader;YAFFS
  
  1 引言
  
  嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,符合应用系统对功能、可靠性、成本、体积、功耗等严格要求的计算机系统。随着信息数字化时代的到来,嵌入式系统进入了快速发展时期,它在计算机、通信、消费电子产品等领域的应用越来越广泛,现在更是为信息家电、掌上电脑、智能终端等带来了日新月异的发展。与此同时,随着多媒体、视频监控等技术的广泛应用,对嵌入式设备的视频图像处理要求也越来越高,而目前流行的通用嵌入式处理器,如三星公司的S3C2410,ATMEL公司的AT91RM9200等,都是功能比较强大的ARM9处理器,但在视频处理方面,作为通用处理器缺乏硬件上对视频处理的支持,越来越难以满足视频应用的需要。而与此同时,飞思卡尔推出了带有视频接口(CSI)的龙珠系统处理器i.MX,一定程度上 ,简化了视频应用的环节,但是就其实质而言,只是在通用处理器上增加了图像传感器接口,在处理上仍然没有相应的硬件支持。于是,顺应视频应用日新月异的需求,有人也提出了“ARM+DSP”方案,充分发挥了DSP在图像处理上的优势,解决了视频应用的瓶颈,实践证明这种方案是可行的,然而其软硬件设计更为复杂,成本也相应的更高,只适合少数高端应用。
  本文介绍了一种全新构架的ARM处理器ARGUS Ⅲ,其类双核结构,内嵌ARM9核和图像处理单元,在一个处理器上实现了“ARM+DSP”方案,从根本上解决了上述的问题。
  为更好的发挥这种处理器的优势,推广其应用,构建强大的软件系统平台也就显得尤为重要了。本文研究并论述了在该处理器上实现Linux系统的移植,充分发挥Linux系统的强大功能,视频应用开发提供了可靠的系统平台,几乎适合各种视频应用场合。
  
  2 开发环境介绍
  
  2.1ARGUS Ⅲ的特点及硬件平台简介
  ARGUS Ⅲ是瑞典ANOTO公司新近推出的一款高性能、低功耗、特别针对视频应用的专用ARM处理器,其内嵌ARM9内核,主频可高达150MHz,带有相应的MMU,硬件上支持各种嵌入式操作系统;内嵌AVP图像处理器和AVE图像处理引擎,硬件上实现对视频图像数据的处理,视频方面支持MPEG4与H.263编码,VGA模式可达每秒30帧,支持MJPEG,每秒15帧还可达130万像素;芯片集成了丰富的接口:存储上支持如SDRAM、SRAM、NOR Flash、NAND Flash、EEPROM等各种存储器;对外通信上支持串口、红外、USB、以及10/100Mbit/s自适应网卡接口等;特别的,还集成了一个通用视频接口(GVI),可外连8/10bit的CMOS图像传感器,并将视频数据直接提供给AVP处理。总线扩展上,多达92个GPIO,方便各种应用扩展。该芯片体系结构如图1所示:
  图1 ARGUS Ⅲ处理器结构图
  本文采用的硬件平台,是Anoto公司配套提供的开发板,本系统中扩展了ARGUS Ⅲ所有存储、通信、调试以及视频接口,此外,ARGUS Ⅲ支持多种启动方式,使得应用模式更加丰富。
  2.2软件系统简介
  开发一种功能强大、稳定可靠的操作系统平台,是一个系统设计的关键。而Linux操作系统,作为一个成熟、稳定的操作系统,已经广泛应用于各个领域,其支持多种硬件平台,具有真正的32位处理能力,能真正实现多任务、多用户环境、具有很好的硬件环境兼容性和软件可裁剪性,特别是,它还是一个免费、开放源码的操作系统,用户可以免费获得Linux源代码,可以针对不同应用场合对系统进行定制、改造,非常适合嵌入式系统的开发需求。
  因此本文试图在ARGUS Ⅲ上移植构建Linux系统平台,包括了以下几个部分:引导加载程序、Linux内核、文件系统、以及用户程序。它们的可执行映像依次存放在系统的存储设备上,与其他嵌入式系统存储布局有所不同,本系统的执行过程为:系统上电复位后,处理器默认从Boot ROM(串行EEPROM)的零地址开始读入指令,运行一段初始化代码,对存储空间进行重映射,并根据开发板上的跳线来决定系统的启动方式,从相应的固态存储器加载或通信端口与宿主机建立连接下载引导程序到RAM中,再依次加载内核和文件系统,将控制权传递给内核,实现系统的启动。
  
  3 嵌入式Linux系统设计与实现
  
  3.1引导加载程序
  引导加载程序又称Bootloader,它负责系统硬件的初始化和操作系统的加载工作,是计算机系统上电或复位时时运行的第一段代码,为进一步调用Linux内核准备好硬件环境,因此,Bootloader的设计也是嵌入式Linux开发的基础。
  通常情况下,Bootloader可以分为两个部分:第一部分是依赖于CPU体系结构的代码,通常用汇编语言实现,具有短小精悍的特点;第二部分则通常由C语言实现,这样可以实现较复杂的功能,而且代码具有更好的可读性和可移植性。两部分代码分别实现不同的功能:汇编语言部分完成硬件初始化的功能,如屏蔽所有中断、设置CPU的时钟和速度以及初始化RAM等,同时还为第二部分代码的执行做好准备,如准备好RAM空间,将第二部分代码拷贝到RAM空间,并设置好堆栈指针。C语言部分,完成初始化硬件接口,检测系统内存映射,复制内核和文件系统映像,设置内核启动参数,最后调用内核。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文   除了上述基本功能外,Bootloader还为系统提供了两种不同的操作模式:自主模式(auto boot mode)和命令提示模式(prompt mode)。前者是一种默认模式,自动从Flash上加载内核映像到RAM中,属于一种用户模式;而后者则是一种开发模式,开发人员通过命令对Bootloader进行操作,实现下载、分区设置、系统参数设置等功能。
  本系统中Bootloader的设计与实现,主要通过分析并移植U-Boot来实现。U-Boot具有开放源码、支持多种处理器系列和多种嵌入式操作系统内核、较高的稳定性和可靠性以及丰富的设备驱动程源码和强大的网络技术支持等特点,成为众多开发Bootloader的首选。笔者结合开发板的硬件特点,分析了U-Boot源码的结构,主要修改和增加了board、cpu、include和driver文件夹下与处理器和开发板相关的文件,如目标板头文件、系统初始化文件、Flash驱动、串口驱动等。最后在ADS的开发环境中,调试通过后,并生成可执行映像,通过JTAG烧写到目标板NOR Flash,实现引导程序的装载。
  3.2 Linux内核
  (1)内核的选择和修改。
  Linux内核版本的更新速度很快,目前已经有2.6.x版本的内核出现,但Linux的内核版本发行同Linux对嵌入式处理器支持程度的发展是不同步的,因此,需要对特定的处理器体系结构选择适合的内核,并且根据其硬件结构选择适合的内核,并根据其硬件功能加上相应的补丁。在详细分析了ARGUS Ⅲ的体系结构以及开发板上外围硬件特性以后,本系统采用了Linux-2.4.20.tar.gz版本内核,并用到了Anoto公司提供的ARGUS Ⅲ的补丁。
  选择了合适的内核与补丁还必须根据需要对内核源代码做相应的裁剪和修改。在本系统中,修改了Flash分区表部分的源码; 去掉了发行版本中系统用不到的源码如硬件驱动部分;使用串行口来输出console信号(符合本系统特点);主要增加了视频CSI接口驱动程序,为下一步视频应用做好
  准备。
  (2)内核的编译和加载
  在对内核进行配置之前,一个很重要的工作,就是根据本系统中将要实现的内核功能,针对源码中修改和增加的部分,分层修改MAKE文件。配置过程中,选择正确的处理器类型,驱动支持,以及将要用到的文件系统。最后使用交叉编译工具编译内核源码,在kernel/arch/arm/boot/下生成zImage的内核映像,还要使用U-boot的映像生成工具,转化为U-BOOT支持的uImage映像文件。
  (3)文件系统
  Linux采用文件系统组织系统中的文件和设备,为设备和用户程序提供统一的借口。Linux支持多种文件系统,本系统使用JFFS2格式的根文件系统,而用户程序区,则使用支持可读写的YAFFS文件系统格式。
  JFFS2是为在嵌入式系统中使用Flash存储设备而专门设计的一种可读写文件系统,通常实现文件系统的方法有两种:直接将JFFS2配置到内核中并和内核一起编译;通过模块加载的方式来实现。这里采用前者,因为JFFS2已经成为Linux2.4之后版本所支持的一种标准文件系统。其具体实现步骤是;首先在内核配置时,选择对JFFS2文件系统的支持,其次,通过U-boot提供的JFFS2映像生成工具,将下载到目标板SDRAM的内核映像制作成JFFS2映像文件,并烧写到NAND Flash。
  YAFFS文件系统和JFFS2一样都是为在嵌入式系统中使用FLASH存储设备的文件系统,使得将FLASH作为系统的磁盘来使用,可以像操作硬盘上文件一样操作FLASH芯片中的数据,在系统断电后数据依然存储在FLASH芯片中。而且YAFFS特别为NAND FLASH设计的,它的出现使得价格低廉的NAND FLASH芯片具有高效性和健壮性,YAFFS文件系统本身性能优越且易于移植,它已经成功用于Linux,WinCE等嵌入式操作系统上,并且是一个开源项目。
  实现YAFFS格式文件系统同样有两种类似的方法,这里采用手工加载的方法来实现。具体实现步骤如下:
  (1)在宿主机上,利用交叉编译工具,将YAFFS编译,生成yaffs.o文件,并将它放在宿主机根文件系统,使之与整个根文件系统一起生成root.jffs2,下载到目标板之后,使用超级终端在开发板上手动加载yaffs.o,命令为insmod yaffs.o
  (2)在宿主机上建立一个目录/usr,用来存放应用程序和库文件,利用工具mkyaffsimage,制作成YAFFS映像myyaffs.yaffs
  (3)执行mount命令,实现YAFFS文件系统的挂载。
  (4)用户应用程序的开发
  引导程序、Linux内核和文件系统的设计与实现,其目的还是为用户应用程序的开发搭建软件平台。笔者在ARGUS Ⅲ上要实现一种扫描识别的应用,其思路就是就是通过CSI接口,从CMOS senor设备采集图像信息,经过编码压缩后可以在文件系统里实现管理和运用,并作为进一步图像识别(OCR)的处理对象。
  在开发过程中,笔者采用结合NFS(网络文件系统)来开发应用程序。通过NFS开发用户程序具有便利性和快捷性,其基本思想是:宿主机和开发板通过以太网连接,在宿主机上启动NFS服务器,并在/etc/exports中设置根文件系统/root允许目标板的IP地址访问,也就是把网络文件系统作为开发板的根文件系统来使用。开发者只需在宿主机上编写、编译和调试用户程序,通过开发板的超级终端直接执行可执行文件,而不必下载到开发板上再执行和调试。事实证明,这种方法是可行的。
  
  4 结束语
  
  ARGUS Ⅲ作为一款新型的基于ARM9构架的专用处理器,其在视频应用上,有着自身强大的硬件优势,它的应用正在迅速渗透到各种视频应用场合,如对图像要求很高的嵌入式OCR技术,应用在扫描输入上,将信息输入带入了一个新时代,有力地推动了信息时代的发展。而Linux作为一种有着广阔发展前景的操作系统,它在ARGUS Ⅲ处理器上的实现,极大地拓展了ARGUS Ⅲ的应用领域,使之既具有专用芯片强大的硬件处理功能,又具备通用处理器良好的应用开发环境。本文通过开发实例,较为详细的介绍了Linux系统各组成部分的一些新颖实用的思想和方法,具有很好的参考价值,同时,为手持式视频应用终端的开发,提供了很强大的软硬件平台,具有较好的实用价值,为开发者也提供了一种全新的思路。
  
  参考文献:
  [1]Anoto AB(PUBL).ARGUS Ⅲ Developer"s Manual,2003.
  [2]王学龙.嵌入式Linux系统设计与应用.北京:清华大学出版社,2003
  [3]沈剑华.ARM嵌入式系统开发――软件设计与优化.北京航空航天大学出版社,2004.
  [4]刘淼.嵌入式系统接口设计与Linux驱动程序开发.北京航空航天大学出版社,2005.
  [5]Alessandro Rubini.Linux设备驱动程序.北京:中国电力出版社,2004.
  [6]马忠梅,马广云,徐英慧.等.ARM嵌入式处理器结构与应用基础.北京:北京航空航天大学出版社,2004.
  [7]何加铭.嵌入式32位处理器系统设计与应用.北京:电子工业出版社,2004.
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3