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系列专门为安全要求较高的应用而设计。
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)传送到开发板上,用经过调试的播放器,结合教研室开发的功率放大器,很好的实现了播放音频的功能。
在此基础上,还可以进一步开发视频播放功能。
除了播放器应用软件,还可以根据存储器的大小增加其他应用程序。