ARM+Linux动态数据采集系统在接触网检测中的应用
2011-04-27解立强
解立强, 盖 林
(1.中铁电气化局集团有限公司电气化公司,北京 100036;2.河北省南皮县供电有限公司,河北 沧州 061500)
接触网是电力机车获得电能的通道,它是整个电气化铁道供电系统的动脉,所以,有效的接触网检测系统在保证铁路安全运行方面显得尤为重要。与传统的接触式接触网检测技术相比,非接触式检测可以在不影响受电弓与接触线之间受流特性的基础上,有效提高检测数据的实时性和精确性,乃至整个系统的安全性。将线阵列CCD技术应用于接触网检测系统在很大程度上解决了获取动态图像的问题[1-2],而如何很好的采集态图像就变得至关重要。
以ARM最小系统板为开发平台,再移植嵌入式Linux操作系统在很大程度上可以解决动态数据采集的实时性问题。从硬件和软件两个方面,讨论了将嵌入式ARM+Linux技术应用于线阵列CCD接触网检测系统中采集动态图像的问题。
1 基于ARM的嵌入式动态图像采集硬件系统
ARM处理器以其先进的体系结构和对操作系统的支持等优点在嵌入式技术中得到了很多应用,本文所讨论的嵌入式系统也是迎合了其体积小、能耗低、实时性好等特点而设计完成的。整个检测系统硬件主要有三个功能模块组成:高速CCD实现动态图像数字化[3-4];嵌入式ARM处理器实现图像数据的采集;串口实现系统测试和数据传输。系统硬件布局框图如图1所示。
1.1 ARM模块的设计
嵌入式处理器是嵌入式系统的核心,是控制、辅助系统运行的硬件单元。设计选用Samsung S3C2440核心板,因为要运行嵌入式操作系统,所以该板选用了大容量的FLASH和SDRAM作为数据采集系统的存储系统。CPLD芯片主要用做FLASH和SRAM的逻辑控制。
S3C2440采用外部存储器和I/O统一编址的方式[5],将1 G byte的地址空间分为8个大小为128 MB的BANK。采集系统存储器空间分配如表1所示。
图1 系统硬件布局
1.2 CCD摄像机接口
采用TOSHIBA的TCDl209芯片,其驱动频率最高可达20 MHZ。ARM微处理器和CCD摄像机接口电路的设计必须要保证芯片之间在数据采集过程中速度匹配,系统采用S3C2440的外部DMA方式对相机输出数据进行采集,同时采用异步FIFO为核心的逻辑电路模块解决CCD摄相机输出和采集速度不匹配的问题。相机的输出信号经模数转换后输入到FPGA中,图像数据在帧同步、行同步和像元时钟的控制下有序的输入到FPGA内部的异步模块中,S3C2440通过DMA通道将图像从FPGA中采出。接口原理图如图2所示。
表1 存储器空间分配
2 基于嵌入式Linux的动态图像采集软件系统
嵌入式Linux系统由于源代码开放,使得各地的软件爱好者为其提供了丰富的实用软件支持,用Linux开发产品,会使产品成本大大下降。嵌入式Linux系统需要3个基本元素构成最小系统:系统引导程序,用于完成机器加电后的系统定位引导;Linux系统内核,为嵌入式系统
提供一个软件环境,为应用程序完成基本的底层的资源管理工作;初始化程序,完成基本的初始化。为使这个最小嵌入式系统具有一定的实用性,还需加上硬件的驱动程序以及一个或几个应用进程以提供必要的应用功能支持。
2.1 Linux操作系统的移植
采用运行Redhat Linux9.0的PC机,并通过串口与采集系统相连,开发工具链为GNU的跨平台开发工具链,交叉编译器是arm-linux-gcc-3.4.1。正如PC机上的硬盘分区一样,要使嵌入式Linux正常启动和运行,必须对flash空间进行细致的规划,并且必须具备三部分:Bootloader、kernel和文件系统。Flash具体空间分配如表2所示。
图2 CCD摄像机接口原理
设计选用的系统引导程序是韩国mizi公司开发的Bootloader(vivi),它适合于ARM9处理器。通过这段程序,可以初始化硬件设备、建立系统的内存空间映射图,从而将系统的软硬件环境带到一个合适的状态,为最终调用操作系统内核准备好正确的环境。系统选用的内核版本为 linux -2.6.14.1,拷贝至目录 home/arm/dev_home/kernel,解压内核并进入内核目录,修改内核目录树根下的的Makefile,并用“make menuconfig”命令对系统内核进行配置。系统采用Cramfs文件系统和Yaffs文件系统相结合的方法构建一个稳定、可靠、可读写的文件系统。Yaffs文件系统本身性能优越且易于移植,已经成功应用于多种操作系统中,并且还是一个开放源码项目,采用该文件系统作为用户数据区,用于存储采集到的图像。
2.2 CCD接口驱动程序设计
Linux通过设备驱动程序为应用程序提供了统一抽象的接口,从而隐藏了大量不同设备之间的区别和细节[6]。在Linux中所有对硬件设备的操作和通常的文件一样,利用标准的系统调用可在设备上进行打开、关闭、读取或写入操作。系统中的每个设备由“设备特殊文件”来代表。在设计中,驱动程序初始化显得尤为关键,在本系统中按照以下步骤进行:①设置s3c2440输入输出口的工作方式。②设置CCD摄像机接口所映射的BANK4的数据宽度为8位。③注册驱动程序。
2.3 图像采集程序
在Linux下可通过调用read函数实现数据的采集,其程序流程图如图3所示。
表2 Flash空间分配表
3 系统测试与分析
嵌入式系统的设计必须对其关键部分和系统整体进行测试,才能确定系统性能,进而确定系统设计是否达到预期要求[7]。在系统设计过程中和完成后进行了硬件和软件的测试,其中关键的相机接口功能测试如下。
(1)相机接口测试。系统测试软件主要是FPGA的开发环境QuatrusII和ARM的集成开发环境ADS1.2。相机接口的测试程序设计由FPGA和ARM程序配合完成。FPGA内部通过分频器和计数器模块模拟一个的256×256的CCD相机的输出信号,然后将模拟的数字图像信号和同步信号、像元时钟送到相机接口的FPGA部分进行采集。
(2)测试结果。通过上述测试方法对相机接口性能进行了测试,通过逻辑分析仪采集了接口工作时序,如图4所示。测试结果表明相机接口符合设计要求,可以实现对CCD相机的数据采集。同时经过测量,采集一次数据的时间约为220 ns。
4 结论
由于采用嵌入式ARM+Linux技术,对CCD相机图像可以进行实时采集,不仅为下一步的图像信号处理奠定了很好的基础,而且提高了系统的测量速度和精度。将该嵌入式系统应用到接触网检测系统中,由于采集的图像实时性好,使得检测系统能够快速的检测出接触网的瞬时拉出值,使得非接触式高速检测检测接触网成为可能。在试验室条件下,如果不考虑光线干扰和接触网振动等因素,测量分辨率可达0.2 mm。
图3 图像采集程序流程
图4 相机接口测试结果
本嵌入式系统具有良好的移植性,且造价低、使用简单,所以在功能上可以做进一步的扩展。例如应用在本文所讨论的线阵列CCD非接触式接触网检测系统中,在嵌入式系统中加上GPRS模块,可以实现数据无线传输;也可以配合DSP芯片,在嵌入式系统内实现图像识别和处理,检测出接触线高度以及瞬间动态拉出值等参数,使得产品性能大大加强。
[1]蔡学敬.基于Onuris线阵列CCD摄像技术的高速电气化铁路接触网动态检测系统[J].轨道交通 ,2007(5):54-55.
[2]董建军,莫易敏.基于DSP和线阵CCD的接触网检测系统[J].机车电传动,2006(3):62-63.
[3]鄂永.基于图像处理的铁路接触网检测系统的研究[D].大连:大连理工大学电子与信息工程学院,2009.
[4]张韬.基于图像处理的接触网检测系统研究与改进[J].铁道机车车辆,2009,29(1):68-71.
[5]廖日坤.ARM嵌入式应用技术开发手册[M].北京:中国电力出版社,2006.
[6]马忠梅,李善平.ARM &Linux嵌入式系统教程[M].北京:北京航空航天大学出版社,2005.
[7]徐海东,陈唐龙,隆超.客运专线接触网检测项目及技术标准研究[J].电气技术,2009(1):38-40.