ARM的嵌入式Linux应用程序开发设计
- 格式:doc
- 大小:19.00 KB
- 文档页数:4
第7章嵌入式uClinux及其应用开发本章从构建一个针对S3C4510B硬件平台的嵌入式uClinux操作系统和在其上进行应用程序的开发入手,逐步讲述如何在Linux环境下编写用户应用程序的方法和步骤,并为熟悉Windows操作系统的用户介绍在这种平台之上,使用何种工具编写和编译自己的应用。
通过本章的学习,读者可以对嵌入式uClinux有一定的了解,并且掌握在Linux和Windows 下嵌入式系统应用开发的基本方法。
本章主要内容有:-嵌入式uClinux系统概况-开发工具GNU的使用-建立uClinux开发环境-在uClinux下开发应用程序7.1 嵌入式uClinux系统概况在PC机上开发应用程序的用户都会有这样的感觉,PC机有完善的操作系统并提供应用程序接口(API),开发好的应用程序可以直接在操作系统上运行。
虽然嵌入式系统的应用程序完全可以在裸板上运行,但为了使系统具有任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理和中断处理的能力,提供多任务处理,更好的分配系统资源的功能,用户就需要针对自己的硬件平台和实际应用选择适当的嵌入式操作系统(Embedded Operating System,以下简称EOS)。
本节将结合本书所谈到的硬件平台S3C4510B,介绍一种针对不带MMU的ARM微处理器的嵌入式操作系统uClinux。
uClinux是一个完全符合GNU/GPL公约的操作系统,完全开放代码,现在由Lineo公司支持维护。
uClinux的发音是“you-see-linux”,它的名字来自于希腊字母“mu”和英文大写字母“C”的结合。
“mu”代表“微小”之意,字母“C”代表“控制器”,所以从字面上就可以看出它的含义,即“微控制领域中的Linux系统”。
为了降低硬件成本及运行功耗,有一类CPU在设计中取消了内存管理单元(Memory Management Unit,以下简称MMU)功能模块。
基于ARM9的嵌入式Linux应用开发平台的分析与实现陈斌【摘要】随着经济的迅速发展以及科学技术水平的不断提高,IT行业取得了较大程度上的进步,为我国国民经济的发展以及人民生活水平的提高做出重要贡献。
尤其是近几年来,信息技术、网络技术飞速发展,IT领域不断发展与升级,在这种环境之下,嵌入式系统成为IT领域的重要焦点之一。
目前状况下,行业内存在着诸多的嵌入式系统,而在这些嵌入式系统当中,Linux最为受到青睐,这主要是因为Linux具有自身的强大优势,主要表现在三个方面,分别是元代码开放、功能强大一级级易于移植等。
就目前市场状况而言,ARM9系列的嵌入式微处理器已经成为嵌入式系统首选的处理器产品,本文就在此基础之上针对基于ARM9的嵌入式Linux应用开发平台的分析与实现进行有益探讨。
【期刊名称】《佳木斯职业学院学报》【年(卷),期】2014(000)005【总页数】2页(P1-2)【关键词】嵌入式系统 ARM9 Linux应用开发平台文件系统【作者】陈斌【作者单位】铁岭师范高等专科学校【正文语种】中文【中图分类】TP316.811.嵌入式系统模型图1显示的主要是嵌入式系统的模型结构:如果从物理层面的角度对其进行一定程度上的分析,可以将嵌入式计算系统理解成一个专用的电子系统,一般情况下,这一专用的电子系统都处于一个非电子系统环境之下,且这一系统环境具有一定的复杂性。
至于这两种系统的关系,可以对其进行一定程度的抽象化处理,即具有复杂性的非电子系统是嵌入式系统的外部环境,我们将其称为被嵌入的系统。
就一般状况而言,整个系统之中所包含的嵌入式系统为多个,同时,嵌入式系统能够与外界进行直接的通信。
对于嵌入式系统而言,它能够提供一个专门的服务给被嵌入系统,这一服务主要表现为两个方面:一方面,这一服务可以表现为对外界输入的响应;另一方面,这一服务也可以是对被嵌入系统或者与之相邻的嵌入式系统数据的响应。
就如现代机电控制系统,对于这一系统而言,它是一种分布式的系统,在这种系统环境之下,各个处理单元都是通过网络进行一定程度上的连接的。
基于ARM的嵌入式Linux开发平台构建技术分类:嵌入式系统| 2011-09-26维库电子随着计算机技术、通信技术的飞速发展和3C(计算机、通信、消费电子)的融合,嵌入式系统已经渗透到各个领域。
在32位嵌入式微处理器市场上,基于ARM(Advanced RISC Machine)内核的微处理器在市场上处于绝对的领导地位,因此追踪ARM技术的发展趋势显得尤为重要。
在嵌入式操作系统的选择上,Linux一直因其内核精简、代码开放、易于移植等特点受到广大嵌入式系统工程师的青睐。
另外,嵌入式系统一旦具备网络接入功能,其信息处理能力更加强大,因此有必要为嵌入式系统构建Web服务器。
本文主要目的是研究基于ARM 的嵌入式Linux开发平台构建,并在此基础上进行网络应用程序的开发。
选用指南在进行嵌入式系统的开发之前,首先必须要选择恰当的开发平台。
对于经验丰富的开发者来说,当然可以自己动手组装硬件,然后挑选合适的嵌入式Linux系统,将其移植到开发平台上。
但对于初学者来说,可能更好的办法是购买硬件厂商已经做好的开发板,将精力集中在应用程序的开发上。
虽然ARM微处理器有多达十几种的内核结构、几十个芯片生产厂家和众多的功能组合,但这也给广大嵌入式开发人员在确定方案时带来了一定的困难。
客观上讲,嵌入式系统一般都是量身打造的。
开发人员必须依据客户需求选择合适的软硬件平台,否则的话要么无法完成所要求的功能,要么就会造成资源的浪费,挑选出一个合适的方案确实很不容易。
初学者在做决定时不妨借鉴下面的一些经验。
ARM处理器包含ARM7系列,ARM9系列,ARM9E系列,ARM10E系列,SecurCore 系列,Inter的Xscale,Inter的StrongARM ARM11系列其中,ARM7、ARM9、ARM9E 和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。
SecurCore系列专门为安全要求较高的应用而设计。
基于ARM9的嵌入式Linux系统的设计与实现打开文本图片集摘要:随着计算机技术和微电子技术的迅猛发展,嵌入式系统逐渐发展为计算机应用的一个重要领域,在生活中得到了普遍的应用。
本文通过搭建嵌入式系统开发平台、对嵌入式Linux系统进行构建、移植设备驱动程序和介绍嵌入式GUI应用程序开发,讨论了基于ARM9微处理器的嵌入式Linux系统的设计与实现。
该系统为嵌入式控制系统设计提供了一种可行的方案。
关键词:嵌入式系统;Linux;驱动程序;ARM9一、引言嵌入式系统作为一种专用的计算机系统。
它以计算机技术作为基础,以应用作为中心,并且其硬件和软件都可以裁剪。
它能够满足应用系统对功耗和可靠性的严格要求。
嵌入式系统具有实时性高、系统内核小的特点。
嵌入式Linux是一种操作系统,它能够运行在嵌入式计算机系统上。
代码开放,版权免费[2]是它与其它操作系统相比的优势,嵌入式Linux有非常广泛的应用领域,主要应用于工业控制、大屏幕功能手机、信息家电、医疗电子等领域。
本文从应用出发,着重对一个嵌入式Linux系统进行研究、设计及实现。
二、嵌入式系统开发平台的搭建硬件结构和软件系统这两部分组成了一个完整的嵌入式系统,其中嵌入式处理器和外围的接口电路是硬件结构的主要组成部件,而嵌入式操作系统和应用程序则是软件系统的主要组成部分。
嵌入式系统开发平台的搭建主要包括硬件开发平台、软件开发平台和交叉开发环境的搭建[1]。
(一)硬件开发平台的搭建嵌入式系统硬件平台的搭建主要是围绕目标板和主机这两方面进行的,目标板选用的是采用嵌入式处理器的开发板作为硬件开发平台,主机选用的是PC机。
通过对当前主流的嵌入式处理器综合性能的比较,又依据嵌入式软件开发要求嵌入式处理器要具有性能高、功耗低等特点,因此选取ARM处理器作为本文的嵌入式处理器。
由于本文重点从应用开发方面来设计嵌入式系统,选用ARM9系列的S3C2440A处理器比较合适,因此目标板采用的是基于芯片S3C2440A的开发板作为硬件开发平台。
ARM嵌入式Linux系统开发一、开发步骤:1.开发目标硬件系统:如选择微处理器,Flash及其他外设2.建立交叉编译工具:一般的GCC工具都是针对X86体系的,为了能够产生目标板能够执行的代码必须建立交叉编译工具3.开发Bootloader:建立启动系统的主引导程序4.移植Linux内核:如基于ARM的linux 2.6内核移植5.开发一个根文件系统:如rootfs的制作6.开发相关硬件的驱动程序:如LCD、Keypad等7.开发上层的应用程序:如QT GUI开发二、ARM处理器的选型1.ARM微处理器内核的选择这个需要看选择的操作系统,如是标准Linux操作系统,就需要选择ARM720T以上带有MMU功能的ARM芯片。
2.系统的工作频率系统的工作频率在很大程度上决定了ARM的处理能力,ARM9系列微处理器的典型处理速度为1.1MIPS/MHZ,常见的arm9的系统主时钟为100~233MHZ。
3.晶片内部存储体的容量大多数的ARM微处理器芯片的内部存储体的容量都不太大4.芯片内部周围电路选择根据嵌入式系统的需求,尽可能的采用芯片内部周围电路完成所需功能,这样既可以简化系统的设计,也可以提高系统的可靠性。
周围电路:USB接口、IIC接口、LCD控制器、键盘接口、RTC、ADC和DAC、DSP等。
5.价格、兼容性、使用温度……三、建立交叉编译工具1.交叉编译就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,如在PC平台上编译出能运行在以ARM为内核的CPU平台上的程序。
2.用来编译这种跨平台程序的编译器叫价差编译器。
3.通常构建交叉编译工具链的3种方法:分步编译和安装交叉编译工具链所学的库和源代码,最终生成交叉编译工具链。
通过Crosstool脚本工具来实现一次编译生成交叉编译工具链。
直接通过网上()下载已经制作好的交叉编译工具链。
4.交叉编译工具链是由一个编译器、连接器、和解释器组成的综合开发环境。
ARM的嵌入式Linux应用程序开发设计
嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。
而嵌入式Linux系统也蓬勃发展,不仅继承了Linux 源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。
1ARM处理器及开发板在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。
据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一
嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。
而嵌入式Linux系统也蓬勃发展,不仅继承了Linux源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。
1 ARM处理器及开发板
在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。
据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一商中有19家是ARM的用户。
ARM系列芯片已经被广泛的应用于移动电活、手持式计算机以及各种各样的嵌入式应用领域,成为世界上销量最大的32位微处理器。
ARM已成为业界实际的RISC芯片标准。
ARM系列处理器根据各自特点应用于不同领域。
从应用的角度上ARM芯片选择的一般原则:MMU;处理器速度;内置存储器容量;USB接口;GPIO数量;中断控制器;IIS(integrate interface ofsound)音频接口;nWAIT信号;
RTC(real timeclock);LCD控制器;PWM输出等各项指标。
本文使用的是ARM9,其性能远远高过ARM7。
开发板使用的是广州斯道信息技术有限公司的开发板,中央处理器是三星公司的S3C2410。
ARM9具有以下特点:5级流水线;采用哈佛结构;高速缓存和写缓存的引入;支持MMU。
2 嵌入式Linux系统
嵌入式操作系统是嵌入式应用软件的基础和开发平台,它的出现解决了嵌入式软件开发标准化的难题。
嵌入式系统具有操作系统的最基本的功能。
目前主流的嵌入式系统有以下儿种:Linux、VxWorks、QNX、Windows CE、Palm OS。
嵌入式Linux操作系统具有一些独特的优势:层次结构及内核完全开放;强大的网络支持功能;具备一整套工具链;广泛的硬件支持特性。
嵌入式Linux系统有很多种。
本文使用的是Red Hat9操作系统。
在安装有Windows和Linux双系统的PC上,系统会以Linux的GRUB作为引导装入器来选择启动二者。
此时若直接删除Linux分区,会导致系统无法启动
Windows或者是需要用行命令才能启动Windows。
可以先使用虚拟机安装Linux 系统,练习使用,熟悉后再在PC上安装。
3 应用程序开发
一般嵌入式开发流程如图1所示。
这里省略前面三步,从开发应用程序开始。
3.1 交叉开发环境建立
对嵌入式系统而言,只装备必要的资源是前提条件,这也决定了嵌入式应用程序的开发环境不可能是资源有限的嵌入式系统,只能利用资源丰富的PC开发,然后建立交叉开发平台。
交叉编译器(cross-compiler)是进行交叉平台开发的主要软件工具。
它是运行在一种处理器体系结构上,但是可以生成在另一种不同的处理器体系结构上运
行的目标代码的编译器。
要建立交叉开发环境,主要需要几个工具包:gcc,glib,binutils,gdb等。
一般开发板都提供这些工具,如果不是使用的开发板,在网上也是可以下载到全部软件包的。
依次将它们安装在PC上即可。
Linux的软件安装方法与Windows不同。
Linux中根据不同的压缩打包方式使用不同的命令安装。
在安装过程中,由于软件包之间的依赖关系,系统可能会警
告还有哪些没有安装,可以忽略这些警告。
3.2 U-Boot
在U-Boot(UniversalBootloader)之前,先介绍一下Bootloader。
简单的说,Bootloader就是在操作系统内核运行之前的一段引导程序,类似于PC中的BIOS。
通过它,可以完成对应硬件设备的初始化,并建立内存空间的映射图的
功能,为最终调用系统内核做好准备。
U-Boot是遵循GPL条款的开放源码项目,它不仅仅支持嵌人式Linux系统的引导,U-Boot中Universal的一层含义就是在于U-Boot支持多种嵌入式操作系统,就目前来看,U-Boot对Linux的支持最完善。
另外一层含义则是U-Boot
支持多种常用系列的处理器。
U-Boot支持的主要功能:系统引导;基本辅助功能(操作系统接口功能;可灵
活设置、传递多个关键参数给操作系统;支持目标板多种存储方式;CRC32校验);设备驱动;上电自检功能;特殊功能(XIP内核引导)。
U-Boot移植主要分为两步:配置主板和设置Flash和SDRAM时序。
3.3 嵌入式Linux系统内核编译和移植
嵌入式Linux内核的编译都是通过make的不同命令实现的,一般分为3步:(1)内核配置。
主要是用户用于为目标板选择处理器架构的选项。
内核支持4种方
法的配置,虽然界面不同,但功能是一样的,其中make menuconfig使用最广泛;(2)建立依赖关系。
在第一次编译时发生,产生".de-pend"文件,运行"make dep"即可;(3)建立内核。
这里建立的是压缩的内核映像,使用"make zIm-age"或"make bzImage"。
这样就完成了编译,下载在开发板即可。
一般来说与开发板通信有3种方式:网络下载(t ftp,ftp等),串口下载和USB 下载。
用tftp下载,需要配置Linux下的tftp服务,然后将PC和开发板直连线(非网线)即可;用串口下载,需要配置Linux下的串日通信工具Minicom。
配置的主要是一些重要参数,如波特率。
但是只有系统内核是不够的,要使系统正常启动,还需要加载文件系统,所以需要制作文件系统。
可以手工制作,但是工作量太大,一般是把现有文件系统加载到目标板,包括制作文件系统镜像和用NFS加载文件系统方法。
开发板上一般已经烧写好了嵌入式系统内核镜像,文件系统和前面讲的U-Boot,在掌握了烧写方法后,可以自己下载。
3.4 源程序的获得、编译和调试
由于Linux是开源软件,所以运行在其下的应用软件也是开源软件,不管是哪一类的都免费获得源代码。
可以直接在已有的源代码上进行修改得到符合要求的代码。
论文中使用的就是已有的源代码,如图2所示。
Linux操作系统支持汇编,C,C++,Basic,Fortran,Pascal,JAVA,PHP等多种编程语言。
其下的文本编辑器是Vi和Emacs,二者均有强大的编辑功能。
图形界面的编程用的是Qt或是MiniGUI。
利用以上软件,跟在Windows和其他操作系统下的软件编写方法完全相同。
编写软件的过程与在其他系统下没有什么不同,不同的地方在与编译和调试。
嵌入式中称之为交叉编译和交叉调试。
交叉编译就是将在PC上编写好的源代码经过编译、链接生成可以在嵌入式系统上运行的代码,如图2所示。
在交叉调试中,调试器和被调试程序分别在PC系统和嵌入式系统中,这是与一般调试不同的地方。
交叉调试一般分为软件调试和硬件调试。
软件调试插入调试桩的方式进行。
典型的是GDB调试器,它分为GdbServer和GdbClient,前者作为调试桩安装在arm的嵌入式系统中,后者驻于本地PC 中,二者可通过串口、网口、并口通信。
硬件调试一般都使用的是仿真器,常用的如ROMMonitor、ROMEmulator、In-CircuitEmulator和In-CircuitDebugger。
硬件调试功能更强大,性能更优秀,但是有的价格昂贵,额外的设备增加了成本。
而ARM的JTAG端口实现在CPU内部调试,通过端口发送命令和接收信息。
JTAG采用的主要技术为边界扫描技术,它的基本思想就是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。
当芯片处于调试状态时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。
通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制,它提供了一个便捷的方式用于观测和控制所需要调试的芯片。
通过JTAG接口可以方便地对目标系统进行测试,同时,还可以实现Flash的编程,是非常受人欢迎的调试方式。
主机从网络下载mp3格式歌曲,通过串口(或tftp)传送到开发板上,用经过调试的播放器,结合教研室开发的功率放大器,很好的实现了播放音频的功能。
在此基础上,还可以进一步开发视频播放功能。
除了播放器应用软件,还可以根据存储器的大小增加其他应用程序。