一种专用ARM处理器的Linux系统开发

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:robinchen
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:简要介绍了瑞典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语言部分,完成初始化硬件接口,检测系统内存映射,复制内核和文件系统映像,设置内核启动参数,最后调用内核。
  除了上述基本功能外,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格式阅读原文。
其他文献
《完美世界》的家系统自开放以来,一直都倍受玩家关注与亲睐,它不仅具有独特而新颖的修建方式与使用功能,同时家园修建中的一些小细节,更显现出设计人员的匠心独具。去体验一完美家园系统吧,你将会领略到一个完全不同的且焕然一新的完美游戏生活。
期刊
成语在我们的日常生活中应用非常广泛。如果运用恰当,可以起到画龙点睛之效。运用不当,就会歪曲表达意图。明确成语所代表的含义呢?对于这个问题,“在线成语查询”网站就能帮你轻松解决。
期刊
(接上期)  激将法问题的回答  这是面试官用来淘汰大部分应聘者的惯用手法。采用这种手法的面试官,往往在提问前就用怀疑、咄咄逼人的眼神通视对方,先令对方心理防线溃退,再冷不防用一个明显不友好的发问激怒对方。作为应聘者,要做到无论如何不被激怒,如果结结巴巴,无言以对,亦或怒形于色,据理力争,那就掉进对方所设的圈套。碰到此种情况,要头脑冷静、明白对方在做戏,不必较劲。
期刊
摘要:本文详细介绍了正向推理的基本原理及算法,在SQL Server数据库中创建知识库和全局数据库,及在Windows环境下用SQL Server数据库和C++实现专家系统外壳。只要在SQL Server数据库中建立不同的知识库便可以生成不同的专家系统。  关键词:正向推理;知识库;数据库;专家系统外壳  中图分类号:TP182文献标识码:A文章编号:1009-3044(2007)18-31500
期刊
摘要:移动通信已成为当代通信领域内发展潜力最大、市场前景最广的热点技术。它的发展已经历了几代,本文首先介绍了移动通信发展历程,然后在分析4G移动通信系统的特点基础上,对4G采用的关键技术:MIMO + OFDM技术、智能天线技术、软件无线电和IPv6进行了研究和分析。  关键词:移动通信;1G;2G;3G;4G  中国分类号:TN911文献标识码:A 文章编号:1009-3044(2007)18-
期刊
摘要:本文简述了在JSP页面中对SQL Server数据库进行备份和恢复的方法,并通过证明该方法能够很好的实现数据备份和恢复。  关键词:JSP;SQL Server数据库;数据备份;数据恢复  中图分类号:TP311 文献标识码:A文章编号:1009-3044(2007)18-31514-01  Carry out to backup and restore the SQL Server Dat
期刊
摘要:随着互联网的迅速普及和应用的不断发展,各种黑客工具和网络攻击手段也随之倍出,网络攻击导致网络和用户受到侵害,其中分布式拒绝服务 DDoS 以其攻击范围广、隐蔽性强、简单有效等特点成为常见的网络攻击技术之一,极大地影响网络和业务主机系统的有效服务。其中的TCP DDoS它利用了传统协议中三次握手协议的不安全性,向互联网服务器发送大量的报文。由于服务器接收大量无效的报文,而使得正常的报文无法得到
期刊
摘要:为满足与东盟各国的交流,开发一套针对东盟10国的手持PDA翻译系统,能完成中国与东盟10国的互译(还可完成中英互译及普通话与粵语的互译),能满足与东盟交流中的互译需求。  关键词:中国—东盟互译;PDA  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)18-31624-02  10 Country PDAs in China-ASEAN Translate th
期刊
摘要:本文将探索基于嵌入式系统发展的需要,提出TMS320VC5402 DSP与AT89C51单片机通信的三种设计方案。利用TMS320VC5402的多通道缓冲串口MCBSP分别实现TMS320VC5402与AT89C51的SCI和SPI串行通信,以及通过TMS320VC5402的8位增强主机接口HPI一8实现TMS320VC5402与AT89C5l并行通信。就硬件接口电路和软件编程进行详细的阐述
期刊
摘要:阐述了在matlab 环境下,调用 Fortran 语言的原理,并通过一实例说明如何实现Matlab,Fortran 两种语言的混合编程。  关键词:Fortran;Matlab;接口技术;混合编程  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)18-31643-01  ProgramInterface Technique for Matlab and For
期刊