ARM应用技术是抛去操作系统,面向ARM自身的应用技术,总的来讲可以分为三部分:ARM体系结构应用、ARM最小系统应用和ARM外设(外围接口)应用。ARM体系结构应用包含比较多的模块,下面逐个解析。
ARM体系结构-MMU应用,MMU负责逻辑地址和虚拟地址到物理地址的映射,并提供地址空间访问的授权,CPU的地址操作,并不是直接的操作物理地址,而是通过MMU转接。如CPU操作一个寄存器,它操作的是逻辑地址,逻辑地址通过MMU操作实际的寄存器物理地址,就是说假设这个寄存器物理地址是0x80000000,那么逻辑地址是0xFF000000的话,CPU操作0xFF000000就是操作寄存器本身,添加这种机制就可以定制地址空间的权限,对某些地址空间进行保护或者监控对非法地址空间的操作。在多进程系统中,通过MMU可实现内存地址空间的复用,这就是虚拟内存的概念,在PC机中你可能有么一这个概念,PC机的虚拟内存比物理内存要大很多,在这样的机制下,1号进程和2号进程就可以用不同的虚拟地址空间存放可执行程序区,而在1号进程(Flashget)和2号进程(TTplayer)实际执行的过程中,它们的可执行程序,是可以通过MMU映射到相同的物理内存空间,这样就可以节省内存,并且通过页的管理模式可以执行比内存本身还要大的程序,和PC机一样,ARM的MMU同样的功能。这里有三个概念物理地址、逻辑地址和虚拟地址,它们是通过MMU相互转换的。
ARM体系结构-APM应用,电源管理是ARM的重要组成部分,其实不止ARM,其它的处理器应用(包括x86应用)都在讲究绿色概念,节省电能是绿色的主题之一;另外,手持设备中应用的ARM讲究续电能力,如待机时间多长,连续通话时间多长,连续播放视频多少小时,连续播放歌曲多少小时,这些都和电源管理有关系。电源管理是个大的概念,需要硬件和软件(包括驱动、系统和应用)的配合,ARM体系结构内部的电源管理只是其中的一部分,在体系结构内部的电源管理包括CPU的管理和模块的管理,CPU的管理就是常说的休眠(Sleep)、待机(Idle)、深度休眠(Deep Sleep)、唤醒(Normal)等状态的切换,每种状态管理的策略不一样,总的来讲就是对CPU频率(关断、频变)、SDRAM刷新时钟、模块时钟源、CPU电压等的综合管理;模块的管理就是接口模块的电源和时钟源的管理,比如当前不使用LCD接口就可以把LCD接口clock源切断或者把LCD接口模块的电源Power Off ;其它不用的接口或者当前不用的接口都可以用这种方法来做电源管理。
ARM体系结构-PLL应用,ARM有丰富的接口,不同的接口需要的数据速率标准不一样,导致需要的时钟源不一样,另外钟振或晶体提供的时钟频率也有成本和精度的问题,外部过高时钟源PCB裸露走线也会导致EMI(电磁辐射)/EMC(电磁兼容性)问题,所以就需要PLL模块。PLL有(整数)倍频功能,可以提供高频的时钟,PLL有变频功能,可以提供非整数倍的升频功能,也可以提供非整数倍的降频功能,当然也能提供整数倍的分频功能。PLL就是用来做这些事情。(数字电路每个模块要工作必须有一个Clock输入)
ARM体系结构-WatchDog应用,很多ARM处理都提供内部WatchDog,内部WatchDog通常称为软件看门狗,可以用来监控软件的运行和接口模块的数据接收,如果软件运行有问题就重起系统(硬件),但通常这种软件看门狗是有缺陷的,如果硬件挂死,特别是内部WatchDog(寄存器配置失效)挂死,是没办法做到重起系统(硬件)的。所以在做WatchDog设计时不推荐使用内部WatchDog,而是采用外扩硬件看门狗,当然外扩硬件看门狗也需要编写程序(通常使用GPIO),并且需要良好的设计(需要设计成对硬件的监控能力,通常检测的是一个信号,选择合适的检测的信号要看你的设计硬件平台),如过设计没能有效的检测合适的信号,那同样和使用ARM内部WatchDog一样没有太大差异,不能做到硬件挂死情况下的系统重起。
(作者 冯青华 信庭嵌入式工作室-主管 Blog:http://blog.csdn.net/fqheda )
<转载请注名来路>