当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于ARM的嵌入式Linux应用程序开发研究

0 引 言

当今社会,嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的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种方式:网络下载(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)传送到开发板上,用经过调试的播放器,结合教研室开发的功率放大器,很好的实现了播放音频的功能。

在此基础上,还可以进一步开发视频播放功能。除了播放器应用软件,还可以根据存储器的大小增加其他应用程序

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Arm CPU正在从根本上推动AI变革,并造福地球。Arm架构是未来AI计算的基石。​

关键字: ARM AI

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

为了赶超云计算市场上的竞争对手,谷歌正试图通过定制的Arm服务器芯片降低云计算服务成本。

关键字: 谷歌 ARM 定制芯片

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

随着汽车软件数量爆发式的增长,整个行业都需要重新思考汽车产品的开发流程。为此,Arm推出了丰富的硬件IP、新的系统IP,以及全新的汽车计算与计算子系统产品路线图,旨在为各种汽车应用实现性能、功能安全、可扩展等方面的支持。

关键字: ARM 汽车电子

知名移动芯片设计公司ARM最近迈出重要一步,它正式推出汽车芯片设计。ARM推出的芯片设计方案名叫Neoverse,随同芯片一起推出的还有面向汽车制造商、汽车供应商的新系统。

关键字: ARM 汽车芯片 芯片

随着通用人工智能的发展,数据中心的计算需求逐步提高。针对多模态数据、大模型的推理和训练需要更高的算力支持,而随着算力提升与之而来的还需更关注在功耗方面的优化。对于头部云计算和服务厂商而言,针对专门用例提高每瓦性能变得至关...

关键字: ARM 服务器 AI Neoverse CSS

一直以来,riscv架构都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来riscv架构的相关介绍,详细内容请看下文。

关键字: riscv ARM riscv架构

最新消息报道,知情人士透露Arm近日裁掉了中国70多名软件工程师,并会将部分职位转移到中国以外的地区。Arm通过“全球服务”部门已经将支持其中国客户的工作外包给安谋科技,该部门曾经拥有约200名员工。

关键字: ARM 裁员

凭借着在个人计算机领域的广泛应用打下的坚实基础,X86自始至终统治着整个服务器生态。而这并不是业界希望看到的,因此Arm服务器被给予厚望。业界期盼Arm能够带来新的服务器CPU替代:打破一个同质化的数据中心架构,实现更高...

关键字: ARM 服务器 AI
关闭
关闭