基于ARM7的轨道检测仪的嵌入式系统设计
图3系统电源方案 Fig. 3 Scheme of power supply
DC-DC电源的效率虽高,但纹波系数较大,不适合模拟电路的供电;线性稳压器虽然稳压效果好,但是效率低,且只能降压。AD转换器工作电流很小且对电源稳定性要求高,故直接使用线性稳压器给其供电,而数字部分都采用DC-DC电源,对于处理器所需的多电压,也采用线性稳压器,由此带来的功率损耗还可接受。传感器所需的正负电压需要通过DC-DC的升压和反转才能得到,为了消除其纹波的影响同时使用了线性稳压器。对于功率较大的液晶屏背光和打印机则使用单独的DC-DC,并由处理器控制。同时DC-DC对负载大幅度波动的适应不是很好,打印机的机头产生的功耗是间歇性的,瞬时功率很高,因此DC-DC需要有足够的功率裕度。
此电源方案在实践中取得了良好的效果,系统在关闭背光和打印机的情况下,12V蓄电池的输出电流小于120mA。
4软件设计
4.1 实时数据采集
由于数据采集对实时性的要求很高,所以软件的设计没有采用操作系统,而是由多个中断服务程序和主程序组成。设计一共用到4个外部中断和3个内部中断,分别来自光电编码器正反向转动、MAX197、CH375、RTC和两个定时器。其中比较重要的两个中断分别来自光电编码器和产生采样频率的定时器,前者的特点是频率较高,可达1KHz,且不能丢失,后者的特点是中断服务程序的运行时间长,需要完成滤波运算,因此要求中断是可嵌套的。ARM处理器在硬件上不直接支持中断服务程序的嵌套运行[4],虽然可以通过软件的方式实现,但会增加额外的运行开销。巧妙的利用ARM的特有的中断机制就可以解决上述问题,ARM提供FIQ和IRQ两类中断,FIQ中断到来时处理器将运行状态转到FIQ模式下,该模式下拥有专用的寄存器以减少压栈带来的时间的损耗,IRQ类似,但专用寄存器没有FIQ多。因此,当处理器在IRQ模式下运行中断服务程序时,是可以立即响应FIQ中断的。将光电编码器产生的中断作为FIQ类型,其他中断作为IRQ类型就可以使每个中断得到及时的响应[5]。
S3C44B0的中断控制器是可以将某个中断设定为FIQ或IRQ类型送至ARM核的。ARM核只有FIQ和IRQ这两个中断信号线,因此处理器需要中断控制器的协作才能确定某个中断来自哪个中断源,S3C44B0提供了两种解决方式:VECTORED INTERRUPT MODE和NON-VECTORED INTERRUPT MODE。VECTORED INTERRUPT MODE可以像CISC处理器那样不同的中断执行不同的中断处理程序,其实现原理是当中断到来时由硬件逻辑根据具体中断源产生一个与之相应的跳转指令放到总线上,ARM核取得该条指令后便立即跳转到相应的处理程序[1]。这样可以提高中断响应速度和简化程序设计,但是这种模式只支持IRQ类型的中断;NON-VECTORED INTERRUPT MODE则像其他ARM处理器一样,由中断服务程序去访问中断控制器的I_ISPR寄存器来确定中断源。
设计中将光电编码器的中断类型设为FIQ类型,并使用NON-VECTORED方式,其他中断设为IRQ类型,使用VECTORED方式。中断向量表由两部分组成,前部分为ARM核的异常跳转指令,后部分供S3C44B0的VECTORED中断方式使用。中断服务程序可由汇编或者C语言编写,对于FIQ和IRQ类型的C语言函数需要加上__irq宏,编译器才能生成正确的返回指令。
4.2 软件的整体设计
由于没有操作系统,启动代码和应用程序是融为一体的,启动代码由汇编语言编写,除前面的中断向量表以外,还负责硬件初始化,将自己从ROM拷贝到SDRAM,初始化各个模式下的堆栈等,完成了上述工作之后程序才能跳入由C语言编写的函数之中去。
数据采集之外的工作对实时性要求很低,除了键盘扫描和RTC使用低优先级的中断之外,其他部分都包含在主程序循环里。特别需要注意的是,由于中断向量表存放在Flash中,在向Flash写数据的时候必须关闭所有中断,所以需要保存的数据应先放到SDRAM中去,待一次测量完成之后再写至Flash。
USB控制器CH375的制造商提供了U盘读写的库文件,只需要外部定义读写CH375硬件的函数和将中断服务程序配置到相应的中断,就可以实现对U盘FAT文件系统的操作。
4.3 编译与调试
设计采用的软件开发环境是ARM公司的ADS1.2,编译C语言程序时可能会产生用于Semihost通信的代码,其中包含软中断SWI指令,但设计中并未包含SWI异常处理的程序,编译器也没有相应的编译选项去掉Semihost功能,一旦遇到SWI指令便会进入软中断异常。因此可以反汇编机器码,找到对应的函数将其重定义即可。
5 结束语
嵌入式系统的特点就在于其应用的针对性很强,设计充分的利用了ARM7处理器的性能和资源,根据特定应用目标构建整个软硬件平台,实现了高性能、低功耗的目标。该系统已成功的用于轨道检测仪样机,对其他基于ARM处理器的嵌入式系统的开发设计具有很好的参考意义。
本文作者创新点:传统的测试仪器多以单片机为核心,但是单片机速度较慢,资源较少,在许多应用环境中必须对其进行扩展,因此不利于降低系统功耗和提高集成度。将ARM7处理器应用到轨道检测仪的设计是新的信息处理技术与传统应用的一次创新结合,ARM7嵌入式平台在提升系统性能和集成度的同时也改变了以往的系统设计方法,尤其是ARM处理器特有的中断机制可以使实时数据的采集和处理实现起来更加方便和可靠。此外,高效率的供电系统也是本文的亮点。
参考文献
[1] S3C44B0X Datasheet [Z]. Samsung. Co. Ltd. , 2003.
[2] 张俊涛,王长安. 12bA/D转换器MAX197及其应用[J]. 现代电子技术 , 2004,(19) .
[3] 李新龙, 翟宏范, 狄国伟, 王鑫. USB芯片CH375在电能测量仪系统中的应用[J]. 微计算机信息 , 2006,(26).
[4] 杜春雷. ARM体系结构与编程 [M]. 北京: 清华大学出版社, 2003.
[5] 季振华. 基于ARM7TDMI内核的S3C44B0异常处理分析[J]. 微计算机信息 , 2006,(05).
- 高性能嵌入式ARM MPU在医疗电子系统中的设计应用(05-12)
- 嵌入式技巧:ARM的三种中断调试方法的介绍(05-13)
- 关于嵌入式系统的软硬件协同设计(05-13)
- 多路嵌入式H.264视频服务器的设计详解(06-04)
- 一种时间触发的多任务调度器设计(06-07)
- 针对复杂嵌入式应用的创新处理器实现方法(07-11)