ARM 嵌入式处理器在智能仪器中的应用.docx
《ARM 嵌入式处理器在智能仪器中的应用.docx》由会员分享,可在线阅读,更多相关《ARM 嵌入式处理器在智能仪器中的应用.docx(10页珍藏版)》请在冰豆网上搜索。
ARM嵌入式处理器在智能仪器中的应用
ARM嵌入式处理器在智能仪器中的应用
随着微型计算机技术的发展,嵌入式系统作为微型计算机应用的一个重要领域已深入到社会的方方面面。
16位和32位嵌入式微处理器逐渐成为嵌入式系统设计的主流。
传统的程序是基于单任务机制的,各个模块构成一个整体,当作为一个任务在实际应用中运行时,这种程序的安全性差、效率低。
而嵌入式操作系统的实时性、可移植、内核小型化、可裁剪四大特点却使软件开发更容易、效率更高。
所以广泛应用于智能仪器中。
一、设计要求
设计一种基于ARM嵌入式处理器系统的智能仪器的硬件和软件设计方案,并结合uc/os2II或者Linux嵌入式实时操作系统,给出一套完整的任务调度和管理的方法,最后用实例说明。
二、设计的作用和目的
信号发生器、频谱分析仪、数字示波器等电子仪器是科研人员进行科学研究及试验的重要工具。
考虑到科研人员在室外、尤其是野外,测量分析条件的不便,设计了一台低功耗、多用途的便携式智能仪器,它具有产生正弦和方波信号、最大4通道信号采集、对采集的数据进行图形显示和频谱分析,以及可通过USB接口与PC机进行通讯的功能。
仪器基于ARM嵌入式处理器来设计,逻辑上,采用硬件层、系统层、应用层三层次的设计方案,其中系统层和应用层构成仪器系统的软件部分。
根据IEEE的定义,嵌入式系统是用于控制、监视或者辅助操作机器和设备的装置。
从广义上说,也指以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统且对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统以嵌入式处理器为核心,如微控制器(MCU)、数字信号处理器(DSP)、片上系统(SOC)、可编程片上系统(SPOC)。
ARM是英国ARM公司设计的通用32位RISC微处理器体系结构,目前,基于ARM的SOC以微型化、低功耗、高性能的设计目标几乎占据了嵌入式处理器的半壁江山。
三、设计所用设备及软件
系统设计所用设备如表1所示:
表1系统设计所用设备
设备
类型
微处理器
三星S3C44B0X芯片
程序存储器
SST39VF160FlashROM
内存
HY57V641620SDRAM
液晶显示屏
640*480分辨率单色全反射LCD
信号发生器
AD9850芯片
系统层
µClinux操作系统
3.1ARM简介
ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。
技术具有性能高、成本低和能耗省的特点。
适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等
ARM处理器的三大特点是:
耗电少功能强、16位/32位双指令集和众多合作伙伴。
据调查,目前国际上已有两百多种嵌入式操作系统,而各种各样的开发工具、应用于嵌入式开发的仪器设备更是不可胜数。
在国内,虽然嵌入式应用、开发很广,但该领域却几乎还是空白,只有三两家公司和极少数人员在从事这方面工作。
由此可见,嵌入式系统技术发展的空间真是无比广大。
ARM应用软件的开发工具根据功能的不同,分别有编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板、JTAG仿真器、在线仿真器等,目前世界上约有四十多家公司提供以上不同类别的产品。
用户选用ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本因此一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库的集成开发环境(IDE)一般来说是必不可少的,至于嵌入式实时操作系统、评估板等其他开发工具则可以根据应用软件规模和开发计划选用。
使用集成开发环境开发基于ARM的应用软件,包括编辑、编译、汇编、链接等工作全部在PC机上即可完成,调试工作则需要配合其他的模块或产品方可完成。
嵌入式系统通常是以具体应用为中心,以处理器为核心且面向实际应用的软硬件系统,其硬件整个嵌入式系统运行的基础和平台,提供了软件运行所需的物理平台和通信接口;而嵌入式系统的软件一般包括操作系统和应用软件,它们是整个系统的控制核心,提供机交互的信息等。
所以,嵌入式系统的开发通常包括硬件和软件两部分的开发,硬件部分主要包括选择合适的MCU或者SOC器件、存储器类型、通讯接口及I/O、电源及其他的辅助设备等;软件部分主要涉及OSporting和应用程序的开发等,与此同时,软件中断调试和实时调试,代码的优化、可移植性、可重用以及软件固化等也是嵌入式软件开发的关键。
ARM对操作系统以及系统开发执行环境提供最广泛的选择,客户可以根据需要来选择最适应市场要求的基于ARM的嵌入式操作系统。
可供选择的嵌入式操作系统有几十种,使用较多的有Linux,WinCE,Palm,Symbian等等。
采用WinCE更多的是OEM,以及按需进行特定的嵌入式器件开发的,例如GPS导航设备。
采用Palm操作系统的厂家有联想三星索尼,他们的出货量都非常巨大。
Symbia操作系统是先进的全球公开工业标准操作系统,基于Symbian操作系统的手机有:
BenQ,DoCoMo,Motorola,Nokia,Panasonic,三星,索尼爱立信等。
Linux是源代码开放的操作系统,可以运行在包括ARM等多种主流处理器架构上。
由于有一大批的工程师在开发开放源代码以及相关开发工具,Linux可以更方便快捷的进行移植。
以Linux为例,选择基于ARM的Linux,可以得到更多的开发源代码的应用,可以利用ARM处理器的高性能开发出更广阔的网络和无线应用,ARM的Jazelle技术带来Linux平台下Java程序更好的性能表现。
ARM公司的系列开发工具和开发板,以及各种开发论坛的可利用信息带来更快的产品上市时间。
3.2AD9850芯片简介
AD9850是由美国ADI公司推出的高集成度频率合成芯片系列中典型产品之一,AD9850采用先进的CMOS技术的直接频率合成器,主要由可编程DDS系统、高性能模数变换器(ADC)和高速比较器3部分构成。
本文利用它产生正弦波和方波。
在工作频率为125MHz的情况下,通过接收32位的频率控制字可输出频率分辨率为0.029、1Hz的波形,且正弦波的输出频率范围是0.1Hz~40MHz,幅值范围为0.2~1V。
AD9850内含的可编程DDS系统和高速比较器,能实现全数字编程控制的频率合成。
可编程DDS系统的核心是相位累加器,它由一个加法器和一个N位相位寄存器组成,N一般为24~32。
每来一个外部参考时钟,相位寄存器便以步长M递加。
相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。
正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~360°范围的一个相位点。
查询表把输入地址的相位信息映射成正弦波幅度信号,然后驱动数模转换器(DAC)以输出模拟量。
3.3µClinux操作系统简介
一、.uClinux的内存管理
对于uClinux来说,其设计针对没有MMU的处理器,即uClinux不能使用处理器的虚拟内存管理技术。
uClinux仍然采用存储器的分页管理,系统在启动时把实际存储器进行分页。
在加载应用程序时程序分页加载。
但是由于没有MMU管理,所以实际上uClinux采用实存储器管理策略(realmemeorymanagement)。
这一点影响了系统工作的很多方面。
uClinux系统对于内存的访问是直接的,(它对地址的访问不需要经过MMU,而是直接送到地址线上输出),所有程序中访问的地址都是实际的物理地址。
操作系统对内存空间没有保护(这实际上是很多嵌入式系统的特点),各个进程实际上共享一个运行空间(没有独立的地址转换表)。
二、uClinux的内核加载方式
uClinux的内核有两种可选的运行方式:
可以在flash上直接运行,也可以加载到内存中运行。
这种做法可以减少内存需要。
Flash运行方式:
把内核的可执行映象烧写到flash上,系统启动时从flash的某个地址开始逐句执行。
这种方法实际上是很多嵌入式系统采用的方法。
内核加载方式:
把内核的压缩文件存放在flash上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快(ram的存取速率要比flash高)。
三、uClinux的根(root)文件系统
uClinux系统采用romfs文件系统,这种文件系统相对于一般的ext2文件系统要求更少的空间。
空间的节约来自于两个方面,首先内核支持romfs文件系统比支持ext2文件系统需要更少的代码,其次romfs文件系统相对简单,在建立文件系统超级块(superblock)需要更少的存储空间。
Romfs文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟ram盘的方法进行处理(ram盘将采用ext2文件系统)
四、系统设计方案
本文介绍了一种基于ARM的便携式智能仪器,并给出了该仪器的软、硬件设计方案。
详细论述了仪器的硬件组成和设计,简要说明了移植µClinux嵌入式操作系统的关键和对操作系统的扩展设计,最后以信号发生功能部分为例给出了信号发生器的设计方法。
4.1系统总体设计
仪器基于ARM嵌入式处理器来设计,包括硬件设计和软件设计,其中硬件设计包括系统核心部分、数据采集部分和信号发生器部分;软件部分包括系统层、应用层。
简要说明了移植µClinux嵌入式操作系统的关键和对操作系统的扩展设计,最后以信号发生功能部分为例给出了信号发生器的设计方法。
4.2系统工作原理
本设计逻辑上,采用硬件层、系统层、应用层三层次的设计方案。
其中硬件层由系统核心部分、数据采集部分和信号发生器部分组成,系统层和应用层构成仪器系统的软件部分,系统层设计首先是进行嵌入式操作系统内核的移植,再对内核扩展形成一个简单、高效的操作系统;应用层设计是在操作系统的基础上进行信号发生、信号采集、频谱分析任务的设计。
逻辑上,软件与硬件之间有BSP(板级支持包)形成过渡。
五、系统硬件设计
根据智能仪器的功能要求,硬件层由系统核心部分、数据采集部分和信号发生器部分组成。
硬件原理图如图2。
5.1系统核心组成介绍
微处理器选用目前常见的三星S3C44B0X芯片,芯片内核是带8KCache的ARM7TDMI核,工作频率66MHz。
存储器以SST39VF160FlashROM(2MB,16Bit)作为程序存储器,以HY57V641620SDRAM(8MB,16BitPC100/PC133)作内存,构成嵌入式系统核心。
从功耗、成本考虑,液晶显示屏选用640*480分辨率单色全反射LCD,适于强光野外工作,屏幕刷新率由CPU内部提供的LCD控制器完成。
另外为了减轻CPU的工作压力,使用FPGA芯片实现键盘输入和向A/D转换器提供转换时钟信号的功能。
5.2数据采集部分设计
数据采集部分要求达到4通道、0-5V信号输入、单通道6MHz,4通道1.5MHz的最大采样频率。
所以模数转换部分采用TI公司THS120612位A/D转换器,除了高精度外,它还具有6MSPS高转换效率、低功耗(最大216mW)、高信噪比(68dB)的特点。
电路连接采用4路单端输入(每路转换率1.5MSPS),中断方式接受数据。
为保证高精度,减少数字噪声对模拟信号的影响,在电源输入端加去耦电路,同时印刷板将数字信号、电源、地线分层布线,减少模拟信号干扰。
另外A/D转换前的信号放大器的放大倍数的准确度以及时漂、温漂等问题都会影响数据采集的精度,对信号放大器进行校准是十分必要的。
所以使用美国TI公司的自校准信号放大器TLC4502配合TLC4501进行信号自校准,提高数据采集的精度。
5.3信号发生器部分设计
信号发生器部分要求产生频率范围为10Hz-10KHz的正弦和方波信号,分辨率0.1Hz。
这部分的核心是使用美国TI公司的基于数字合成(DDS)技术的频率合成芯片AD9850。
它在125MHz时钟下,输出频率分辨率可达0.0291Hz,其内部包括相位累加器和正弦查找表。
查找表把输入地址的相位信息映射成正弦波幅度信号,然后驱动10bit的D/A变换器,输出2个互补的电流。
AD9850包含5字节频率/相位控制字,可通过并行或串行方式送入。
并行方式连续输5次,每次同时输入8位,通过8位总线D0~D7将外部控制字输入到寄存器,在W_CLK的上升沿后,通过F1_UD(频率更新时钟)将5字节数据从输入寄存器装入到频率/相位寄存器中。
六、系统软件设计
软件部分主要由系统层和应用层组成。
系统层设计首先是进行嵌入式操作系统内核的移植,再对内核扩展形成一个简单、高效的操作系统。
应用层设计是在操作系统的基础上进行信号发生、信号采集、频谱分析任务的设计。
逻辑上,软件与硬件之间有BSP(板级支持包)形成过渡。
6.1系统层
系统层以免费、成熟的µClinux操作系统内核为基础进行移植扩展。
所谓移植,是指使一个操作系统能够在某个微处理器平台上运行。
在移植µClinux之前要做一些准备工作,比如调试器是否可以正常工作,交叉编译环境的建立等。
然后,再开始启动代码的移植和µClinux的移植。
移植µClinux主要解决以下几个问题:
a)引导程序Bootloader的移植;
b)µClinux针对硬件的改动;
c)µClinux的移植;
引导程序移植的关键是修改与开发板相关的源文件,µClinux针对硬件的改动即针对不同的开发板作相应的改动。
µClinux的移植首先要对内核进行配置,关键是修改内核,而编译内核时不能简单地通过make来实现,要有一定的步骤,然后配置生成µClinux的文件系统,下载到开发板上并运行µClinux,当µClinux内核比较稳定并不需要经常修改的时候,将它下载到开发板的Flash中,这样就完成了开发板µClinux的移植。
在µClinux提供的任务调度内核的基础上通过设计驱动程序模块、操作系统的API函数、系统任务、任务调度模块等模块对操作系统内核进行扩展。
通过设计实现LCD和USB设备的接口函数,建立驱动程序模块,使操作系统API函数和底层硬件分离开;操作系统的API函数部分主要是设计图形用户接口(GUI)函数,建立系统API函数库;系统任务部分设计液晶显示屏刷新任务、按键扫描任务两个基本任务,并随操作系统的启动而启动。
6.2应用层
6.2.1任务设计
在系统层提供的API函数和任务调度模块的基础上,设计主任务、信号采集任务、频谱分析任务、信号发生器任务来分别完成开机主界面操作、4通道信号采集及图形显示、采集信号的频谱分析、信号发生器功能。
主任务,即开机操作界面,基于系统层提供的图形用户接口(GUI)函数完成用户功能选择,并创建所选功能的任务,通过系统层任务调度模块运行任务:
信号采集任务利用12位A/D转换芯片输出值经v=(Vmax/212)*D12计算得到电压值,其中Vmax是信号上限值,D12为A/D转换芯片输出值,利用系统层提供的绘图函数建立二维坐标系,绘制曲线图形,图形的刷新最终由操作系统的LCD刷新任务实现;频谱分析任务:
利用快速傅立叶(FFT)算法进行信号的时域向频域的变换,同样调用系统层绘图函数绘制频谱图,考虑到液晶显示屏仅支持16级灰度显示,采用图像抖动算法表现256级灰度的效果。
系统硬件、操作系统、LCD的初始化部分由应用程序入口函数Main函数调用执行,Main函数流程如图3所示,其中主任务流程如图4。
6.2.2信号发生器任务
信号发生器任务的原理以AD9850芯片为基础,AD9850包含5字节的频率/相位控制字,通过并行方式将5字节的频率/相位控制字送入芯片,从而输出相应频率的信号。
任务流程是:
由按键扫描任务计算出任务输入的要求产生的频率值F(3个字节),通过输入频率F与AD9850频率擦/相位控制字的转换关系:
△F=232*F/CLKIN(CLKIN为外部参考时钟),得到的输出频率控制码△P,△P构成了频率/相位控制字的低4位字节的值,频率/相位控制字的最高1个字节是控制信息,通过并行方式先将高字节的控制信息送入芯片,再分4次(每次
1个字节)送出计算得到的4字节的△P值。
信号发生器任务软件流程如图5所示:
七、系统调试与总结
在仪器设计过程中,我们充分考虑了嵌入式系统对功耗、尺寸和成本的敏感性,除了在硬件器件的选择设计上,以低功耗、小尺寸、低成本为目标外,鉴于低功耗RISCCPU的工作主频越来越高,数据吞吐量和处理速度也增加了很多,因此在软件方面考虑移植操作系统时对内核进行裁剪和配置,达到增强数据管理、实现多任务调度、缩短开发周期,提高程序可维护性的目的。
设计这样一台低功耗、多用途的便携式智能仪器,对改善和解决科研人员室外特别是野外试验研究不便的问题有着广泛的应用意义。
本文创新点:
在基于ARM7的基础上采用嵌入式µClinux操作系统进行便携式智能仪器设备的开发,采用嵌入式MiniGUI进行图形界面的开发。
八、心得体会
经过一周的实习,通过不断地努力与完善,终于成功地完成了ARM嵌入式处理器在智能仪器中的应用。
从一开始的确定课题,到后来的资料查找、理论学习,这一切都使我的理论知识和动手能力进一步得到提高,设计中包含了嵌入式知识,是对嵌入式知识的一次全面综合。
在选择课题、原理分析、调试过程中不可避免地遇到各种问题,这要求保持沉着冷静,联系书本理论知识积极地思考,遇到解决不了的可以请教同学或指导老师,虽然在设计过程中不可避免地遇到很多问题,但是最后还是在老师以及同学的帮助下圆满解决了这些问题,实现了整个系统设计与最后调试,相关指标达到期望的要求,很好地完成了。
经过这次的课程设计,使得我对嵌入式知识的掌握进一步的增强,深了对嵌入式知识的理解,并对嵌入式产生了浓厚的兴趣,但是我也深深的知道自己的不足之处,比如说对应用程序的不熟悉,大大地加深了我的程序复杂程度。
很多在学习过程中不能想通的问题,在调试过程中,终于得以解决。
可以看出它对理论教学起到了必要的补充和额外拓宽作用,对培养既具有扎实理论功底又具有相当实践能力的人才必不可少。
经过这次课程设计培养了我的设计能力以及全面的考虑问题能力。
虽然设计的过程是痛苦的但是收获成功的喜悦却是如此的让人激动。
相信这次课程设计对我以后的学习及工作都会产生积极深远的影响。
在我设计期间,得到了老师和很多同学的帮助,在忙碌的工作之余,给予我专业知识上的指导,而且教给我学习的方法和思路,使我在设计过程中不断有新的认识和提高。
在此,我对他们表示由衷的谢意!
衷心的感谢给予我建议和帮助的老师和同学!
九、参考文献
[1]金敏,周翔,金梁.嵌入式系统-组成、原理与设计编程.人民邮电出版社,2006.
[2]田家林,陈利学,寇向辉.LINUX嵌入式操作系统在ARM上的移植.微计算机信息,2007,4-2
[3]毛伟云,陈明,丁力.ARM嵌入式处理器在智能仪器中的应用.计算机技术与s用,2007,01
[4]王晓宁,史俊富.A/D高速采集模拟信号的阀值设定.单片机与嵌入式系统应用,2005,11.72
[5]徐荣珍,李从心,李加文.基于ARM7TDMI处理器的嵌入式系统启动流程.计算机工程,2006.02
[6]PHILIPS.PDIUSBD12ProductData[M].www.philips.com1999
[7]周立功.USB固件编程与驱动开发[M].北京航空航天大学出版社,2003
[8]ArtBaker.施诺译.Windows2000设备驱动程序设计指南[M].机械工业出版社,2001
[9]JonBates.实用VisualC++6.0教程[M].清华大学出版社,2000