江俊 韩梦 梁小芳 何翔
摘 要:随着计算机技术的飞速发展,嵌入式系统已经广泛应用于工业控制、家用电器以及移动通信等各行各业中。本文主要研究嵌入式系统的数据采集以及处理过程。首先介绍了ARM集成开发环境,然后分析了Cortex-A9运行过程,最后阐述了嵌入式系统的数据处理过程,并通过蝶形算法在Cortex-A9微处理器基础上进行了实现。
关键词:嵌入式;数据处理;傅里叶变换;蝶形算法
Abstract:With the rapid development of computer computing,embedded systems have been widely used in industrial control,household appliances,mobile communications and other industries. This paper mainly studies the data acquisition and processing process of embedded systems. This paper first introduces the integrated development environment of ARM,then analyses the running process of Cortex-A9,and finally describes the data processing process of embedded system,the butterfly algorithm is implemented on the basis of Cortex-A9 microprocessor.
Keywords:embedded;data processing;Fourier transform;butterfly algorithm
0 引 言
嵌入式系统是以计算机技术为基础的应用于某些指定作用设备的专用计算机系统,这些设备一般包括嵌入式微处理器、嵌入式操作系统以及硬件设备,也就是说,是嵌入式系统与系统硬件耦合在一起的紧密计算机系统。事实上,嵌入式系统已经无处不在,小到MP4、手表、智能玩具,大到网络家电、机顶盒以及车载设备等等,都要应用嵌入式系统。在服务业以及工业之中,嵌入式系统主要用于自动化仪表、医疗仪器以及过控工程之中。嵌入式系统已经融入了服务业与传统工业。
2012年徐春青设计了USB Host系统,该系统能够在PHILIP LPC2210微处理器上稳定运行,并且能够完成大容量存储设备的拔插识别、建立目录和数据读写功能,为嵌入型系统发展做出了重大贡献[1]。2014年余婷婷研究了嵌入式设备以及文件系统技术,并提出了嵌入式系统文件的体系结构,设计了嵌入式系统文件的外部设备驱动,最后为嵌入式系统发展指明了方向[2]。2013年王亚刚深入分析了当今已有的嵌入式Linux系统裁剪原理,然后提出了一种新的基于ELF目标层的嵌入式系统裁剪方法,该方法剔除了目标文件中的无用代码,提高了裁剪粒度以及灵活性,从而提高了ELF目标代码质量[3]。2013年程广辉设计实现了二代以及三代内核系统的嵌入式虚拟平台,使得嵌入式虚拟化平台在安全方面有了大幅度提升,并以PC步进电机为例实现了一种可靠体系构架[4]。
由于嵌入式系统的广泛应用,研究基于ARM的嵌入式数据采集与处理方法尤为重要。鉴于ARM的嵌入式数据采集与处理方法众多,本文在前人研究的基础上,进行了数据处理的FFT程序实现。
1 ARM集成开发环境
ARM公司推出了一款专门针对数据采集与处理的开发与调试综合性软件,其最新版本为ADS1.2,用户可使用ASD编写各种基于RISC处理器数据处理程序,编译程序代码可采用C、C++以及ARM汇编语言。ADS由图像界面开发工具、命令行开发工具以及各种辅助工具构成。针对数据采集电路的软件设计主要包括Cortex-A9启动程序初始化、A/D数据采集与处理、数据I/O程序、LCD波形显示程序以及触摸屏控制程序。
Cortex-A9启动程序主要完成系统复位后的初始工作;A/D数据采集程序主要完成对模拟输入信号的定时采集以及连续采集;I/O程序实现对数据的输出;LCD显示程序实现参数检测结果的实时显示;触摸屏程序則实现简单的人机交换。
2 嵌入式Linux在ARM上的运行
由于Linux操作系统具有高度的灵活性,可满足不同的用户需求,Linux不仅继承了Unix特性,而且成为了嵌入式开发的市场主流。除此之外,Linux还具备良好的移植性能,适用于多种系统级的处理器。
2.1 嵌入式Linux的内核结构
Linux内核主要由如下几个重要的子系统组成,其各个子系统间的层次关系如图1所示。
由图1可知,系统调用是由操作系统内核提供的,而普通函数调用则是由函数库或者应用程序提供的,在用户空间运行。
2.2 在QT210上运行嵌入式Linux
嵌入式Linux在ARM上的开发是一个由上而下的逐步推进流程[5]。本文使用的桌面Linux系统作为宿主机开发环境,宿主机的运行模拟程序作为控制台,然后以虚拟终端在宿主机上面显示程序运行结果。此时,内核、根文件系统都存放在目标版NAND中。
3 通信设计
IDACS设计是硬件的主要组成部分。Cortex-A9处理器是该系统的核心。基于嵌入式ARM平台的在线智能数据采集与控制系统具有很高的通用性,每台采集与控制装置都配备了24路采集/控制通道,并相互隔离。每个I/O通道都可以选择电流、电压、电阻等多种电信号和非电信号,数字采集由专用的ADC完成。测量数据存储在外部存储器中,在Web服务器模式下,存储器作为数据库。ARM处理器直接支持以太网业务和RS485通信。因此,数据通过RS485和以太网被其他一些PC或网络存储和控制。ARM处理器具有内部I2C模块。因此,它能够与任何其他外围设备通信。
I2C是通过两个有线链路与其他处理器或外设通信的有线通信协议。该系统采用128*64液晶显示器,显示信息和测量参数,便于调试和修改参数。模-数接口模块独立于嵌入式系统,有利于系统的维护和升级。嵌入式以太网接口使应用程序之间的远程数据交换变得非常容易。
使用16位ADC芯片AD7715,这是一种内置I2C模块的数字芯片。它能够将转换后的数字数据传输到ARM处理器。它只需要五条线路,分别是DOUT-数据输出、DRDY-数据就绪、DIN-数据输入、CS-芯片选择和SCLK-系统时钟。转换后的数字数据将通过芯片的双针发送。该ADC芯片由2.4576MHz晶体驱动。它包含单独的参考信号REF+和REF-以及单独的模拟输入通道AIN+和AIN-。在与ARM处理器通信期间,该ADC芯片应与处理器时钟同步。
RS-485是设备间二进制串行通信的电信标准。需要遵循的协议或规范允许实现此标准的设备相互通信。这个协议是一个被称为RS-232的原始串行协议的更新版本。虽然原始的RS-232标准允许通过串行链路连接两个设备,但RS-485允许在联网系统上的两个以上设备之间进行串行连接。
RS-485网络可以被构造成平衡的2線系统或4线系统。如果一个RS-485网络被构造成一个2线制的系统,那么所有的节点将具有相同的排名。一个4线制的RS-485网络,有一个节点被指定为主节点,其余的节点被指定为从节点。在这样的系统中,通信只在主设备和从设备之间进行,而不在从设备之间进行。这种方法简化了需要使用的软件协议,但代价是稍微增加了布线系统的复杂性。
结合蝶形算法,对合成结果进行依次迭代,将原始输入数据逆序重排进行FFT计算,其FFT程序共采取三层循环实现。为提高FFT在ARM上的运行效率,可以对FFT程序采取如下四个措施进行优化:
(1)考虑计算点数N值的区别,选取恰当的数据类型进行变量定义,从而达到节省储存空间的目的;
(2)本文提出的算法能够大大减少计算量,提高运行速度;
(3)输出32位整型FFT数据值,因为ARM并不支持浮点数运算,需全部采取整数值计算;
(4)考虑 ,第一级进行单独计算;其余各级考虑蝶形因子,从而省去了许多乘法运算,提高运行速度。
5 结 论
本文首先介绍了ARM集成开发环境,然后分析了嵌入式Linux在ARM上的运行过程,并将蝶形算法结合到嵌入式系统的数据处理之中,为嵌入式系统的发展与研制做出了重大贡献,将算法模型与嵌入式系统相结合,为以后的嵌入式系统发展提供了一条新的道路。
参考文献:
[1] 徐春青.基于嵌入式系统的USB开发与研究 [D].无锡:江南大学,2008.
[2] 余婷婷.嵌入式文件系统的研究与设计 [D].武汉:武汉理工大学,2007.
[3] 王亚刚.嵌入式Linux系统移植与裁剪技术研究 [D].西安:西北大学,2005.
[4] 程广辉.基于微内核的操作系统设计以及嵌入式虚拟化应用的研究 [D].兰州:兰州大学,2013.
[5] 张静,叶梧,冯穗力.基于ARM920T的嵌入式Linux系统开发 [J].现代电子技术,2005(4):22-24.
作者简介:江俊(1994.09-),男,汉族,湖北蕲春人,本科,主要研究方向:嵌入式应用设计、物联网应用。