APP下载

基于ARM9的PSD数据采集与处理系统研究

2012-03-16任一飞徐熙平王春阳苏玉靖

关键词:改进型内核嵌入式

任一飞,徐熙平,王春阳,苏玉靖

(长春理工大学 光电工程学院,长春 130022)

光位置敏感探测器(Position Sensitive Detector,PSD)是上世纪70年代研制出的一种优秀的光电位置传感器,它具有频谱响应宽、响应速度快、信号处理简单、分辨率高、便于与微机接口等优点,在精密尺寸测量以及工业检测和监测等非接触测量领域有广泛的运用。随着PSD的大量使用,其自身缺点也暴露出来,一方面受限于早期硬件条件以及成本的考虑,无法使用更高精度的AD来进行数据采集,另一方面还有其自身的非线性误差无法避免,虽然在中央区线性度比较理想,但是在边缘区的准确度却受严重制约,所以应当寻求一种兼顾硬件和软件两个方面提高PSD精度的办法。

本文选择在嵌入式领域广泛使用的ARM9处理器,在开发板上设计实现数据采集的硬件平台,同时在嵌入式平台上运行Linux操作系统做数据处理,这样便从硬件和软件两个方面提高了PSD测量的总体精度。

1 采集系统设计

1.1 系统结构设计

本系统是由信号预处理、A/D变换、控制模块、总线模块及核心处理器组成,其总体结构如图1所示。

图1 系统总体结构Fig.1 The struc ture of system

1.2 软件系统搭建

系统的软件平台采用开源并非常适合做嵌入式的Linux操作系统,使用U-boot作为系统的Bootloader,内核采用Linux2.6.34版本,文件系统使用YAFFS2[1]。嵌入式硬件环境核心处理器使用三星公司的S3C2440A,嵌入式系统移植的主要步骤如下:

(1)U-boot移植,由于硬件开发环境使NANDFlash,所以移植的主要任务便是使U-boot可以支持NAND启动,同时使其支持Yaffs2文件系统。

①修改U-boot对NANDFlash支持。

首先需要在配置文件include/configs/S3C2440.h中添加支持NANDFlash操作的相关宏定义,具体操作如下。

然后,在drivers/mtd/nand/Makefile文件中添加s3c2440_nand.c的编译项,如下:

重新编译U-boot,烧入NANDFlash,重新启动,便可看到NAND相关操作命令可以使用了。

②接下来需要修改U-boot支持Yaffs2文件系统支持。

首先在include/configs/unsp2440.h中添加yaffs2烧写宏定义,如下:

接着在include/linux/mtd/mtd.h头文件的mtd_info结构体中添加移植中用到rw_oob和skipfirstblk数据成员;在nand_write_skip_bad函数中添加对Nand OOB的相关操作;最后在nand_write函数中添加对yaffs2的支持。重新编译U-boot,会在help菜单中发现已经支持对Yaffs2文件系统烧写的命令了。

(2)内核移植,该部分主要完成的工作是修改MTD分区使其与bootloader中的分区表一致,以及使该版本的内核支持Yaffs2文件系统[2]。

①修改MTD分区表,编辑文件arch/arm/plat-s3c24xx/common-smdk.c。

②执行如下命令将Yaffs2文件补丁写到内核中去,使其支持文件系统。

# ./patch-ker.sh c/opt/studyarm/linux-2.6.34/(本系统使用路径)

完成以上操作,通过配置内核,编译内核,最终会在arch/arm/boot/目录下生成zImage内核文件。

(3)使用BusyBox将YAFFS2文件系统制作完成。U-boot可以支持网烧写,可以通过tftp服务器,将配置好的内核与文件系统烧入NANDFlash中对应位置即可运行嵌入式系统[3]。

1.3 AD采集系统设计

图2 A D电路图Fig.2 Circuitdia gram of AD 92 44

本次采集系统所使用的是14位、65MSPS的数模转换器AD9244。该芯片使用多级差分流水线架构,内部包含高性能的采样放大器、基准的电压源及误差修正电路。芯片在整个系统中的接口电路如图2所示,在整个电路中,模拟地和数字地采用了地层的形式,并且都是单点接地,同时在电路中也采取了防静电措施,从而保证了AD的正常工作。

2 数据处理算法设计

PSD器件的非线性误差是影响该器件性能的重要指标,除了可以使用硬件电路弥补误差外,在嵌入式系统下,可以使用函数来实现算法,从而对其非线性的误差进行弥补[4]。通常用来补偿PSD非线性误差的算法有:插值法、逆误差传播算法(BP算法)等[5,6]。但插值法容易产生震荡,BP算法收敛较慢,在这里可以使用小生境遗传算法加上BP算法来共同处理数据,这样便克服了BP算法收敛速度慢的缺点[7],算法流程图3所示。

图3 算法流程图Fig.3 The flow chatofalgorithm

最终在MatLab7.0下,取100组数据和30组测试样本,分别使用BP算法与改进型的BP算法进行测试。测试后结果图5所示,可以看出使用改进型的BP算法克服了传统BP算的缺点,收敛速度有了较大提升。

图4 改进型BP算法与BP算法比较Fig.4 Compare improved BPandBP

3 结论

本文提出了一种使用嵌入式平台搭载采集系统硬件,嵌入式系统运行采集系统数据、处理软件的方式,使用嵌入式系统比传统意义上使用单片机在测量精确度上有一定程度的提高,同时使用后台算法去进行数据处理,补偿了PSD器件的非线性误差,使PSD器件的测量精度有了提高,具有一定的应用价值。

[1]韦东山.嵌入式Linux应用开发完全手册第9版[M].北京:人民邮电出版社,2010.

[2]杨宗德,邓玉春.Linux高级程序设计第2版[M].北京:人民邮电出版社,2009.

[3]潘巨龙,黄宁.ARM9嵌入式Linux系统构建与应用[M].北京:北京航空航天大学出版社,2006.

[4]张广军.PSD器件及其在精密测量中的应用[J].北京航空航天大学学报,1994,20(3):259-262.

[5]袁红星,王志兴,贺安之.PSD非线性修正的算法研究[J].仪器仪表学报,1999,20(3):271-274.

[6]刘迈.改进型的神经网络PSD非线性补偿研究[J].中国测试,2009,35(2):37-39.

[7]孙晶华,桑恩方,莫长涛,等.一维PSD非线性修正的共轭梯度算法[J].光学技术,2004,30(4):481-483.

猜你喜欢

改进型内核嵌入式
Cr5改进型支承辊探伤无底波原因分析
强化『高新』内核 打造农业『硅谷』
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
改进型CKF算法及其在GNSS/INS中的应用
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
微生物内核 生态型农资
改进型逆变器无效开关死区消除方法
改进型抽头电感准Z源逆变器