ARM应用技术是抛去操作系统,面向ARM自身的应用技术,总的来讲可以分为三部分:ARM体系结构应用、ARM最小系统应用和ARM外设(外围接口)应用。ARM体系结构应用包含比较多的模块,下面逐个解析。
ARM体系结构应用-RTC应用,很多ARM CPU本身都自带RTC单元,但并不是所有的RTC都设计合理。RTC本身用于时间的记录,如果保持供电就可以实现时间的“永”不丢失属性,这可是非常常用的嵌入式部件,无论是工业定时还是在手机时间显示或者是闹钟功能都大量使用。不过RTC只有不断电才能保证时间的连续性,如果重新上电(对RTC供电而言不是对ARM处理器),通常需要矫正一下时间,有些ARM处理器提供的RTC没有提供独立供电接口,硬件掉点重起就需要矫正时间,这种情况下如果有网络,就可以通过网络时间服务器作为校准源,当没有网络或者是对时间要求比较严格时就需要外扩RTC(如DS1337);有些ARM本身提供RTC提供独立供电接口(如S3C2440),这样就可以直接采用自带的RTC,外接独立供电池。在需要时间的应用情况下,根据ARM处理器合理设计RTC单元是RTC应用的关键(自带的不一定是合乎需求的)。
ARM体系结构应用-协处理器2D/3D加速器的应用,2D/3D加速器通常是某些ARM的特色部分,2D可以加速2维图形图象的处理,在Framebuffer的双Buffer机制中,使用2D加速可以消除图形图象的抖动;3D加速器可以用于3维图形图象的处理,就是处理立体画面,像iphone中的图象大部分都是采用3D加速器技术进行的处理,ARM中3D加速器就象PC机中的GPU,本身就是为3维图形图象处理而生。ARM中集成的3D加速器大部分都是PowerVR架构,包括iphone,使用的图形库是OpenGL ES,想开发ARM上的三维游戏最好了解这些知识。
ARM体系结构应用-协处理器FPU的应用,FPU浮点处理器不是ARM处理器的必须,但有些ARM处理器自带FPU浮点处理器,这样对浮点数处理就非常的快速。如果没有自带FPU浮点处理器通常使用的是软件浮点库,把浮点数分割成整数处理,这样就消耗比较多的CPUMIPS数。所以在特殊应用的情况下使用带FPU浮点处理器将可以带来性能的提升。
ARM体系结构应用-协处理器SIMD应用,SIMD严格来讲并不是协处理器,而应该称为SIMD加速指令,它的意思是一个指令周期可以同时操作多个数,这在多媒体运算中有很大的优势,如可以加速矩阵运算(色彩空间转换YUV-RGB)、DCT/IDCT(图象编解码中的核心算法)转换等,有些ARM处理是采用这种方式来提高对多媒体(如视频编解码)的处理能力。
ARM体系结构应用-协处理器DSP和HW CODEC应用,使用SIMD有一定的多媒体处理能力,但这种能力有限,如不能解码高清的视频(1080P),这时一个比较好的方式是使用DSP和HW CODEC。使用HWCODEC的好处是功耗相对低,缺点是对各种编码格式视频的兼容性不好;使用DSP的好处是对各种编码格式视频的兼容性较好,当需要支持新的编码格式时,只需要修改软件就可以实现,灵活性强,缺点是攻耗较大。有的情况下,为了获取更高的多媒体处理能力还会集成多个DSP,或者为HW CODEC配上另外一个ARM核作逻辑控制用,这中方式就是目前常说的双核或者多核处理器 。从另外层面来说,双核或者多核处理器并不是X86 CPU的专利,ARM的世界也普遍存在这种现象。
ARM体系结构应用-协处理器Jazelle应用,Jazelle是JAVA语言的加速器,可以加速Java指令的执行,Java属于解析语言并不翻译成机器语言,不能直接在ARM上运行,需要JVM虚拟机来运行Java指令,在JVM虚拟机运行导致了Java程序执行效率不高,为了改善这一缺点,Jazelle单元可以直接把Java指令转换成ARM指令或者直接通过硬件来执行,这样大大提高了Java程序的执行效率,Google 手机操作系统Android的Java虚拟机(Dalvik)就使用了这种ARM自带的硬件加速技术。
《体系结构应用》至此已经解析完毕。
(作者 冯青华 信庭嵌入式工作室-主管 Blog:http://blog.csdn.net/fqheda )
<转载请注名来路>