摘要:描述了一种以轨道检测仪的为应用目标的ARM7嵌入式系统的设计过程。以ARM7TDMI核的嵌入式处理器S3C44B0为中心,采用了CH375、MAX197等高性能外围电路构建了系统的硬件平台,运用ARM特有的中断处理机制实现了数据采集、数据处理和人机互交对软件的实时性要求,该设计已成功的用于轨道检测仪样机。
关键词:ARM7;S3C44B0;快速中断;轨道检测仪
1 引言
对铁路轨道进行静态几何参数的检测是铁路部门的一项常规工作,使用便携式轨道检测仪能大幅降低检测人员的工作量。这种智能测量技术不仅可以提高测量的精度和可信度,还能提供现场的和后续的轨道数据分析,极大的提高了轨道检测工作的质量和效率。便携式轨道测试仪对嵌入式计算机系统的功能和性能提出了许多新的需求:高实时性、高运算性能、高集成度、低功耗、低成本。传统单片机系统虽然能完成一般的控制任务,但其运算能力太低,不足以满足现场数据处理的要求,由基于SoC思想设计的ARM系列微处理器构成的嵌入式系统便能良好的满足上述要求。ARM核以高性能低功耗著称,再配以IC制造厂商提供的大量片上外设,使得ARM系列处理器拥有非常优良的嵌入式应用性能。本设计中采用了三星公司制造的ARM7TDMI核处理器S3C44B0完成控制和运算工作,12位高性能AD转换器MAX197完成传感器信号的转换,USB主控制器CH375完成数据到U盘的转存,系统也包含了液晶屏、键盘、微型打印机等其他必要的外设。
2 系统设计要求
2.1 测量原理
轨道检测仪的测量原理如图1所示,传感器由一个装有滚轮的机械支架固定,操作人员在轨道上推行该检测仪。位移传感器测量轨道AB之间的间距d,倾角传感器测量轨道平面与水平面的倾角θ,光电编码器被连接到一个滚轮上用于记录当前的里程L。轨道检测仪可以设置采样间隔,范围0.5m-1m。当里程达到采样间隔时,将当前里程L、轨距d、超高h和三角坑t作为一条记录保存起来。
机械支架在推行过程中会产生频率较轨道倾角变化频率高很多的振动,因此需要对倾角信号进行滤波处理才能减小测量误差。
图1轨道测量原理图 Fig. 1 Principle of track measure
2.2 性能需求
轨道检测仪的工作流程如下:使用AD转换器以33Hz的采样频率对位移和倾角传感器的信号进行采样,然后对前80个倾角采样值进行一次滤波运算,当里程每增加5cm时,将当前的轨距和超高保存至队列,当里程达到采样间隔时,则根据队列里的数据算出三角坑,然后与轨距和超高作为最终数据一并保存起来。因此系统需要一个定时器,并且能在30ms内完成一次滤波运算。位移传感器量程为5cm,转换关系为1V/1cm,倾角传感器量程为±10º,转换关系为1V/1º,轨距、超高和三角坑的显示分辨率要求达到0.1mm。因此AD转换器需要拥有12位的精度。此外还需要实现U盘存储、现场打印、时钟、液晶显示、键盘输入等功能。
3 硬件设计
3.1 硬件整体设计
ARM7系列的处理器的型号较多,设计使用了较为常见的三星公司生产的S3C44B0,它包含了一个运算能力强大的ARM7TDMI核和大量实用的外设[1]。根据应用的实际需要,为S3C44B0配置了1M×16Bit的Nor Flash SST39VF1601和4Banks×1M×16Bit的SDRAM HY57V641620。
MAX197是一款单电源,多通道,多量程的1/2LSB精度12位的AD转换器,采样速率可达100ksps,完全满足33Hz的采样速率的要求。它虽为单5V供电,但具有±10 V、±5 V、10 V和5 V四个量程,同时集成了时钟发生器和基准电路,数据接口也可与通用控制器直接连接。MAX197以简洁的电路提供了相当高的性能,是嵌入式应用的理想选择[2]。
CH375是一个USB总线的通用接口芯片,支持主从两种方式,主机方式支持常用的USB全速设备。它内置了处理Mass-Storage海量存储设备的专用通讯协议的固件,外部控制器可以直接以扇区为基本单位读写常用的USB存储设备[3],提供了一个实用的嵌入式设备的U盘存储方案。
图2硬件结构框图 Fig. 2 Picture of hardware structure
系统的框图如图2所示。其中S3C44B0的IO引脚由3.3V的LVCMOS驱动,最高输入电压为4.6V[1],因此总线在挂接MAX197和液晶屏等5V逻辑电平的外设时应该加上总线收发器以做隔离,此外部分用于输入GPIO引脚也需要加上缓冲器。
3.2 高效率电源管理
电源管理是电池供的电便携式设备的关键部分,使用低功耗器件和提高电源管理效率是延长系统连续工作时间的两个重要手段。设计中根据用电器的特征和成本上的考虑做出如图3所示的供电方案。
图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处理器特有的中断机制可以使实时数据的采集和处理实现起来更加方便和可靠。此外,高效率的供电系统也是本文的亮点。 | |
|