刘阳 龙潜 孙永政
当前,嵌入式的技术应用越来越广发,从航天科技到民用产品,嵌入式产品的身影无处不在,而这些嵌入式产品的核心——处理器决定了产品的市场和性能。在32位嵌入式处理器市场中,ARM处理器占有很大份额。ARM不仅是一个公司、一种技术也是一种经营理念,即由ARM公司提供核心技术,只出售芯片中的IP授权,采取了别具一格的“Chipless模式”(无芯片的芯片企业),不参与生产,而是由合作厂商去生产具体的芯片和产品。
现在由于存储空间等原因,在嵌入式芯片上编程有较大的困难,选取合适的平台就显得很重要。由于Linux是开放源码的操作系统,吸引着全世界的程序员参与到发展和完善的工作中来,所以Linux保持了稳定而且卓越的性能。由于源代码可以修改、移植,Linux在嵌入式领域中的应用也越来越广。选用Linux作为平台,可以根据具体需要自由裁减源码,打造适合目标平台的环境,编写最有效率的应用程序。
可以预见,ARM与Linux在未来已经越来越壮大,在嵌入式产品市场上会占有越来越大的份额。在这种形式下,学习和研究ARM非常有必要,所以在这里介绍一下关于基于Linux系统的ARM9嵌入式系统设计的基础理论。
首先进行一下ARM开发环境的简介:
根据功能的不同,ARM应用软件的开发工具可分为编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板、JTAG仿真器、在线仿真器等。因此,一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统及函数库的集成开发环境一般来说是必不可少的。至于嵌入式实时操作系统、评估板等其他开发工具则可以根据应用软件规模和开发计划选用。使用集成开发环境开发基于ARM的应用软件时,其中涉及的编辑、编译、汇编、链接等工作可全部在PC机上完成,调试工作则需要配合其他的模块或产品完成。目前进行ARM嵌入式系统开发常见的开发工具主要有Real View MDK、IAR EWARM、ADS1.2、WinARM等。
RealView MDK开发工具是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。RealView MDK集成了业内最领先的技术,支持所有基于ARM的设备,能够自动配置启动代码,集成了flash烧写模块,还具有强大的仿真模拟、性能分析等功能。
IAR Embedded Workbench for ARM是IAR System公司为ARM微处理器开发的一个集成开发环境。比较其他的ARM开发环境,IAR EWARM具有入门容易、使用方便和代码紧凑等特点。IAR EWARM中包含一个全软件的模拟程序,用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境。由于ADS集成开发环境已经不再更新,因此无法支持新推出的微控制器芯片,而IAR EWARM在持续的更新环境中,因此IAR EWARM将成为越来越多的人进行嵌入式系统开发的首选开发环境。
基于ARM芯片的应用系统,多数为复杂的片上系统。在该复杂系统中,多数硬件模块都是可配置的,配置工作需要由软件预先完成。因此在用户的应用程序运行之前,需要专门的一段代码来完成系统基本的初始化工作。由于此类代码直接面对处理器内核和硬件控制器进行编程,所以一般使用汇编语言实现,这里我们称之为硬件启动程序。
在应用系统的程序设计中,如果所有的编程工作都由汇编语言来完成,其工作量巨大,并且不容易移植。由于ARM处理器的运算速度高,存储器的存取速度和存储量也很高,因此大部分编程工作可以使用c语言来实现。由此可见,c语言在ARM编程中具有非常重要的地位。
其次介绍一下ARM9嵌入式系统开发的过程:
第一,嵌入式软件开发的特点。学习嵌入式开发的过程,首先要了解嵌入式开发的特点。嵌入式系统与通用计算机在以下几个方面的差别比较明显:
一是人机交互界面,这是最大的区别,因为嵌入式系统很可能就不存在键盘,显示器等在计算机中常见的实现人机交互的设备,它所完成的事情也只能是不同的传感器的变化情况,并且按照事先规定好的过程仪式完成相应的处理任务;二是功能是有限的,嵌入式系统只能反复执行设计时已经定制好的并且在开发完成后不再变化的功能任务;三是时间的关键性和稳定性,大部分的嵌入式系统因为功能要求实时响应并且受到工作环境的影响很大,需要选择合理的硬件和保护措施,保证系统的稳定性可以正常运行。
除此之外,还要了解嵌入式软件开发具有的自身特点:
一是需要交叉的开发环境;二是引入设计方法;三是固化的程序;四是开发的难度很大。
第二,嵌入式软件开发的流程。嵌入式软件的开发因为它的开发难度大等自身特点,需要将硬件、软件、人力资源等集中起来,并进行适当的组合以实现目标应用对功能和性能的要求,而且实时性和功能一样重要。这就使嵌入式开发关注的方面更广,精准度更高。嵌入式软件开发的每个阶段都体现着嵌入式开发的特点。
一是需求分析阶段;二是设计阶段;三是生成代码阶段;四是固化阶段。
第三,嵌入式系统的调试。在进行嵌入式软件开发过程中,可以选择不同的调试方式,但应根据实际的开发需求和实际的条件进行选择,有以下几种主要的调试方式。
一是源程序模拟器方式;二是监控器方式;三是仿真器方式。
嵌入式系统的调试方法被分成不同的层次,就调试方法而言,分为硬件调试和软件调试两种。在使用硬件调试的时候,可以获得比软件调试功能更强大的调试性能,但是有的时候会价格昂贵,需要合适的开发工具。软件调试可以分为操作系统的内核调试和应用程序的调试,前者的操作比较困难,因为操作系统内核不方便增加一个调试器程序,而后者相对比较简单。
在这里我们只是对ARM9嵌入式系统做一个基础理论的讲解。嵌入式技术正在飞速发展,并期待着各种行业的深入渗透。我国具有雄厚的制造业基础,与传统的制造业结合,嵌入式系统有着巨大的市场空间。同时,基于嵌入式的应用可技术创新,将推动新产品、新产业的诞生。在新的高科技浪潮来临之际,我国正全力迎接机遇和挑战,嵌入式领域方兴未艾,Linux也越来越成熟,我们需要掌握更新的知识,实现自我价值,为祖国贡献力量!
参考文献:
[1] 马忠梅,马广云,徐颖慧,等. ARM嵌入式处理器结构与应用基础(2版)[M].北京:北京航空航天大学出版社,2007.
[2] 马忠梅,李善平,等. ARM&Linux嵌入式系统教程(3版)[M].北京:北京航空航天大学出版社,2014.
作者简介:刘阳(1993—),男,辽宁盘锦人,沈阳理工大学学生。
龙潜(1995—),男,江苏连云港人,沈阳理工大学学生。
孙永政(1994—),男,辽宁大连人,沈阳理工大学学生。