随着信息数字化时代的到来,嵌入式系统步入了一个快速发展的时期。它最早应用在工控、仿真、数据采集等领域,如今更是为信息电器,智能手机、无线PDA、掌上笔记本带来了日新月异的发展。现在嵌入式系统早已渗透到人们工作生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,除了承继了Linux源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特性。
1.ARM处理器
ARM嵌入式芯片是一种高性能、低帧率的RISC芯片。它由法国ARM公司设计,世界上几乎所有的主要半导体生产商都生产基于ARM体系结构的通用芯片,或在其专用芯片中应用相关ARM技术。
ARM系列处理器依据各自特征应用于不同领域。从应用的角度上ARM芯片选择的通常原则:MMU;处理器速率;外置储存器容量;USB插口;GPIO数目;中断控制器;IIS(integrateinterfaceofsound)音频插口;nWAIT讯号;RTC(realtimeclock);LCD控制器;PWM输出等各项指标。
2.嵌入式Linux系统
Linux是免费发行的、快速高效的操作系统,它的出现在计算机世界引起了一场革命。Linux以其代码开放、功能强悍又便于移植等特征成为嵌入式操作系统的新兴力量,在所有嵌入式操作系统中,Linux是发展最快、应用最广泛的构建嵌入式linux系统,借助Linux搭建嵌入式系统是近些年来出现的最令人激奋的方案之一。嵌入式Linux是根据嵌入式操作系统的要求设计的一种大型操作系统,又一个内核及一些依照须要进行订制的系统模块组成。其内核很小,通常只有几百kb,虽然加上其他必要的模块和应用程序,所需的储存空间也很小,特别适宜嵌入式系统。
3.应用程序开发
3.1交叉开发环境构建
对嵌入式系统而言,只武器必要的资源是前提条件,这也决定了嵌入式应用程序的开发环境不可能是资源有限的嵌入式系统,只能借助资源丰富的PC开发,之后完善交叉开发平台。
交叉编译器(cross-compiler)是进行交叉平台开发的主要软件工具。它是运行在一种处理器体系结构上,并且可以生成在另一种不同的处理器体系结构上运行的目标代码的编译器。要完善交叉开发环境,主要须要几个工具包:gcc,glib,binutils,gdb等。通常开发板都提供这种工具,倘若不是使用的开发板,在网上也是可以下载到全部软件包的。依次将它们安装在PC上即可。
Linux的软件安装方式与WINOOWs不同。Linux中按照不同的压缩打包方法使用不同的命令安装。在安装过程中,因为软件包之间的依赖关系,系统可能会警告还有什么没有安装,可以忽视这种警告。
3.2U-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种方式的配置,即使界面不同,但功能是一样的,其中makemenuconfig使用最广泛;(2)构建依赖关系。在第一次编译时发生,形成".de-pend"文件,运行"makedep"即可;(3)构建内核。这儿完善的是压缩的内核映像,使用"makezIm-age"或"makebzImage"。这样就完成了编译,下载在开发板即可。
通常来说与开发板通讯有3种形式:网路下载(tftp,ftp等),并口下载和USB下载。用tftp下载,须要配置Linux下的tftp服务,之后将PC和开发板直连线(非网线)即可;用并口下载,须要配置Linux下的串日通讯工具Minicom。配置的主要是一些重要参数,如码率。
并且只有系统内核是不够的,要使系统正常启动,还须要加载文件系统,所以须要制做文件系统。可以手工制做,而且工作量太大,通常是把现有文件系统加载到目标板,包括制做文件系统镜像和用NFS加载文件系统方式。
开发板上通常早已烧录好了嵌入式系统内核镜像linux运维博客,文件系统和上面讲的U-Boot,在把握了烧录方式后,可以自己下载。
3.4源程序的获得、编译和调试
因为Linux是开源软件,所以运行在其下的应用软件也是开源软件,不管是哪一类的都免费获得源代码。可以直接在已有的源代码上进行更改得到符合要求的代码。
Linux操作系统支持汇编,C,C++,Basic,Fortran,Pascal,JAVA,PHP等多种编程语言。其下的文本编辑器是Vi和Emacs,两者均有强悍的编辑功能。图形界面的编程用的是Qt或是MiniGUI。借助以上软件,跟在WINOOWs和其他操作系统下的软件编撰方式完全相同。
编撰软件的过程与在其他系统下没有哪些不同,不同的地方在与编译和调试。嵌入式中称之为交叉编译和交叉调试。
交叉编译就是将在PC上编撰好的源代码经过编译、链接生成可以在嵌入式系统上运行的代码。
在交叉调试中,调试器和被调试程序分别在PC系统和嵌入式系统中,这是与通常调试不同的地方。交叉调试通常分为软件调试和硬件调试。
软件调试插入调试桩的方法进行。典型的是GDB调试器,它分为GdbServer和GdbClient,后者作为调试桩安装在arm的嵌入式系统中,前者驻于本地PC中,两者可通过并口、网口、并口通讯。
硬件调试通常都使用的是仿真器,常用的如ROMMonitor、ROMEmulator、In-CircuitEmulator和In-CircuitDebugger。硬件调试功能更强悍,性能更优秀,并且有的价钱高昂,额外的设备降低了成本。而ARM的JTAG端口实现在CPU内部调试,通过端口发送命令和接收信息。
JTAG采用的主要技术为边界扫描技术,它的基本思想就是在紧靠芯片的输入输出管脚上降低一个移位寄存器单元。当芯片处于调试状态时侯,这种边界扫描寄存器可以将芯片和外围的输入输出隔离开来。通过这种边界扫描寄存器单元,可以实现对芯片输入输出讯号的观察和控制,它提供了一个方便的方法用于观测和控制所须要调试的芯片。通过JTAG插口可以便捷地对目标系统进行测试,同时,还可以实现Flash的编程,是十分受人欢迎的调试方法。
4.结论
主机从网路下载mp3格式歌曲,通过并口(或tftp)传送到开发板上,用经过调试的播放器,结合教研室开发的功率放大器构建嵌入式linux系统linux 删除文件夹,挺好的实现了播放音频的功能。
在此基础上,还可以进一步开发视频播放功能。不仅播放器应用软件,还可以依据储存器的大小降低其他应用程序。