嵌入式设计系统范例6篇

前言:中文期刊网精心挑选了嵌入式设计系统范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

嵌入式设计系统

嵌入式设计系统范文1

关键词:黑盒测试;嵌入式系统;程序流程图;插桩处理

引言

黑盒测试是从用户观点出发的测试,依据需求功能说明书中的预期用途、定时和性能的要求,推断测试结果。黑盒测试根据测试阶段可分为单元测试、集成测试、确认测试、系统测试四个阶段[1]。嵌入式计算机系统具有与传统软件测试不同的新特性,因此需要采取针对性的测试方法。通用的测试方法可分为静态时间分析和动态时间分析。

1嵌入式软件测试的环境分析

在线仿真配备了CPU芯片接口,提供和应用程序交流信息桥,不足之处在于对硬件的依赖性较强,测试范围较窄;目标机仿真测试结果真实,但由于实际运行中连接外部设备,很难辨识软件和硬件错误。在实际测试中,根据测试效率、成本、可靠性、自动化程度等因素选择测试环境[2]。

2嵌入式测试系统的技术实现

CodeTest一方面吸取软件插桩技术,另一方面从硬件测试那里吸取从总线获取数据的技术,并进行升级改造。在硬件测试时,CodeTest选择插入点的方式为主动获取关键数据。和CodeTest相比,纯软件测试对目标测试的影响大大降低。因此选用Cereal仿真器。嵌入式软件测试系统由功能测试模块、代码测试模块、数据分析和文档报告模块、通信接口转换模块组成。对于黑盒测试来说,功能测试模块居主导地位,它主要通过接收目标系统输出信号和需要的信号进行比对来判定目标系统在功能上是否达到最优[3]。

3词法语法分析的设计与实现

3.1Lex⁃Yacc

Lex是检测字符匹配性的词法生成程序,Yacc是测定语法的生成程序。一个Lex程序由三段组成:首先是C和Lex定义;第二段是C代码;第三段是C函数。一个Yacc程序也是由三段组成,分别是声明、语法规则和C代码。Lex同Yacc的工作原理如图1所示。

3.2Lex⁃Yacc之间的联系

Lex程序用来计算数字字符串,能对各种符号进行识别,当插码时可以以注释的形式插入插桩代码,等程序完成,可以自行取消代码插桩,不影响整体进程。Yylval用来传递Lex与Yacc之间数字字符串转化后的数值,利用lineno传递正在处理的代码行号和标号。本次设计全程在Linux下,通过Lex编译后生成词法分析程序的C代码,通过Yacc编译后生成语法分析程序的C程序代码。两者通过gcc命令进行编译形成综合分析。最后运行该综合分析器就可以对51系列的汇编语言进行分析[4⁃5]。

3.3被测源程序静态结构分析

Lex⁃Yacc工具对单文件逐行扫描,得出当前语句各类参数类型,不同参数类型分别进入不同的单链表中。其中除了顺序单链表外,其他四种处理方式基本相同。待词法、语法分析完毕,五个单链表中存储了对应的汇编程序。因为单链表本身只是一个转换器,无法显示汇编程序之间的逻辑关系,所以需要对程序进行二次分析,确定所有逻辑关系。其中五个单链表形成的流程图如图2所示。针对程序流程图的建立,首先搜索匹配节点,根据节点不同进入相应分支处理。当前语句在顺序节点,则进入顺序处理模块。从关键字“结束行号+1”开始遍历单链表,存在两种结果:一是算法出错;另外一种就是在主程序中时则表明当前分支分析完成。接着要判断条件跟踪链表中的顺序分支(规定为右分支)是否都已分析完毕。

4覆盖率分析及评测

4.1被测源程序覆盖率分析

虚拟插桩技术就是在汇编语言基本结构的特点上,在源程序的插桩点处设置断点,在源程序执行到断点处,响应断点处指令,给出具体的PC地址,自动记录并打印出来,接连下去形成PC值的数据链。通过查询五类单链表与之建立对应关系,就可以获得到源程序的真实运行轨迹,进而计算出各类覆盖指标。

4.2基于代码的覆盖评测

在仿真测试平台原型系统上,基于代码的覆盖测试首先需要选定适合用作黑盒测试的子过程模块。提取的子过程模块必须具备独立运行的能力,根据覆盖测试的标准和要求对代码逻辑结构进行认真分析,设计出多个测试用例,然后通过手工运行该子程序的方式,在某一特定测试用例驱动下运行,测定出运行路径,通过计算得出两种覆盖率理论评测指标,与仿真测试平台上实现的两种覆盖率相对比,得出覆盖率分析法与虚拟插桩的正确性验证结果。

5嵌入式系统平台设计

设计一个可以代替人工进行黑盒测试的平台系统,见图3,其基本原理是通过脚本语言记录状态信息,之后通过PC回放测试信息以判断结果是否与记录脚本一致,以此决定本次测试是否通过。为此,在编辑源代码时就需要满足录制脚本和脚本回放两个阶段的需求。

5.1插装代码分析

在PC上运行插装系统最重要的原则就是要保证软件原有功能的稳定性和完整性。因此在设计嵌入式系统的插装代码时不能改变程序的原有逻辑和原有执行流程,应尽量降低在嵌入式系统所占的资源,尽可能将部分功能和操作交付于PC进行。嵌入式系统中的模拟用户输入模块的主要功能是将计算机发送的命令进行分析,并将结果回复到处理模块中,其操作模拟流程见图4。

5.2系统状态的定义和获取

(1)声音信息的获取嵌入式系统中对声音信息的获取主要是通过识别每个声音惟一的ID编号和固定的音频编码进行的。工作时,由系统中的服务函数获得ID声音的音频编码并发送到PC中。(2)获取LED信息LED的运行方法和声音相似,都有一套惟一的LED编码,并由LED控制器控制。常用的设计方法是将LED中的编码放到嵌入式系统中的缓冲区内,通过定时刷新函数提取LED信息[6]。(3)获取LCD信息由于LCD需要显示的信息较多,且各消息属性复杂,因此较难提取。目前常用的提取方法是点阵截取法和消息截取法。由于点阵截取法操作简单、测试结果准确率高,因此本文使用点阵截取法获取LCD信息。(4)系统状态的获取主动请求和被动获取是嵌入式系统获取信息的主要方式。主动请求是指嵌入式系统在处理完PC发出的操作命令时,主动将搜集好的信息发送到PC上。被动获取是指嵌入式系统并不主动发送检测信息,而是当状态出现时才决定是否继续后续操作。

5.3自动化比较和测试

软件是否准确输出结果,需要经过多次测试实际输出和预期输出的差别。本文在设计嵌入式系统时综合考虑了一些智能比较思想来优化设计流程。由于实际的嵌入式系统会产生上百个复杂的状态信息[7],为便于比较,本文采用了相对比较的办法对录制脚本时的状态变迁进行比较。最后设计完成的嵌入式系统需对脚本进行测试,这是交互式应用的重要组成部分。脚本测试的准确度主要依赖于所选用的测试工作和脚本技术。当前主要的脚本技术有共享脚本、数据驱动脚本、结构化脚本等。这些脚本都包括了三个命令,即人工操作命令、状态检查命令、逻辑控制命令。测试脚本主要就是对这三个命令进行检查,其中在自动化检测中采用何种脚本记录测试结果可依据模块要求进行选定。

6结语

黑盒测试技术的汇编语言测试系统用例研究在我国已经很多,本文最大的亮点是引入虚拟插桩技术,实现真正插桩,即在被测源程序的插桩点处设置中断指令,当源程序运行到该点处时自动运行断点指令,给出具体的PC地址,进而给出一系列地址数据,根据事先设定的用例判定运行效果,得出黑盒测试的正确验证结果。此方法最大的优点在于高效、精确、成本较低,在实际运用中具有较高的实用价值。

参考文献

[1]孙昌爱,靳若明,刘超,等.实时嵌入式软件的测试技术[J].小型微型计算机系统,2000,21(9):920⁃924.

[2]杜晓东.面向嵌入式系统的测试工具研究[D].成都:电子科技大学,2003.

[3]苏铭,宋宗宇,王华.多计算机的自动插桩与监测系统[J].计算机工程与应用,2002(4):79⁃82.

[4]杨作梅,张旭东.1ex与yacc[M].北京:电子工业出版社,2003.

[5]邓支益,何亦征,田翼.嵌入式软件测试研究[J].航空电子技术,2003,34(1):37⁃42.

[6]曹文静,宫云战.软件测试性计算方法研究[J].计算机工程与设计,2003,24(10):67⁃70.

嵌入式设计系统范文2

关键词: 地理信息系统;嵌入式;全球定位系统;空间数据

Abstract: based on embedded system design of the structure of the geographic information system, and puts forward the comprehensive GIS architecture using a variety of modern technology, they include GIS technology and embedded technology, and RS technology, GPS technology, mobile computing technology and communication technology, etc.

Keywords: geographic information systems; Embedded; Global positioning system; Spatial data

中图分类号:S611文献标识码:A 文章编号:

1.引言

随着GIS技术的不断成熟和它给人们带来的巨大便利,以及嵌入式设备性能的提高和普及,两者的结合成为一种必然的发展趋势。近年来,嵌入式GIS技术正成为GIS发展的热点之一,它的应用包括了汽车导航、野外测绘、物流运输、军事指挥等众多的领域。我国也已经开发出了自己的嵌入式GIS产品,比如武汉中地软件的MAPGIS-Embedded和北京超图公司的eSuperMap等。本章提出了一种基于嵌入式设备的地理信息系统的完整的体系架构,对于架构中涉及到的技术以及每一个模块都做了比较详细的说明。同时需要指出的是:这个架构不仅具有一定的理论价值,还具有很强的现实意义。我们已经按照此架构中提出的思想进行了代码实现,当然由于时间和精力的关系,只是实现了其中的一些基本的功能,但这却是自主开发嵌入式地理信息系统的一次有意的尝试,并具体介绍实现的过程和步骤,以及实现过程中一些难点、关键问题的解决。

2.嵌入式GIS体系架构

嵌入式地理信息系统的体系架构如图1所示。从图中可以看出,整个系统是基于C/S模式的,它由嵌入式设备、高性能计算机、全球定位系统(GPS)和空间数据库四个部分组成。

嵌入式设备由嵌入式硬件系统和嵌入式软件系统构成,其中嵌入式硬件系统要集成GPS定位信息的接收功能;在嵌入式硬件之上的一层是嵌入式操作系统(如ARM-Linux等),它是嵌入式软、硬件之间的桥梁,主要负责文件管理、进程调度等功能;运行在嵌入式设备上的GIS软件(也就是客户端程序)包括地图的显示、缩放、漫游、缓冲分析、通讯等几个模块,通讯模块可以通过无线网络与高性能计算机(服务器)进行通信和数据传输。

高性能计算机(服务器)要实现最短路径、最优路径的查询等地理信息系统中比较复杂的功能,同时还要实现与客户端进行通讯、文件格式的转换,以及访问数据库服务器等功能。

对于系统中数据的存储,我们采取的是客户端-服务器两级数据存储模式,大部分的数据存放在服务器端(高性能计算机),客户端(嵌入式设备)只保留少量常用的数据;如果系统中的数据量过于庞大,甚至可以由一个具有海量存储器的计算机专门来存储服务器端的数据,并向服务器提供访问接口,这样可以减轻服务器的负担,提高整个系统的效率和处理数据的速度。在必要时,客户端可以向服务器提出更新数据的请求,服务器在接到请求后把相应的数据文件回传给客户端。

图1 基于嵌入式设备的GIS架构示意图

对系统的功能模块进行了划分,把地图显示、图层管理、缓冲分析、缩放和漫游等比较简单,对硬件资源消耗小的应用放在客户端,而把最优路径、最短路径的分析等复杂的应用放在服务器端。这样做的原因在于嵌入式硬件本身的资源非常有限,如存储空间偏小、处理器的速度也不是十分理想等,所以它不可能发展较为复杂的GIS空间分析功能。当客户端需要调用最短(优)路径查询等复杂的GIS分析功能时,就向服务器发出请求(其中包括客户端当前的位置、目的地等参数),服务器根据客户端传递的参数,对数据库进行一系列的查询、检索等操作后,将分析的结果回传给客户端,从而为客户提供决策支持,同时也减轻了嵌入式设备的负担,提高了它的工作效率。

3.全球定位系统及3S集成技术

3S技术为科学研究、政府管理、社会生产提供了新一代的观测手段、描述语言和思维工具。3S的结合应用,取长补短,是一个自然的发展趋势,三者之间的相互作用形成了“一个大脑,两只眼睛”的框架,即RS和GPS向GIS提供或更新区域信息以及空间定位,GIS进行相应的空间分析(图2),以从RS和GPS提供的浩如烟海的数据中提取有用信息,并进行综合集成,使之成为决策的科学依据。RS、GIS、GPS集成的方式可以在不同的技术水平上实现,最简单的办法是三种系统分开而由用户综合使用,进一步是三者有共同的界面,做到表面上无缝的集成,数据传输则在内部通过特征码相结合,最好的办法是整体的集成,成为统一的系统。

图2 3S的相互作用与集成

4.空间数据的无线传输

空间数据无线传输技术是完善嵌入式GIS 功能的重要技术之一。但是目前该技术的发展受到诸多因素的制约,下面就这些制约因素加以阐述和分析,并针对无线传输网络提出相应的解决方案。虽然GPRS是作为现有GSM网络向第三代移动通信演变的过渡技术,但是它相对于原来GSM的拨号方式的电路交换数据传送方式,在许多方面都具有显著的优势。正是由于GPRS具有以上的这些特点和优势,在我们设计的基于嵌入式设备的GIS系统架构中,采用了GPRS作为空间数据的无线传输网络。

5.试验结果

ECI GIS的开发严格遵循了软件工程的思想,并且针对嵌入式软件开发的特点,对软、硬件平台以及专业需求等因素也进行了综合的分析和考虑。但由于时间、技术等方面的原因,我们的软件只是实现了GIS中的一些基本功能。本节将重点向您介绍这些功能的实现,即程序运行的结果。说明:地图中的当前图层为上海市区县和主要河流。

图3全图显示

图4属性数据库的显示

结束语

ECI GIS1.0是一个基于嵌入式设备的地理信息系统软件,它经过了架构的搭建、模块设计、代码实现、软件移植和应用检验几个阶段,具备了地图缩放、信息查询等基本的功能。ECI GIS与其他的嵌入式地理信息系统相比,最大的特点就是它没有借助任何商业的操作系统(如WinCE)和GIS系统软件,实现过程中用到的Linux和GDAL函数库的源代码都是免费开放的。ECI GIS1.0是我们为开发出中国拥有自己完全版权的GIS软件而进行的有意的尝试和探索,这一点或许远远大于其在商业上的价值。

参考文献:

[1] 龚健雅. 地理信息系统基础[M]. 北京:科学出版社,2001.

[2] 张超,陈丙咸,邬伦.地理信息系统[M]. 北京:高等教育出版社,1995.

[3] 邬伦.地理信息系统――原理、方法和应用[M].北京:科学出版社, 2001.

嵌入式设计系统范文3

关键词:嵌入式;系统软件;设计;实现

中图分类号:TP273.5 文献标识码:A 文章编号:1674-7712 (2014) 12-0000-01

当前时代,科学技术快速发展,信息技术被应用于我们日常生活的各个方面。高科技为我们的生活带来了无限的便利,目前采用高科技手段为人们提供一个安全的生活和工作环境。本文针对嵌入式系统在门禁卡的应用上进行研究,解决了传统门禁卡很多的不便功能。为实现门禁卡自动、智能化管理提供建议,以此来对门禁卡功能与嵌入式系统软件设计与实现相关问题进行研究[1]。

一、嵌入式门禁系统设计

(一)嵌入式系统设计介绍。随着科学技术的快速发展,嵌入式门禁卡系统已经逐渐进入人们的生活,逐渐由传统的门禁卡系统转变为现代的生物特征识别技术门禁卡系统。嵌入式系统的门禁卡主要分为了图像采集、自动照明、语音提示、申请功能、无人监测等具体功能实现[2]。其具体的架构如图1所示。

图1 门禁系统功能图示

(二)系统硬件设计概述。如果要设计出完善的门禁系统,不仅需要软件系统的支持,还需要硬件支撑,否则整个软件系统难以实现。嵌入式多功能门禁系统其本质由嵌入式技术与图像处理技术融合应用。其中嵌入式的硬件支撑硬件结构主要有照明控制、网络接口、摄像头、按键、CF卡、音频接口、LVDS以及DDR2等。

二、嵌入式系统在门禁卡中的实现

(一)图像采集实现。量化后的数字图像信号和连续信号取样的数字图像信号是数字图像处理的对象,当这些最原始的信号经过图像处理后即可获得可观测的连续信号。对连续信号进行取样其本质是将信号的空间离散化,而量化则是将离散后的图像信号幅度上进行离散化,所以量化和取样后的图像信号应该是原始连续图像信号。

对于视频图像的获取方法通常有两种,一是利用视频捕捉卡中的SDK工具获取,二是使用Video for Windows,这给视频捕获编程带来了很大的福利,对视频捕获的灵活性有很大的提高。视频数据的实时采集主要是调用AVICap32.dll来穿件一个AVICap窗口类,它给应用程序提供了一个简单而方便的数据接口,使用户能够访问音频和视频,并且还能在硬盘上对视频捕获进行控制,它在捕获视频的能力很强,可以直接访问视频缓冲区,也不生成中间文件,视频捕获的速度快,及时性高,也可以将视频保存在设置好的文件夹中,整个视频捕捉过程都可以实现控制[3]。

(二)自动照明实现。整个照明系统主要分为了两个部分,照明系统通过发送指令给单片机实现对整个电路进行调整。整个照明系统分为控制部分和图像亮度检测部分,照明系统中的图像检测与电路照明具有很强的联系。嵌入式软件系统进行照明摄像控制时,通过采集信息的亮度,而其亮度与图像的象素有关,将图像做为一个二维图像,横坐标表示图像各个像素点的灰度级r;纵坐标则表示弧度制出现的概率Pr(r);那么对于某一个灰度值ri的象素个数为ni。则概率密度为:Pr(r)= ; =1。

(三)语音提示实现。该系统运用的是ALC655音频解码器,Mic用于连接麦克风,Line用于录制声源的声音,Audio_Out用于扬声器或者耳机。本系统主要根据不用的命令来实现功能,通过调用不同文件得到不同的效果,根据不同情况播放不同的提示音。系统中的MFC附带的音频播放组可以有效的提高开发是速度,通过媒体控制接口API实现停止功能MCI提供了控制媒体接口的能力,对波形音频设备、CD/视频播放设备等媒体进行控制。系统对音频的播放采用的是DirectX,作为低级应用程序的编程接口,在开发上降低难度。对于声音,主要的API是DirectSound,具备播放、处理混音、录音等功能,Microsoft DirectSound API为声音的捕获、播放、混音的处理、录音提供了链接,DirectSound可以给多媒体提供直接访问声音设备、低延迟混合、硬件加速。

(四)申请功能实现。所谓的申请来访功能主要门禁卡在进行检测的时候如果遇到不相匹配者,则需要进行申请之后才能够进入。系统通过语音告知模块的主人,采取系统中断方式来进行受访申请。受访者来进行访问申请时,需要按下按钮然后系统给予语音提示,并且显示出来访者的面貌,以此来进行判断,决定通过或者拒绝。嵌入式软件系统在门禁卡的显示上将来访者的信息显示在LVDS屏幕桑,然后通过系统对来访人员进行判断[4]。

(五)无人监测功能实现。无人监测功能则是当受访者进行访问时,遇到公司无人的时候,由门禁卡系统提示访问者内部无人,并且拍下来访者的照片,发送到系统设定的邮箱之中。在此自动发送邮件的功能中,该系统主要采取以太网作为接口进行数据通讯,并且根据TCP/IP协议来发送报文,实现信息交换。

三、结束语

随着科学技术的不断发展,新型的软件技术被应用到我们日常的生活之中,本文主要针对嵌入式系统在门禁卡中的应用情况,以及在系统设计过程中所占据的地位进行研究。实现嵌入式软件系统在门禁卡中的应用探索,主要针对门禁卡的各项功能的设计与实现进行了详尽的介绍,希望为采用嵌入式方法进行门禁卡开发的企业提供借鉴。

参考文献:

[1]周海龙.嵌入式门禁系统的设计与实现[D].西安电子科技大学,2012.

[2]吴若无.基于光学逆向器门禁的驱动和检测系统设计与实现[D].电子科技大学,2013.

嵌入式设计系统范文4

    摘要:设计一种能够在典型嵌入式环境下应用的线性文件系统,为嵌入式系统Flash空间的管理提供一种非常有效的手段。它包装和通用文件系统类似的API接口,设计的实现独立于实时操作系统(RTOS)和具体的Flash典型,可方便移植到不同的嵌入式应用中。

在嵌入式系统中,为了便于对闪存(Flash)空间进行管理,会采用文件的形式来访问Flash。目前,可以购买到的Flash文件系统一般都是兼容DOS的文件系统(Flash File System,FFS),这对需要一个具有复杂的目录层次,并且DDS文件兼容的系统来说是必要的;但是对大多数的嵌入式应用来说,这种文件系统太过奢侈。笔者在参与嵌入式系统项目的时候,设计了一种线性文件系统,它适用于大多数的嵌入式应用对Flash文件系统的需求。

线性文件系统设计基于三个目标:一是提供给应用程序通过文件名而不是物理地址访问系统Flash的能力;二是文件系统的设计独立于实时操作系统(RTOS),这样可以很容易移植到不同的嵌入式应用中;三是设计统一的底层接口,适应不同的Flash类型。本文设计的线性文件系统为典型的嵌入式系统提供了所需的类文件系统能力。需要注意的是,本文件系统不支持复杂的Flash扇区擦写次数均衡算法,没有目录层次,并且和其它的文件系统不兼容。

1 线性文件系统

线性文件系统的设计思路是这样的:文件分为文件头和文件数据区两个部分,每个文件按照顺序存放在Flash中,以单向链表来链接文件。文件的起始部分是文件头,包含文件的属性、指向下一个文件头的指针、文件头和文件数据区的32位循环冗余校验和(CRC32)等。文件头用一个32位的字来表示文件属性,每位表示一种属性,如数据文件或者是可执行文件,是否已删除的文件等,具体可以根据应用的需要来定义文件的属性;文件头和文件数据区维护独立的CRC32校验,使文件系统能更精确检测文件的完整性。文件的起始地址没有特殊需求,分配给文件系统的Flash大小限制了文件的大小。另外,线性文件系统作为嵌入式系统的一个功能模块,它为应用程序提供与标准文件系统类似的API接口,如:read()、write()、open()、close()、stat()和seek()等。对于同时在多片Flash的系统而言,每片Flash相当于一个目标,文件都可存储在任何一片中(当然受物理空间限制),但不能跨片存储。

图1 Flash文件系统空间

    在第一个文件创建之前,必须进行初始化,将所有分配给文件系统的Flash空间擦除。当创建第一个文件时,起始位置从文件系统的起始地址开始,文件头指针指向下一个空文件的起始位置(链表尾部);第二个文件的位置从当前的链表尾部开始,同时文件头中的链表指针指向新的尾部。删除文件时,仅仅是简单地把文件头的标识位中的活动文件标识位置0,表示删除。这样,在经过多次删除之后,就有必要运行碎片整理模块来进行文件系统Flash空间的碎片整理。碎片整理模块还需要在文件系统Flash空间尾部留一个扇区来数据备份,以便当碎片整理被打断时(如下电或者复位)可以恢复文件系统。这个保留的扇区称空闲扇区。它必须放在文件系统空间之后,这样可以保证文件系统的所有文件在所占用的Flash空间是连续的。整个文件空间的分配如图1所示。

阴影部分是文件头,数据结构如下:

struct hdr{

unsigned short hdrsize; /*文件头字节数*/

long filsize; /*文件头版本*/

long filsize; /*文件大小*/

long flags; /*描述文件的标识*/

unsigned long filcrc; /*文件数据的CRC32的值*/

unsigned long hdrcec; /*文件的最后修改时间*/

struct hdr *next; /*指向下一个文件头的指针*/

char name[NAMESIZE]; /*文件名*/

char info[INFOSIZE]; /*文件描述信息*/

};

碎片整个记录区包含两种数据类型:碎片整理文件头信息表defraghdr和文件区扇区整理前后的CRC值备份表sectorcre。具体的地址分配从空闲扇区的起始地址减1开始,往前分配文件系统扇区数乘以4字节作为sectorcrc的空间;从sectorcrc起始地址减1开始,往前分配活动文件个数乘以64字节作为碎片整理文件头信息表。这两个结构定义如下:

struct defraghdr{

struct hdr *ohdr; /*文件头的原始位置指针*/

struct hdr *nextfile; /*指向下一个文件的指针*/

long filsize; /*文件大小*/

unsigned long crc; /*这个头的CRC32值*/

unsigned long ohdrcrc; /*原始文件头CRC32值的拷贝*/

long idx; /*碎片整理表头的索引*/

long nesn; /*新的文件尾的扇区号*/

long neso; /*新的文件尾的扇区偏移量*/

char *nda; /*新的文件起始地址*/

char fname[NAMESIZE]; /*文件名*/

};

struct sectorcrc{

unsigned long precrc; /*碎片整理前扇区数据CRC32的值*/

unsigned long postcrc; /*碎片整理后扇区数据CRC32的值*/

};

从上面介绍可知,除了文件数据之外,文件系统还需要如下4种额外的开销。

①文件头:这是每个文件必须的开销,如果文件名和信息域各24字节,那么整个文件头共76字节。

②碎片整理文件头信息表:每个活动(非删除)的文件在进行碎片整理时在这个表里创建一个表项,每个表项64字节。

③碎片整理前后的扇区CRC32值表:保存文件整理前后的CRC32值,总的字节数约为文件所占扇区数的4倍。

④空闲块:用来在碎片整理过程中备份当前整理扇区数据。它必须不小于文件系统其它所有扇区。

可以用下面方程计算系统开销的总和:

overhead=(FTOT*(HDRSIZE+64))+SPARESIZE+(SECTORCOUNT*8)

其中:

FTOT是总的文件数;

HDRSIZE是文件头字节数(目前为76字节);

SPARESIZE是空闲块的大小;

SECTORCOUNT是分配给文件系统的Flash扇区数,不包括空闲块。

图2 文件碎片整理

2 碎片整理

创建新文件需要占用文件系统空间;但是,由于Flash的底层技术不允许Flash中的任意地址空间被删除,而是按照扇区为单位删除,为此在删除一个文件的时候,暂时没有把整个文件所占的空间删除,仅仅是在文件头的标识里作一个删除标识,并保留在Flash中。这样,被删除文件积累到一定的数量时,就会占用相当大的空间。因此,需要整理文件系统Flash空间,使被删除文件占用的空间重新使用。图2显示了碎片整理过程。文件F1、F2和F5已经被删除,并且在碎片整理之后从Flash中被清除。

进行碎片整理的方法可以有多种。对于嵌入式系统来说,选择哪种方法,衡量的依据是复杂性和功能之间的平衡。下面讨论两种不同的方法:第一种方法相当简单,但是有缺陷;第二种方法功能强大得多,笔者在线性文件实现中即采用这种方法。当然,存在更加复杂的解决办法,但通常的情况是,所添加的复杂性会使整个文件系统的实现更加复杂。目标是保持文件存储的简单和线性,保证所有的文件都是以连续的空间存储在Flash中。

最简单的方法是将活动的文件备份在RAM中,删除分配给文件系统的Flash空间,然后将RAM中备份的所有文件拷贝回Flash。这种方法很简单,并且不需要分配一个扇区作为空闲区;但问题是,需要有一整块和分配给文件系统的空间一样大的RAM来完成这项工作。更糟的是,如果此时系统被复位,或者在删除扇区内容却还没有将文件拷贝回Flash的时候被断电,文件系统将会崩溃。因为RAM中的内容会随之选择,文件内容会被破坏掉。

我们在文件系统实现设计了一种碎片整理方法,可以防止在碎片整理过程中系统复位导致文件崩溃的情况。采用这种方法,不需要大块的RAM,但是需要预选先分配给碎片整理过程一个Flash扇区作为备份区。这个扇区的字节数不小于任何分配给文件系统的扇区。在整个文件系统中,这个扇区位于分配给文件系统最后一个扇区的下一个扇区。因为扇区可能比需要分配给非删除文件的备份的空间要小,所以它必须逐个扇区进行处理,而不是一下就把所有的碎片整理完。采用备份扇区的好处是,在碎片整理过程中,无论断电或者复位都不会破坏文件系统。当下次系统重新恢复时,会根据在碎片整理前记录的每个扇区碎片整理前后CRC值,来判断当前的文件碎片整理状态。如果上次文件整理没有完成,就会继续上次的整理。这种技术的一个缺陷是空闲扇区的擦写次数会较多。这样空闲扇区就可能因为达到擦写寿命而失败。达到这一点的关键依赖于使用的Flash、所分配给文件系统的扇区数、文件删除和重建的频率。一个可行的解决办法采用电池备份的RAM来替换空闲扇区,可以增加Flash的整体寿命,但是对那些预算紧张的应用来说太过奢移。

具体的碎片整理过程是,首先建立碎片整理区。①为每个扇区建立2个CRC32表项;第一个CRC32是这个扇区在碎片整理前的CRC值;第二个CRC32值是计算出来的碎片整理后的CRC32值。这些CRC是当碎片整理过程被打断时,用来重新恢复整理用的。②创建碎片整理文件头信息表,每个活动的文件占用一个表项。③计算①和②的CRC值,并保存。①~③的数据保存在图1中的碎片整理记录区。第二步是文件重定位;遍历文件系统的每个扇区,处理重新定位后存储空间和该扇区相覆盖的文件。在每个扇区被重写之前,扇区原来的信息被保存在空闲扇区里。第三步,擦除Flash;遍历未使用的扇区,确认所有的扇区被删除。第四步,完整性检测:对新的文件进行检测,保证所有重定位的文件都是完整的。

3 应用分析

Flash的扇区有最大擦写次数。当前的Flash芯片一般支持10万~100万次的擦除。文件系统的应用各不相同,所以这里不能下结论说采用线性文件系统Flash的寿命会有多长。下面解释文件系统访问Flash的方法。这样用户可以根据应用来判断Flash的预期寿命。

我们所设计的线性文件系统并不进行扇区删除次数均衡,以延长Flash的使用寿命。如果所需要的文件系统频繁修改并需要扇区删除次数均衡,可以购买现成的Flash文件系统。扇区删除均衡算法大大增加了底层实现的复杂性,并且超出本文的讨论范围。一般来说,通过文件系统来管理Flash的需求远大于对Flash扇区擦写次数均衡的需求,特别是现在越来越多的Flash扇区都支持100万次的擦写。

如上面所提到的,文件系统本身提供给编程者的接口API与标准OS提供的接口类似。这可能误导开发者认为文件系统可以看作是一个硬盘,以任意的频率进行读写操作。事实并不是这样,线性文件系统碎片整理同制并没有进行擦写次数均衡,这意味着空闲扇区可能会是最早损坏的Flash扇区。因为在碎片整理过程中,空闲扇区被用作其它所有扇区的暂时存放扇区。例如在设计里,有13个扇区Flash用来作线性文件系统区,有1个扇区作为空闲扇区。假设对于最坏情况的碎片整理(13个扇区都影响到),如果每天进行1次碎片整理,对于100 000次擦写次数的Flash而言,可用期能够超过20年(100 000/13/365=21)。20年是基于每天进行1次碎片整理,并且所有扇区都影响到的情况。碎片整理的频率和整理所影响到的扇区数受应用程序使用文件的限制。用户可以根据文件系统的应用来估算Flash扇区的磨损情况,并作相应的处理。

下面讨论文件系统是如何使用扇区的。Flash扇区仅仅在碎片整理时候才被擦除。当删除文件的时候,只是简单地作一个标识(文件头的一个位)。如果一个存在的文件以写的方式打开,实际的修改步骤是,删除原有的文件,并在当前文件系统的最后一个文件之后重写该文件。最后,这个过程会使文件系统的Flash空间被耗尽,这要就需要运行碎片整理程序。碎片整理程序会使已被删除文件所占用的空间被清除,所有活动的文件在Flash中的位置以连续的方式存放。每个扇区的整理过程是,扇区被拷贝到空闲扇区作备份,然后原来的扇区被删除,计算出该扇区在文件整理后的内容,写入扇区,之后删除空闲扇区的备份。文件系统从头到尾每个扇区重复这样作。在碎片整理时,如果一个扇区不需要进行碎片整理,碎片整理程序就不会动这个扇区因此,受碎片整理程序影响的扇区数目依赖于当前被文件系统占用的Flash扇区数和被删除文件在Flash中的位置。

在一个典型的嵌入式应用里,文件系统中的可执行文件本身就是应用程序。可执行文件一般是最大的文件,也是最不可能经常改变的文件。这意味着执行文件所占用的空间是相对固定的,将会减少空闲扇区因为碎片整理而进行的擦写次数。另外一方面,如果有任何文件需要定期改动,碎片整理将会更加频繁运行。

嵌入式设计系统范文5

关键词:SEP4020;音频系统;驱动程序;IIS总线;UDA1341

中图分类号:TP338文献标识码:A文章编号:1009-3044(2008)31-0964-03

Design of Embedded Audio System Based on SEP4020

QI Hao-chun

(IC Embedded System Lab,Southeast University,Nanjing 210096,China)

Abstract: SEP4020 which is developed by National ASIC System Engineering Research Center of SEU is a microprocessor based on ARM7TDMI core. The playing and sampling of audio signals is realized with an embedded audio system constructed by connecting the SEP4020 and CODEC UDA1341 with IIS bus. The hardware system structure and design of device driver of Embedded Audio device based on SEP4020 and IIS Bus interface have been introduced in the article. The explanations of relative hardware designs, as well as the key features of the audio devices' driver under embedded system are provided.

Key words: SEP4020; audio system; driver; IIS bus; UDA1341

1 引言

嵌入式音频系统广泛应用于GPS自动导航、PDA、3G手机等嵌入式领域,音频系统基于某种处理器和操作系统,由音频设别和驱动程序两部分组成。音频设别主要完成声音数据的采集、回放、混音和声音信号的模数转换,驱动程序在系统启动时对硬件进行初始化,在系统启动后实现硬件和应用程序之间的数据交互。

音频系统设计包括软件设计和硬件设计两方面,硬件部分采用基于IIS总线的音频系统体系结构。IIS(Inter-IC Sound bus)是飞利浦公司提出的串行数字音频总线协议,它主要针对数字音频处理技术和设别的标准接口,它将音频数据和时钟信号分离,从而避免了由时钟带来的抖动问题,系统中不再需要消除抖动的器件。随着该标准的广泛应用,不同厂家纷纷开发了支持该标准的语音芯片,但大多数由于功能单一,操作复杂,没有得到广泛应用。PHILIPS生产了一种支持IIS总线数据格式的音频编解码新品啊UDA1341TS,由于其功能强大、低功耗、低电压及其具有DSP语音功能等特征,目前已广泛应用于各种嵌入式语音系统中。

在软件上,作为一个功能复杂的嵌入式系统,需要有嵌入式操作系统支撑。Nucleus PLUS是美国ATI公司位实时性要求较高的嵌入式系统应用设计的操作系统内核。约95%的Nucleus PLUS代码用ANSI C语言编写,因此,非常便于移植并能够支持大多数类型的微处理器。由于音频应用对实时性有很高的要求,且需要处理的数据量较大,所以必须合理分配资源,使用合适的算法。本文针对东南大学的SEP4020处理器和PHILIPS公司的UDA1341TS型立体声音频CODEC构造了基于IIS的嵌入式音频系统, 给出了整个系统的软硬件实现方案。

2 硬件体系结构的配置

2.1 SEP4020微处理器简介

SEP4020由东南大学国家专用集成电路系统工程技术研究中心设计的基于ARM720T的一款ARM处理器,采用0.18um标准CMOS的工艺设计,内嵌32位RISC内核,兼容ARM720T,带8KB指令数据Cache,三级流水线作业,支持片上断点、调试点设置,具有先进的软件开发环境和调试环境。图1为SEP4020处理器的结构框图。

2.2 IIS总线

IIS(Inter-IC Sound)总线是PHILIPS公司提出的串行数字音频总线协议。它是一种面向对媒体的音频总线,专用于音频设备之间的数据传输,为数字立体声提供序列的连接至标准编解码器。IIS总线只处理声音数据。其他信号(如控制信号)必须单独传输。为了使必需的引脚数最小并且保持连线简单,IIS总线由3条信号线组成:时分复用的数据铜导线(SD)、字选择线(WS)和时钟线(SCK)。

I2S工作模式分为MASTER模式和SLAVE模式,MASTER模式下,I2S向外输出时钟,SLAVE模式下,时钟由外部芯片提供。常见的SOC芯片的I2S工作在MASTER模式,芯片外接音频CODEC,SOC芯片向外提供数据,CODEC做DA转换发出声音,录音则是CODEC提供AD转换后的数据,SOC芯片把数据接收到MEMORY中。

无论在MASTER模式还是在SLAVE模式,I2S都可以作为TRANSMITTER或者RECEIVER,如果I2S向外接CODEC提供数据,I2S是TRANSMITTER,如果I2S从外接CODEC接收数据,I2S是RECEIVER。

图2 MASTER = TRANSMITTER图3 MASTER = RECEIVER

SCK由总线时钟分频而来,分频比可配。WS是占空比为50%的周期性信号,高低电平分别对应左右(或者右左)声道,周期长度和音频数据的字长有关,例如,8位的双声道音频数据,对应的WS周期就是16个SCK,8个左声道数据,8个右声道数据;若是单声道,WS的高低电平将使用相同的数据。左右声道对应的WS信号电平可配,可以左低右高或者左高右低。

图4I2S信号传输波形(左先) 图5 I2S信号输出波形(右先)

I2S的数据(SD信号)的变化比字选择(WS)晚一个时钟。I2S支持8位、16位、32位字传输,数据的传输支持DMA模式。在单声道模式下,左右声道输出同样的数据。

当I2S作为TRANSMITTER工作时,数据从总线传输到I2S的数据FIFO,然后根据设定的字长、声道将数据送出,数据的高位先出。当FIFO为半空的时候,发出中断和DMA请求,当FIFO为空时,发出空中断,I2S将继续重复发送最后一个数据(这种情况下,CODEC将会发出不是用户想要的声音),直到有新的数据写到FIFO中。

当I2S作为RECEIVER工作时,数据从外接的CODEC输入到FIFO,当FIFO半满时发出中断和DMA请求,当FIFO为满时,发出满中断,I2S将继续接收数据,但之后接收的数据会被丢弃而不被存入FIFO中。

除了工作在标准的I2S模式,I2S模块还可以工作在WS和SD对齐的方式。

图6 对齐数据输出波形(左先) 图7 对齐数据输出波形(右先)

SEP4020内置IIS总线接口,可直接外接8/16比特的立体声CODEC。它还可以给FIFO通道提供DMA传输模式而非中断模式,从而使数据发送和接收同时进行。该IIS接口有3种工作方式(正常传输模式,DMA模式,传输/接收模式),可以通过设置IISCON寄存器来选择,本系统使用正常传输模式,该模式下,IIS数据线将通过DMA接收和发送音频数据,IIS总线接口为FIFO队列的访问提供DMA传输模式来取代中断,从而发送和接收数据。

2.3 支持IIS的编解码芯片UDA1341TS介绍

UDA1341支持IIS总线数据格式,采用位元流转换技术进行信号处理,完成声音信号的模数转换,具有可编程增益放大器和数字自动增益控制器,其低功耗、低电压的特点使其非常适合用于MD/CD、笔记本电脑等便携式设备。

UDA1341提供两个音频通道,分别输入和输出,对应的引脚连接:IIS总线的音频输出IISSDO对应UDA1341的音频输入;IIS总线的音频输入IISSDI对应于DA1341的音频输出。UDA1341的L3接口相当于一个混音器控制接口,可以用来控制输入/输出音频信号的音量大小、低音等。L3接口的引脚L3MODE、L3DATA、L3CLOCK分别连接到SEP4020的GPA8、GPA3、GPA2。

2.4 L3总线介绍

本文中UDA1341TS采用微控制器输入模式。在该模式总,所有的数字音频处理特征和系统控制特征由微控制器通过l3m总线控制。如UDA1341TS在放音过程中去重音、音量控制、低音增强、高音和软件静音等DSP特征可通过L3 总线控制。

UDA1341TS和微控制器之间数据和控制信息的交换是通过一个L3硬件接口实现的。它包括以下引脚:

L3DATA,微控制器接口数据线;

L3MODE,微控制器接口模式线;

L3CLOCK,微控制器接口时钟线;

通过微控制器总线的信息传输是按照“L3”格式来组织的。它有两种不同的操作模式:地址模式和数据传输模式。地址模式通过L3总线来选择通道设备并且指明数据传输的目的寄存器。数据传输模式中数据传输可以是双向的,向UDA1341TS输入数据,对它的音频处理和控制功能进行编程;向外输出峰值电平的值。

L3控制的本质就是向UDA1341TS写数据的过程。向设备写控制字分两步进行:第一步是在地址模式根据地址选择设备,同时指名后来数据要发送到的寄存器类型;第二步是在数据传输模式下,传送一个8位字节。要想正确地配置硬件以完成正确的功能,SEP4020提供的5根IIS信号线IISDI,IISDO,IISLRCK,IISCLK及CODEC必须和UDA1341TS提供的IIS信号线DATAO,DATAI,WS,BCK及SYSCLK对应连接。

至此,使用SEP4020芯片和UDA1341TS及其它必需设备构建了一个功能完善的嵌入式音频硬件系统。为接下来的与本系统对应的底层控制软件的开发做好了准备,接下来进行基于硬件的底层软件设计。

3 底层驱动程序设计

嵌入式系统硬件设备种类繁多,且缺乏PC中标准的体系结构,所以必须为各种设备编写驱动程序,驱动程序的主要任务是控制音频数据在硬件中流动,并为音频应用提供标准接口。

通过配置IIS和CODEC,以及对DMA传输进行配置,可以实现IIS的录音和放音等功能,本系统音频采样规格为44.1Hz,采样精度为16bit。具体配置如下:

3.1 L3总线配置

本系统将GPA2配置为L3CLOCK信号,GPA3,GPA8分别配置为L3DATA和L3MODE。SEP4020和UDA1341连接配置程序如下:

static void IIS_PortSetting(void)

{ #define L3C (1

#define L3D (1

#define L3M (1

static void _WrL3Addr(U8 data)

{

S32 i,j;

rGPBDAT= rGPBDAT &~(L3D|L3M|L3C)|L3C;//L3D=L, L3M=L(in address mode), L3C=H

for(j=0;j 190ns

//GPB[4:2]=L3C:L3D:L3M

for(i=0;i

{

if(data & 0x1) //If data's LSB is 'H'

{

rGPBDAT &= ~L3C; //L3C=L

rGPBDAT |= L3D;//L3D=H

for(j=0;j 500ns

rGPBDAT |= L3C;//L3C=H

rGPBDAT |= L3D;//L3D=H

for(j=0;j 500ns

}

else //If data's LSB is 'L'

{

rGPBDAT &= ~L3C; //L3C=L

rGPBDAT &= ~L3D; //L3D=L

for(j=0;j 500ns

rGPBDAT |= L3C;//L3C=H

rGPBDAT &= ~L3D; //L3D=L

for(j=0;j 500ns

}

data >>= 1;

}

rGPBDAT= rGPBDAT & ~(L3D|L3M|L3C)|(L3C|L3M); //L3M=H,L3C=H

}

3.2 DMA传输配置

本系统相应的DMA寄存器配置如下,I2S Transmitter 表示放音,I2S Receiver表示录音。

// I2S Transmitter DMA Configuration

write_reg(DMACC0SrcAddr, EMIADDR_CSC_BASE); //source addr

write_reg(DMACC0DestAddr, I2S_T_DR); //destination addr

write_reg(DMACC0Control, TRANSFERSIZE(16)+DI(0)+SI(1)+DESTSIZE(2)+SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));

//control, 16, SI, 32, Burst = 4

write_reg(DMACC0Configuration, 0X200B); //configuration, mem to I2S_T,

//completionmask, enable

// I2S Receiver DMA configuration

write_reg(DMACC2SrcAddr, I2S_R_DR);

write_reg(DMACC2DestAddr, EMIADDR_CSD_BASE);

write_reg(DMACC2Control, TRANSFERSIZE(0x800)+DI(1)+SI(0) + DESTSIZE(2) + SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));//re:256 -- tr:16, add int

write_reg(DMACC2Configuration, 0X038D); //I2S_R(MMC) TO mem,

//completion not mask

// I2S_T DMA Configuration as receiver

write_reg(DMACC0SrcAddr, I2S_T_DR);//source addr

write_reg(DMACC0DestAddr, EMIADDR_CSGBAB_val);//destination addr

write_reg(DMACC0Control, TRANSFERSIZE(16) + DI(1) + SI(0) + DESTSIZE(2)+SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));//control, 16, SI, 32, Burst = 4

write_reg(DMACC0Configuration, 0X020D);//configuration, mem to I2S_T,

//completionmask, enable

// I2S_R DMA configuration as transmitter

write_reg(DMACC2SrcAddr, EMIADDR_CSB_BASE);

write_reg(DMACC2DestAddr, I2S_R_DR);

write_reg(DMACC2Control, TRANSFERSIZE(256)+DI(0)+SI(1)+DESTSIZE(2)+SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));//re:256--tr:16, add int

write_reg(DMACC2Configuration, 0X280B);//I2S_R(SSI) TO mem,

//completion not mask

4 结束语

本文介绍了在嵌入式系统中构建基于IIS总线的音频系统,实现音频的播放和录音的采集。具体讲述了基于东南大学ASIC中心SEP4020型微处理器的CODEC硬件连接的实现及嵌入式操作系统下音频驱动的实现。该系统已经在基于SEP4020的开发平台上得到了实现,可以顺利进行音频的播放和采集,并取得了良好的效果。

参考文献:

[1] SEP4020移动终端应用处理器用户手册[S].国家用集成电路系统工程技术中心,2008-01.

[2] FURBERS.ARM SoC System Structure[M].田泽,于敦山,盛世敏,译.北京:北京航空航天大学出版社,2002:87-159.

[3] 徐睿,李斐,王申康.基于IIS总线的嵌入式音频系统设计[J].计算机应用,2004(4):7-9.

[4] 黎想,马欣.基于VxWorks的音频系统的设计与实现[J].计算机工程,2002(12):233-235.

嵌入式设计系统范文6

【关键词】嵌入式系统;开放型;虚拟实验平台

嵌入式课程是电子信息类专业的一门核心课程,具有理论学习难度大、实践操作性强等特点。随着现代计算机仿真技术的飞速发展,在嵌入式课程的实验教学中采用仿真软件进行虚拟实验已变得非常普遍。国内外已经有不少大学对这方面进行了研究,主要是利用计算机仿真技术实现实验内容、完成实验操作。虚拟实验在嵌入式课程体系教学中的应用,也取得了一些成果。如何结合自己的教学实际,设计一套性能稳定良好的嵌入式系统虚拟实验平台,使学生真正对课程感兴趣、更全面的提高学生的动手实践技能,就成了一个亟待解决的问题。

1嵌入式实验教学存在的问题

1.1实验教学难以开展

对于嵌入式系统的远程教学、网络教学等开放教学模式来说,受空间和时间等因素的影响,很难开展实验教学,学生没有办法动手操作直接参与实验。而对于传统的面授教学来说,虽大部分院校配备有相关的配套实验箱,但ARM实验箱价格较为昂贵,所以课程的实体实验资源非常有限,实验需要分批、分时进行,当然,还有部分院校因实验条件和资金的限制,根本不具备实验的条件,只能单纯进行理论教学。缺乏了实验教学的辅助作用,大大增加了ARM嵌入式教学的难度。

1.2实验教学缺乏创新

目前,课程的实验教学一般采用验证性实验模式,实验内容较为单一。学生一般在老师的指导下,按照实验手册进行简单接线,然后直接将编写好的程序下载到芯片中,观察实验现象,机械被动地进行实验操作。学生做完了实验,只能做到实验结果的表象认知,缺乏“从概念到产品”的系统训练,对于嵌入式系统产品的设计并没有深入的学习体会。

2虚拟实验平台设计

为了有效加强课程实验内容的深度,提高学生综合运用知识的能力,适应市场的变化,在借鉴前人成果的基础上,结合笔者的实际教学经验,采用仿真软件Proteus和编程工具Keil,设计完成了一套适用于开放型教学的虚拟实验平台。本虚拟实验平台采用基于ARM7内核的LPC2138微控制器作为核心控制芯片,共包括14个实验模块,除“汇编语言实验模块”外,其他模块均采用C语言实现软件程序的编写,并且,在完成基本实验要求的基础上,学生可自行设计程序并修改。设计完成的适用于开放型教学的虚拟实验平台如图1所示。

2.1最小系统实验模块

最小系统实验模块包括LPC2138微控制器,3.3V供电电路,复位电路和时钟电路,其中时钟电路采用振荡模式产生时钟信号。通过学习可帮助学生理解最小系统的概念和组成部分。

2.2汇编语言实验模块

通过一个简单的ARM汇编程序实现两个寄存器的循环相加。可让学生了解有关ARM汇编指令格式、程序结构和基本风格。

2.3输入输出(GPIO)实验模块

采用引脚分别连接1个按键输入和1个蜂鸣器及1个LED输出,完成最基本的GPIO输入输出控制。当按键按下的情况下,蜂鸣器响,LED发光二极管灭;当按键松开的情况下,蜂鸣器不响,LED发光二极管亮。为了和定时器实验模块中的定时功能进行对比学习,本实验模块中的延时功能采用for循环语句实现。

2.4外部中断实验模块

输出元件采用1个蜂鸣器、2个发光二极管,输入元件采用1个按键模拟外部中断信号。正常状态下,2个发光二极管依次循环点亮,按下按键,检测到中断信号,进而执行中断处理函数,执行完毕后,再返回主函数继续执行发光二极管的点亮任务,模拟中断流程。

2.5定时器(Timer)实验模块

主要使用定时器1实现比较匹配输出控制LED闪烁,并采用四通道虚拟示波器的A端口检测输出信号的波形。为了让学生熟悉示波器的使用以及各种信号的比较学习,虚拟示波器的B、C、D端口分别输入脉冲信号、时钟信号和正弦信号三种信号源。

2.6SPI实验模块

采用串入并出显示驱动芯片74HC595控制1个LED数码管循环显示0~F字符。通过学习可掌握全双工同步串行接口SPI的工作原理、SPI的接口电路连接和LED数码管显示的编程控制方法。

2.7I2C实验模块

主要是通过操作带I2C接口的存储芯片FM24C02完成,FM24C02是2048位的串行电可擦除只读存储器,内部有256个字节。该实验模块主要是实现向该存储芯片中写入10字节数据,然后读回数据,并判断是否正确。让学生学习和掌握设置I2C引脚连接、I2C时钟频率、主机发送起始信号、发送从机地址和判断总线状态等方法。

2.8UART实验模块

通过串行接口UART0输出字符串,输出字符串可通过编程控制,采用虚拟终端接收并显示,同时采用虚拟串行接口器件COMPIM,向上位机PC发送该字符串,并且使PC终端显示收到字符串,实现微控制器芯片与上位机PC的通信。

2.9ADC实验模块

主要通过可调电阻改变输入引脚的电压提供模拟量输入,实验平台通过ADC对模拟量外部输入电压进行AD采样转换,并把结果转换成电压值,然后发送到串行接口UART0,结合UART实验模块中的虚拟终端进行显示。

2.10WDT实验模块

看门狗定时器实验模块开始主要先控制4个LED发光二极管循环闪烁8次,期间不断进行喂狗处理,然后只点亮其中1个LED发光二极管,并进入死循环,等待WDT复位。通过学习让学生了解看门狗的原理以及如何设置相关寄存器完成看门狗的使能、启动、喂狗等操作。

2.11PWM实验模块

主要采用PWM2输出PWM信号,并由按键控制PWM的占空比,每按一次按键将会改变一次PWM的占空比,从而控制LED发光二极管的闪烁亮度。利用虚拟交流电压表检测输出端口的电压大小,并利用示波器显示输出端口的波形,便于观察LED发光二极管的闪烁亮度和理解PWM的作用。

2.12RTC实验模块

主要采用微控制器内部RTC的实时时钟控制LED发光二极管的闪烁,即通过设置RTC秒值的增量产生中断,每产生一次中断,取反LED发光二极管控制口,并利用示波器检测输出端口的波形。

2.13LCD实验模块

实现通过输出端口控制液晶显示屏LM032L显示字符,显示字符可通过程序改变。

2.14UC/OS-II操作系统实验模块

基于UC/OS-II实时操作系统,通过芯片引脚分别控制1个按键输入和1个蜂鸣器及1个LED发光二极管输出,实现基于实时操作系统的GPIO输入输出功能。通过学习帮助学生简单理解芯片在操作系统下进行控制的方法以及和在没有操作系统的情况下进行控制的区别。该实验平台已通过打包工具生成了安装包,学生只需将安装包通过现有网络版实验管理系统下载到PC机中或通过U盘等存储工具复制到PC机中,按照安装步骤完成简单安装后,就可以利用虚拟仿真技术在PC机上进行实验操作。

3仿真效果举例

本节主要选取虚拟实验平台中的一个模块ADC实验模块演示仿真效果,ADC实验模块主要通过可调电阻改变输入引脚的电压提供模拟量输入,进行AD采样转换,并把结果转换成电压值,发送到串行接口UART0进行显示。图2为ADC实验模块的主函数;图3为ADC实验模块的仿真演示效果。

4实验平台建设意义

4.1节省资金投入

本文设计完成的虚拟实验平台可方便快捷的安装到计算机中,这样既可以缓解实验设备紧张、建设资金有限的问题,也可以解决实验设备更新速度慢等问题,保证每个学生都能做到真正参与实验。

4.2培养实践能力

通过虚拟实验平台,可让学生形象深刻的了解嵌入式系统的工作原理,掌握知识本身,如在实验条件允许的情况下,在虚拟实验的基础上,再加上传统的实验箱教学,形成“虚实”结合的实验模式,将大大有利于学生学习课程的兴趣和学生动手实践技能的提高。

4.3突破时空的局限该平台的实现

为学生提供了开放的学习环境,学生可选择合适的时间和地点进行学习,从而很好的解决了学生学习时在时空上的局限性。4.4提供借鉴意义随着仿真软件的功能越来越强大和应用越来越成熟,在实验教学中采用仿真软件进行虚拟仿真实验已变得非常普遍。本文对嵌入式虚拟实验平台的研究对其它各类专业虚拟实验室的建设具有一定的借鉴意义。

5结论