首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM的嵌入式Linux应用程序开发研究 02

ARM的嵌入式Linux应用程序开发研究 02

要建立交叉开发环境,主要需要几个工具包: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种方式:网络下载(tftp,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的编程,是非常受人欢迎的调试方式。
4结 论
主机从网络下载mp3格式歌曲,通过串口(或tftp)传送到开发板上,用经过调试的播放器,结合教研室开发的功率放大器,很好的实现了播放音频的功能。
在此基础上,还可以进一步开发视频播放功能。除了播放器应用软件,还可以根据存储器的大小增加其他应用程序。
返回列表