嵌入式模块

2024-06-07

嵌入式模块(共7篇)

嵌入式模块 篇1

随着社会信息化的发展, 嵌入式系统在经济、教育、科技等领域得到了广泛的应用。小到电子手表, 大到飞机、火箭都需要应用到嵌入式系统。在这种情况下, 如何保障嵌入式系统的安全就显得尤为重要, 尤其是当嵌入式系统应用到金融领域或者是科技军事领域, 对其安全性能要求更好, 因此, 研究嵌入式系统的安全性, 建立可信根和信任链来保障嵌入式系统的安全性和完整性是非常重要的。

一、嵌入式系统的发展对可信平台模块提出的新挑战

嵌入式系统具有一些特点, 这个系统有特定的应用场景, 硬件设计较为自由, 自主设计性强, 系统软件硬件设计都很灵活, 具有可裁剪性, 嵌入系统对TPM的功能、可靠性、成本、体积、功能等都有严格的要求。而目前, 传统的TPM还存在一些不足核问题, 比如, TPM的芯片缺乏主动控制能力, 而嵌入式系统的灵活性很强, 与之相比, TPM的主控能力却相对不足, 这就与嵌入式系统之间产生较大的矛盾, 对嵌入式系统的TPM提出了新的挑战。另外, TPM密码机制存在不足。

二、嵌入式系统可信平台模块设计

结合嵌入式系统的特点, 需要设计一种能够满足其需要的可信平台模块, 这种模块需要在传统TPM的基础上, 进行创新改进, 增加新的功能, 这对于TPM研究是一种新的挑战。通过可信平台模块的设计需要提升嵌入式系统的可靠性, 有效减低信息传递过程中的损失。新型的模块具体有总线仲裁模块、对密码引擎和备份恢复魔抗, 通过建立可信平台模块提升传统TPM的控制能力, 保障整个嵌入式系统的稳定新, 安全性和可靠性。

1. 总线仲裁模块。在可信计算平台中, 引入TPM后会产生两个问题, 第一, 启动流程问题, 在上电后, TPM需要先进行完整性的检验, 这是, 平台处理器和外设不能通电启动, 只有在TPM检验完毕后, 才能使平台处理器和外设开启, 第二, TPM与平台处理器对需要对外部存储器上的数据进行读取, 这种情况下, 必然会产生对存储器的互斥访问问题。主要解决以上的两个问题。通过总线总线仲裁模块对外部存储器总线控制权进行仲裁后, 对整个嵌入系统进行控制, 通过启动控制和系统仲裁功能, 以解决上述问题。

在进行设计的过程中, 为了保障TPM能够完成工作, 还需要增加两个寄存器, 也就是控制寄存器和状态寄存器。通过设置两个寄存器对信号进行复位, 并保障信号传播的有效性。

总线总裁模块引入到嵌入式系统可信平台模块建设中, 可以使传统的TPM突破自身的限制, 成为主设备控制计算机系统, 对计算机系统进行有效地控制, 使系统更具良好的扩展性能。同时, 新设计的ETPM能够进行平台启动控制, 进行系统完整性度量, 系统总线互斥访问和外设控制等功能都能实现, 这样, 不需要添加其他配件, 系统的安全可靠性能就可以得到有效的提升。这种设计使TPM更加符合嵌入式系统灵活多变的性能特点, 能够有效解决嵌入式系统中的一些问题, 提高系统的可信度。

2. 备份恢复模块。在TPM中加入备份恢复模块, 可以有效提高整个可信计算机平台的可靠性, 如果系统被非法更改, 备份恢复在发现异常时就会将系统关键数据进行恢复, 有效保障系统的稳定性和可靠性。加入备份恢复可以提高嵌入式系统平台的持续工作能力和抗击数据信息的篡改能力, 保障系统的高效性和安全性。

3. 对称密码引擎模块。在TPM内部设计一个对称密码引擎可以满足嵌入式系统对对称加解密的需求, 通过可信软件栈能够为上层应用提供对称密码加解密服务。加入对称密码引擎后, TPM就具有了对称密码和非对称密码加解密的功能, 从而有效发挥出系统的安全性能, 为用户提供安全的可靠的服务。

总之, 总线仲裁模块、对称密码引擎模块和系统备份恢复模块的设计都将有效提升TPM的稳定性, 使TPM更加符合嵌入式系统的工作环境, 通过可信平台模块在嵌入式系统环境下的功能设计, 嵌入式系统的功能价值将得到进一步提升, 嵌入式系统安全性将得到有效的保障。

参考文献

[1]张焕国, 李晶, 潘丹铃, 赵波.嵌入式系统可信平台模块研究[J].计算机研究与发展, 2011 (07) .

[2]王禹, 王震宇, 姚立宁.嵌入式平台TPM扩展及可信引导设计与实现[J].计算机工程与设计, 2009 (09) .

终端系统嵌入式计算机模块的开发 篇2

关键词:模块化设计,嵌入式计算机

1 概述

现代战争对雷达性能提出了高的要求, 随着数字处理速度的迅速提高, 指挥、控制、通讯能力的加强, 硬件成本和尺寸的大幅度减少, 雷达终端数据处理和通讯中使用的计算机将发生革命性的变革, 嵌入式计算机模块的开发势在必行。

嵌入式计算机模块, 是根据雷达终端系统的数据处理和通讯对计算机的需求, 按照雷达设计规范自行开发的。外购处理器以功能模块形式插入标准的插件上, 和插件上的外围电路组成嵌入式计算机模块, 成为雷达终端系统的数据处理和通讯插件。嵌入式计算机模块的使用因减少了机柜间大量的连接线和中间转接过程, 从而保证了终端系统的整体性和可靠性;不可忽视的是模块化的使用, 在缩短新产品研制周期的同时也减少了调试工作量, 增加了不同雷达终端间的功能插件可更换性。

2 模块化设计

首先它作为一个模块, 在设计中必须考虑如何尽可能满足大多数雷达终端系统的技术要求:

2.1它要接收检测录取设备送来的点迹数据, 通常要完成几乎上万个点迹的计算和过滤, 要对上千条航迹进行编批与跟踪, 所以对处理器速度提出了较高的要求, 我们选择Pentium II 333MHz (CPU) 。用测试软件Passmark在WIN98环境下测试CPU运算速度, 可以满足要求。

2.2终端系统完成点、航迹处理后, 还要I/O通讯, 将目标轨迹和参数加以上报, 根据需要, 还要能向检测录取器提供检测与跟踪需要的控制信息, 有的还承担多站的数据综合任务, 因此该模块还必须包括I/O部分。

2.3我们目前研发的雷达, 其终端系统插件均采用210芯标准结构 (220mm×233mm) , 在这样一块印制板上要包含处理器和I/O, 对处理器本身的小型化结构提出了较高的要求。基于上述需求分析, 嵌入式计算机模块采用标准210芯插件板结构形式, 功能上包含二部分:处理器和外围I/O部分。

处理器选用EBC356, 结构尺寸:145mm (W) ×102mm (D) (3.5"FDD From Factor) ;CPU为Pentium II 333MHz, 128MB内存, 显示控制器、网络、PS/2、USB、2串1并口等全部ALL IN ONG;同时EBC356向下完全兼容基于PC104的486/586。EBC356作为一个功能块直接接插在210芯插件板上, 和插件板上的外围I/O部分组成为嵌入式计算机模块。

3 模块实现

计算机模块包括两部分:处理器和输入/输出通讯接口, 是根据雷达终端对该模块的功能需求而划分的。处理器是计算机模块的主要组成部分, 其作用是对目标点迹进行相关, 建立航迹, 平滑外推, 将目标参数送数字显示器进行二次显示和情报综合, 通讯上报给指挥系统, 通过人工干预实现半自动录取、手动录取和全自动录取;输入/输出接口用于计算机模块间的通讯, 信号处理后点迹的直接录入, 地图的存储, 整个终端系统的地址译码, 并串口等。

3.1 处理器部分

以嵌入式控制器EBC356 (兼容基于PC104的486/586) 为主体, EBC356是高新技术的名牌产品, 小于Intel笔记本中处理器的结构, 拥有高于笔记本的性能:

CPU:Pentium II 300MHz;

内存:在板内存支持128MB的SDRAM;

显示:C&T69000VGA/Panel控制器, 2MB显存,

支持256 color, 75Hz的CRT到1600×1200,

支持TFT Panel到1280×1024 (支持Windows 95, Windows98, Windows NT 4.0) ;

I/O口:在板含有Intel 82558/100 Base TX, Ethernet网络控制器, 直接支持LAN,

在板1路RS232串口、1路可通过开关选择的RS422/485串口,

在板1路打印机并口,

在板1个PS/2接口 (鼠标和键盘) ,

在板1路USB接口,

具有软、硬驱接口;

Watchdog:1, 2, 4, 8…64秒中断;

固态盘:支持2MB~72MB的M-System固态盘;

外围支持:在板Back up电池和蜂鸣器一个;

电源:供电为单5V, 最大电流为5A, 含软、硬驱供电

3.2 输入/输出部分

三机通讯 (交换数据) :2组字节宽度双口RAM

录取点迹:1组字宽度双口RAM

地图存储:2组CAT28C64

转接插头座:PC104转接, 串并口转接, CRT转接, LAN、PS/II、USB转接

地址分配译码:该模块地址译码, 终端系统系统板级译码

3.3 模块功能。

3.3.1处理器选用EBC356 Pentium II300MHz, 同时兼顾PC104 486/585, 引用信号:16Bit数据总线, 20Bit地址总线, AEN, /SBHE, /IOW, /IOR, /SMEMWE, /SMEMRD, /IOCS16, /MEMCS16, /IOCHRDY, 4个中断IRQ10, IRQ11, IRQ12, IRQ15。3.3.2插件的前面板上引出“CRT接口”, “通讯串口”, “LAN接口”, “PS/II接口”, “USB接口”, 调试时可以很方便使用;同时这些接口和“打印机接口”引到插件210芯标准插头上, 方便系统使用。3.3.3设置2组字节双口RAM, 使该模块具三机通讯功能;设置1组字双口RAM, 使信号处理的点迹直接写入该模块。3.3.4设置2片CAT28C64使该模块有地图存储器功能, 可以建立多幅背景地图, 如高速公路图等, 方便终端系统实现滤除虚警, 提高航迹质量。3.3.5 1片EPLD电路作为该模块译码, 包括“三机通讯”译码, 取“点迹数据”译码, 取“气象数据”译码, 控制“同步串口”译码, 控制“地图存储器”译码, 终端系统“插件级”译码。3.3.6插件前面板上安装一复位开关, 210芯插座也可输入一系统复位信号, 通过选择开关, 作为MAX811 (D2) 的输入, MAX811也具上电复位功能, 最后输出复位信号/RST (a38) 给录取板和检测板等作为系统复位, 计算机板本身也使用该信号。3.3.7 1片85C30的1个串口工作于同/异步方式, 422数据传输 (包括数据收/发, 时钟收/发) 。中断 (INT1) 通过开关 (S6) 挂在EBC356的IRQ15上。

4 应用实例

在我所研制的雷达中, 该计算机模块以其整体结构和性能在多种研制的型号雷达中得以应用, 以XX雷达为例。终端系统应用了两个模块:一个用于数据处理, 它接收雷达的目标点迹信息, 进行坐标变换, 航迹相关, 平滑处理, 判交叉处理, 判机动处理, 最后形成航迹数据;另一个用于外设管理, 控制驱动1个并行接口和8个串行接口, 分别用于打印即、空情上报、主显示器、分现实器、图传设备、监控系统、记录/重演设备、III型询问机等数据通讯。两个模块之间用FIFO进行通讯。

终端录取, 管理计算机框图

结束语

嵌入式测姿系统软件的模块化 篇3

英文引用格式:Tian Anqi,Jin Tian.The modularization of embedded attitude determination system software[J].Application of Electronic Technique,2015,41(7):26-29.

0 引言

随着全球定位系统的发展,姿态测量技术逐渐成为卫星导航应用领域研究的热点。姿态测量一般应用于卫星、航天器、载人机、无人机等高动态的载体上,这些载体要求姿态测量系统具有精度高、实时性强、安装方便等特点。嵌入式系统是一种完全嵌入到受控器件内部,为特定应用而设计的专用计算机系统,具有响应时间短、系统内核小、可扩充、可移植、实时和可靠性较强等优点。ARM处理器体积小,功耗低,成本低,性能高,执行效率高。目前,嵌入式测姿系统软件趋于成熟,但由于功能复杂,程序冗长,可操作性低。

近年来,利用全球导航卫星系统(Global Navigation Satellite System,GNSS)接收机载体进行姿态测量的技术已经逐步成熟,但随着接收机板卡种类、导航系统种类、姿态算法种类的增加,对嵌入式测姿软件的实时性、可用性以及可扩展性提出了更高的要求。2008年,荷兰代尔伏特理工大学实现了GPS单频单历元姿态解算系统[1]。2012年,该大学实现了多天线GNSS测姿系统[2]。2012年,澳大利亚科廷大学进行了多星座测姿试验[3]。2008年,北京理工大学设计了单基线测姿系统,并进行静态和动态试验[4,5,6]。2007年~2009年,上海交通大学完成姿态测量系统样机的研制[7,8,9]。2012年,中国卫星导航定位应用管理中心与54所联合研制了GPS卫星导航系统多频姿态测量系统[10]。

此外,国内外几大GNSS厂商均有相应的测姿产品。美国Trimble公司的BX982利用GPS/GLONASS/BD进行测姿,加拿大Novatel公司、比利时Septentrio公司利用GPS/GLONASS测姿。中国星网宇达研发BDS/GPS定向接收机,东方联星的TOAS100D利用双天线进行测向、PNS200-BGI利用BD/GPS/INS进行定位测姿。

综上所述,国内外针对姿态测量技术已经开展了较为深入的研究,相关姿态测量方法已经在姿态测量样机上开展了静态及动态实验验证,而本文将在之前的研究基础上重点进行嵌入式测姿软件模块化方法介绍并对其可用性进行实验验证。

1 软件模块化

由于程序需实现不同导航系统、不同接收机板卡、不同姿态解算算法的选择,且要求程序具有通用性及可扩展性,因此将其模块化。模块化即根据程序的流程和调用的顺序等将程序以功能为单位划分为一个个单元的形式,模块化后每一部分的功能划分很清晰,模块之间通过接口传递参数和变量,操作简单,可有效提高工作效率和程序的运行效率。

1.1 模块划分

测姿软件模块化后可设计为由1个主程序和7模块组成,主程序声明如何调用各个模块及界面显示;模块分别为:读数模块、解码模块、预处理模块、单点定位模块、RTK定位模块、模块测姿模块、结果处理模块。

1.2 模块功能

主程序的功能为调用各个模块并进行导航系统、接收机板卡、频点的选择以及界面的显示。读取二进制数据流模块可进行二进制文件数据以及二进制串口数据的读取,此模块需使用多线程模式处理多个终端的数据流。解码模块将二进制数据流进行解码,可兼容OEMStar、BDM605、BDM670等型号接收机板卡,且此模块可进行扩展。预处理模块进行各通道数据对齐及参考星的选择。单点定位模块可计算卫星位置以及利用最小二乘法实现单点定位。RTK模块利用实时载波相位差分技术得到载体的精确位置。姿态解算模块实现3种姿态解算算法,分别为GNSS单历元CLAMBDA算法、GNSS递推多历元姿态解算算法以及GNSS卡尔曼滤波算法,此模块可扩展其他算法。结果处理模块将定位定姿的结果进行整合处理,并返回至主程序。

1.3 模块接口

每个模块具有4个接口(Get Default、Init、Process、Un Init),分别完成接口信息查询、初始化、信号处理和退出功能。其中,Get Default函数将返回本模块功能、配置参数接口、配置参数默认数值和配置参数说明等内容;Init函数将完成全局变量指针的传递工作,Process函数具体实现模块信息的处理,Un Init函数实现退出功能。各模块间输入、输出接口如表1所述。

1.4 主程序

主程序读取配置文件,配置文件可对频点、基线长度等进行设置。读取配置文件后根据读取到的参数进行各模块的初始化,再分别进入每个模块的process函数,按照图1所示流程依次完成各部分功能,最后进行界面更新。

主程序对每个模块的功能函数循环调用,每次循环解出一个历元姿态、定位结果。

2 实验性能分析

2.1 RTK定位测试结果

为验证嵌入式测姿软件模块化后系统的RTK定位效果,现将基站架设于北京航空航天大学新主楼F座楼顶,流动站位于北航田径场看台北侧,流动站接收机选用支持的OEMStar L1单频板卡,天线选用NovAtel ANT-35C2GA-TW外置天线。解算结果如图2~图4所示。

为测试系统RTK定位性能,特统计解算的流动站位置坐标的均值与标准差结果,统计结果如表2所示。

由此可见,嵌入式测姿系统模块化后RTK定位结果可以达到毫米级。

2.2 测姿测试结果

为验证嵌入式测姿系统的测姿结果,在北京航空航天大学操场看台上,选用3个全频天线以及北斗星通公司GPSBD双系统接收机进行试验。基线长度均为1 m。使用3种定姿算法,分别为CLAMBDA算法、递推多历元算法、卡尔曼滤波算法,实验结果如图5所示。

3 结论及建议

本文探讨利用嵌入式软件模块化的方法,通过不同GNSS姿态测量算法,解决可操作性、可扩展性等问题,实现对GNSS测姿软件的模块化。实际数据验证表明嵌入式软件模块化后:(1)可移植性强;(2)扩展性强;(3)可用性高;(4)适合在一般载体上使用;(5)资源利用率高。

由于GNSS测姿算法复杂度较高,需进一步探讨其在嵌入式ARM平台上实现时遇到的问题。

参考文献

[1]BUIST P.The baseline constrained LAMBDA method for single epoch,single frequency attitude determination applications[C].Proceedings of the 20th International Technical Meeting of the Satellite Division of the Institute of Navigation.Fort Worth Convention Center,Fort Worth,TX ION GPS,2007:2962-2973.

[2]GIORGI G,TEUNISSEN P J G,VERHAGEN S,et al.Testing a new multivariate GNSS carrier phase attitude determination method for remote sensing platforms[J].Advances in Space Research,2010,46(2):118-129.

[3]NADARAJAH N,TEUNISSEN P J G,BUIST P J,et al.First results of instantaneous GPS/Galileo/COMPASS attitude determination[C].Proceedings of the 6th ESA Workshop on Satellite Navigation User Equipment Technologies(NAVITEC′12),Noordwijk,ESA,2012:22-29.

[4]王博.GPS姿态测量系统中的关键技术研究[D].北京:北京理工大学,2009.

[5]WANG B,MIAO L,WANG S,et al.An integer ambiguity resolution method for the global positioning system(GPS)-based land vehicle attitude determination[J].Meas.Sci.Technol.,2009(20):075108.

[6]WANG B,MIAO L,WANG S,et al.A constrained LAMBDA method for GPS attitude determination[J].GPS Solutions,2009,13(2):97-107.

[7]王永泉.长航时高动态条件下GPS/GLONASS姿态测量研究[D].上海:上海交通大学,2008.

[8]JIN W,ZHAI C,WANG L.Hybrid analytical resolution approach based on ambiguity function for attitude determination[J].Journal of Zhejiang University SCIENCE A,2009,10(7):1038-1048.

[9]靳文瑞.基于GNSS的多传感器融合实时姿态测量技术研究[D].上海:上海交通大学,2009.

嵌入式模块 篇4

关键词:嵌入式系统,实时控制,通信测试仪器

随着现代通信技术的发展,通信测试仪器不断推陈出新。各种新型设备对系统的实时响应能力的要求越来越高,一种通信测试仪器的实时响应性能,就成为系统设计能否成功的关键因素之一。笔者曾在多个通信测试仪器项目中,成功地应用ARM处理器、C51单片机等为主控芯片的嵌入式系统,实现了对仪器相关模块的实时控制功能。因此提出一种在某通信测试仪器中使用C51单片机来实现实时控制的设计方案。

1 硬件设计与实现

1.1 总体方案设计

在该通信测试仪器中,实时控制模块主要实现对射频接收频综、射频发生频综、滤波器组件、射频输入模块、射频输出模块等实时控制作用。对射频检波信号进行A/D转换以获取数据。与上位计算机进行通信等功能[1]。

根据待实现的系统功能要求,综合考虑系统资源,及芯片性价比等因素,确定采用以C51单片机为主控芯片的嵌入式系统方案,芯片为Silicon Labs的C8051F120[2],具有128 kB片内Flash存储器、8×1 024+256 Byte的片内RAM,可寻址64 kB地址空间的外部数据存储器接口、SPI、UART、定时器、时钟振荡器、PLL等,片上外设资源丰富、控制方便。

系统资源分配:射频接收、发射频综模块,内含DDS,PLL等,外部控制接口是微控制接口,因此直接用单片机的地址、数据、控制三总线实施控制。滤波组件、射频输入/输出模块等的工作状态与接口上信号电平高低有关,因此用GPIO的方式进行控制。A/D转换控制使用串行外围设备接口SPI。与上位机的通信使用RS-232串口[3]。总体设计框图如图1所示。

1.2 总线及I/O控制的设计

对于射频接收频综、射频发射频综模块,直接采用总线控制,为避免不同的模块控制时相互干扰,用3-8译码器对总线地址译码,产生不同模块的片选信号。同时数据线通过总线收发器以提高带负载能力[4]。对于滤波组件、射频输入/输出等用I/O控制的模块,并未直接使用51芯片的GPIO引脚,则是将数据总线经锁存后模拟GPIO信号供相关模块使用,如图2所示,其中,IO_/WR1由B_/CS7与单片机写线逻辑或后产生[5]。

1.3 SPI及RS232控制接口

C8051F120芯片上本身自带了A/D转换器,但只有12位,不适合该系统的需求,故在片外另加一片ADI公司的AD7707。其分辨率为16位,是∑-Δ体系结构,转换的是输入电平的平均值。三通道,输入电平范围可达±10 mV~±10 V。根据实际要求,该系统使用AIN3高电平输入端口,Unbuffered模式,HICOM、REF-接模拟地,VBIAS与REF+均接+2.5 V参考电压,模拟电源5 V,数字电源3.3 V,能检测输入范围为0~10 V的单极性电平。其控制接口是同步串行口,用51芯片的SPI直接控制。图3是AD7707的电气连接图[6]。

单片机与上位计算机的通信使用通用异步收发器UART,外接MAX3224,将UART信号转换为RS-232信号进行传输,MAX3224在3~5.5 V低电压下工作,却可产生RS-232的±12 V电压,只需连接TxRx和地线即可实现异步串行通信。系统中仍有一些时钟、复位电路和电源等,在此不再赘述。

2 软件设计与实现

2.1 主程序框架

主程序流程图如图4所示。

主程序是顺序结构,较为简单。主要分两部分:一是对系统各部分进行初始化设置,使其能够工作在正常状态。二是正常工作循环状态,当收到上位机的控制命令时,即进行相应的操作,无命令时则等待。对于嵌入式程序而言,无限循环是必要的。

2.2 串口通信程序

串口通信程序实现与上位机的通信功能。具体操作中使用一个循环队列存放接收到的上位机命令,分别用头指针和尾指针指向队头和队尾,将各命令字节取出,进行相应操作。命令执行完毕(队列取空),清标志位,等待新命令。如图5所示。

2.3 SPI通信程序

C51采用SPI主模式与AD7707进行通信。主模式写AD7707较为简单,单片机先写1 Byte的配置数据给AD7707,其会自动将该数据放入自身的通信寄存器,随后AD7707根据该配置值确定下一步要写的寄存器及数据大小,再将单片机随后输入的数据放入指定位置。C8051F120发数据前,先根据SPICN寄存器的TXBMT位的值判断是否能够发送数据,再向自身的SPIDAT寄存器写数据即可,硬件会自动将数据发出。

主模式读AD7707较为困难。当C51已设置AD7707的通信寄存器,表明下一步操作是读AD7707的某个寄存器值后,C51向SPIDAT写任意值,之后SPI数据线(MOSI)上会串行移出数据,同时时钟线上产生串行时钟,从设备(AD7707)收到时钟,将预备的数据送到MISO线上交给C51,同时不采纳主设备发送的任意值。C51将发送的串行数据放在移位寄存器中,当最后一位收到后即移入收缓冲器,再读SPIDAT便可读出数据。

2.4 其他软件模块

其他软件模块均是根据各部分硬件的具体要求,通过向所分配的对应地址空间按序发送所需数据来实现相关功能。

3 结束语

文中提出以C51单片机C8051F120为核心控制芯片的嵌入式系统,已成功应用于某通信测试仪器中,该系统通过中断及查询等方式较好地实现了对整机的实时控制功能。

参考文献

[1]JOHN C.嵌入式硬件设计[M].北京:中国电力出版社,2004.

[2]潘琢金.C8051f12x数据手册[M].深圳:新华龙电子有限公司,2004.

[3]肖利平.基于LWIP的嵌入式串口服务器的设计与实现[J].电子科技,2009,22(5):14-16.

[4]魏毅,柯赓.基于SOPC的商品信息查询系统设计与实现[J].西安邮电学院学报,2005(3):87-91.

[5]王巍,吴智铭.嵌入式Linux中的仿真集成开发环境设计[J].计算机仿真,2005(9):248-250,260.

嵌入式模块 篇5

导航功能模块的设计需要考虑以下几个问题:如何快速获取电子地图数据,如何及时使电子地图更新数据,对于这些问题的不同对策,使得导航系统的设计也不尽相同。在有限的处理器速度下,如何提高导航效率,节约内存空间是模块设计的关键。本文所研究的导航功能模块采用了多线程技术方案。

(一)导航多线程技术原理

嵌入式软件开发中使用多线程技术主要是为了线程(Thread)间方便的通信机制。对不同进程(Process)来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。

由于嵌入式导航系统的微处理器能力有限,导航定位过程中遇到的任务比较多,数据量大,实时性高。如果采取传统的顺序执行各模块的控制方式,将会严重影响系统的响应速度,因而在具体的软件实现过程中采用多线程技术,将一些功能模块 (导航定位、路径规划和地图数据库查询) 用线程在后台异步运行,可更好地利用系统资源,提高运行效率。原理框图如图1所示。

(二)导航多线程技术实现

在本课题中根据需要创建了定位导航、路径规划及地图数据库查询等线程。

如图1所示主控线程主要实现界面功能、导航功能中的地图匹配和导航引导模块、浏览功能中的地图浏览模块以及这些模块间的消息派送、接收和处理,同时协调各个工作线程异步运行。

导航定位线程主要完成接收经纬度数据的功能,在导航过程中运行线程,线程处理函数把接收到的经纬度数据实时通过消息发到主线程,由主线程调用地图匹配模块处理。

路径规划线程主要完成在道路网中求解最佳路径的任务,在用户要求提供最佳路径时根据用户的出发地和目的地求出一条最佳路径。在最佳路径求解算法中采用Dijkstra算法。

地图数据库查询线程主要完成对导航地图数据库的查询功能,根据用户要求生成线程,完成相关地理信息查询。

结合多任务多线程同时进行,导航的主控线程控制实现流程如下:1.运行导航定位线程,从通信端口读取定位硬件接收到的当前位置的经纬度坐标值;2.将经纬度坐标转换到屏幕的像素坐标;3.根据当前位置结合导航地图进行匹配处理,把当前位置信息匹配到地图上;4.显示并实时刷新导航地图和当前位置;5.是否求解最佳路径。若是运行Dijkstra算法,否则重复执行4;6.在导航数据库中选择起始和终止位置,运行路径规划线程在地图数据库中解算出最佳路径,并显示到地图上。

本系统导航模块在Windows Mobile5.0平台上运行,并用EVC++4.0开发。在EVC++中,MFC应用程序线程由CWinThread对象表示。EVC++把线程分为两种:用户界面线程和工作者线程。用户界面线程能够提供界面和用户交互,通常用于处理用户输入并处理相应各种事件和消息,而工作者线程主要用来处理程序的后台任务。程序一般不需要直接创建CWinThread对象,通过调用AfxBeginThread () 函数就会自动创建一个CWinThread对象,从而开始一个进程。

系统中主线程通过主控线程中的CThreadAbstract线程类来实现对工作线程的管理。它是一个示范的线程类,通过事件对象来控制线程的开始和结束。

工作线程CThreadAbstract用MFC的CWinThread类实现线程对象成员m_Thread,成员m_hShutdownEvent为线程终止事件,用来终止线程。

Start () 是线程开始函数,它调用AfxBeginThread函数开启以ThreadProc () 为线程处理函数的线程。

Start () 函数代码如下:

线程处理函数接收到线程终止事件激发后,就结束线程。

线程的终止取决于下列事件之一,也就是说下列事件任一个发生都会调用线程结束函数Close () :

(1)主线程函数返回;

(2)主线程及后台进程调用ExitThread () 退出;

(3)异常情况下用线程的句柄调用TerminateThread () 退出;

(4)线程所属的进程被终止;Close函数代码如下:

(三)开发平台实现

嵌入式系统导航模块的基本功能是在移动的环境中为用户提供基于位置的导航服务功能。其主要需求有:1.为用户提供其所需要的服务城市基本信息;2.用户对自己所在区域的地图的浏览,包括对地图的放大、缩小和平移等操作;3.为用户提供实时位置信息并匹配到地图上;4.用户分别输入起始地点与目的地点为其规划一条最佳路径;5.用户查询相关的服务单位、公共交通等信息。

嵌入式开发调试所需环境,除了调试运行的嵌入式操作系统外,还需要与嵌入式操作系统进行通信的工具。将所有上述各种开发调试用的软件与硬件(模拟器)的合集称为嵌入式开发系统。本文在安装有Microsoft Embedded Visual Tools 4.0和Microsoft Pocket PC 2003 SDK的PC机上调试运行。由于系统在调试环境下的仿真器运行,便于系统程序和仿真器之间通信还要安装Microsoft ActiveSync和EmuASConfig, 其中后者是用于前者和仿真器通讯的连接软件,导航模拟如图2所示。

(四)小结

本文提出了在嵌入式导航系统开发中使用多线程技术的设计方案。试验结果表明,该方案能够很好的满足设计的要求,从运行时刻CPU使用记录也可以分析出占用处理器和内存资源十分有限。而且该系统可以根据用户不同的需要,扩展一些外围设备,如GPRS模块,使其功能更加的智能化和多功能化。

参考文献

[1]桑楠.嵌入式系统原理及应用开发技术[M].北京航空航天大学出版社, 2002.

[2]魏忠, 等.嵌入式开发详解[M].电子工业出版社, 2003.

[3]周炎涛.Windows中的多线程编程技术和实现[J].计算机技术与自动化, 2002 (3) .

嵌入式模块 篇6

UDP是User Datagram Protocol的缩写,即用户数据报协议。属于网络协议中的传输层协议。由于UDP协议不需建立连接,具有效率高、速度快和占用资源少等优点,在基于消息通信和实时系统中可以提高系统传输数据的效率。主要的用途是网际名称服务器和简单文件传输协议。UDP具有组播和广播功能,是分发信息的一个理想协议。现在UDP广泛用在多媒体应用中,视频会议,网络点播以及大多数因特网电话软件产品也都运行在UDP之上。

嵌入式系统中使用的TCP/IP协议栈有LWIP、uIP、Linux IP等等,它们具有一定的通用性,但在具体的移植过程中要考虑很多的问题,特别是各个库文件和全局变量相互交叉引用,大大地增加了移植的难度,代码的重用率也不高。

统一建模语言(Unified Modeling Language)简称UML,是一种“通用的可视建模语言,用于说明、可视化、构造并文档化软件体系的体系结构”[1]。它让系统构造者用标准的、易于理解的方式建立能够表达他们想象力的系统蓝图,并提供一种机制以便不同人之间有效地共享交流设计结果[2]。UML是一种面向对象的语言,提供了定义对象和无需修改定义就可以操作对象的方法。数据封装,继承和多态,可重用软件组件等都是面向对象方法的优点。用UML的建模方法,本文给出了面向对象的UDP实现方法。

2 UDP协议实现过程

2.1 理论原理

UDP处于应用层和网络层之间,提供进程到进程的通信服务。当应用进程有报文要通过UDP发送时,它将这个报文和套接字地址传递给UDP。UDP对数据进行处理,加上UDP首部,封装成UDP报文,然后交给网络层IP协议处理。当这个报文到达目的主机后,网络层IP将用户数据报连同发送端和接收端的IP地址一起传给接收端UDP处理。接收端UDP使用校验和对整个用户数据报进行检查。若无差错,则削去UDP首部,将应用数据连同发送端的套接字地址一起交给接收进程[3]。UDP的任务也就是完成UDP报文的封装和拆装的过程。

UDP的报文格式如图1。

UDP数据报的字段有:源端口号(Source Port),是源主机上进程的端口号;目的端口号(Destination Port),是目的主机上进程的端口号;数据长度(Length),它包含UDP数据报的总长度;检验和(Checksum),用来检验UDP数据报是否出错;数据(data octets),具体的报文数据。

去复用方式有两种:使用目的协议端口号的输入数据报选择一个队列,和同时使用源站点和目的站点的协议端口号[4]。本文采用前者,主要考虑在嵌入式系统中不但可以节约存储资源,而且又能有效地进行复用处理,允许应用程序与多个站点同时通信。

2.2 具体实现

根据UML的经典著作Design patterns:elements of reusable object-oriented software[5]提出的方法和原理,本文定义了接口类和控制类。由于UDP处于网络层IP和应用层之间,定义两个接口器。一个是UDP与应用程序进程的接口器UDP-API-er类,负责UDP和应用进程的交互工作。进程到进程的通信,需要有通讯双方的地址信息和数据。在UDP-API-er类中sourceip属性表示本地主机地址,dstip属性表示目的主机地址,srcport属性表示本地端口号,dstport属性表示目的端口号,APIbuffer属性表示应用进程的交给UDP的缓冲区数据。UDP-API-er类还定义了两个操作,一个是应用进程发送UDP报文请求的Udp_usereq()操作,另一个是UDP将处理好的数据报文交给应用进程的ToAPI()操作,如表2所示。

另一个接口类是IP-UDP-Interface类,是UDP和网络层IP的接口,如表3所示,它主要完成两个操作,一个是UDP将封装好的UDP报文数据交给网络IP处理的操作IpOutput(),另一个是ipintr()操作,它将来自网络层IP处理好的数据报传入给UDP进行处理。

由于在数据的传输过程有可能出现错误,规定在发送端和接受端都要进行检验和计算,以确定数据是否出错。而UDP检验和的计算是UDP在接受数据和发送数据的重要环节,因此定义一个检验和计算器Accoutcksum类处理UDP检验和的计算。UDP检验和的计算是对UDP伪首部进行计算,数据可以通过Readpudp()操作获取,没有定义伪首部的成员变量,只定义了供其他类读取检验和的cksum成员如表4所示。(其详细的实现见图4)

对于UDP报文头的添加,根据User Datagram Protocol文档[6]UDP数据报头的格式来定义如表5所示的报文头添加器Appendudphdr类来实现。sourceipn属性是网络中源IP地址,srcportn属性是网络中源端口号,dstipn属性是网络中目的IP地址,dstportn属性是网络中目的端口号,ulenn属性是UDP数据报长度。由于网络字节顺序和本机字节顺序的不同,因此Appendudphdr类定义的属性值与UDP-API-er类定义的属性值是不一样的。该类还定义了设置UDP报文头的内容的Setudphdr()操作,Getudph()操作是从缓冲区中获取封包的数据。

UDP的封包过程如下:应用进程通过UDP-API-er类将数据和套接字地址交给UDP,UDP中的报文头添加器Appendudphdr类通过Getudph()操作从接口类中获取数据信息,并由Setudph()操作设置伪首部报文头字段;检验和计算器通过Readpudp()操作获取伪首部信息并对数据报进行UDP检验和的计算,并将计算结果送给报文头添加器,报文头添加器再设置好相应的字段,并通过IpOutput()交给IP-UDP-Interface类。整个发送UDP数据报的过程如图1所示。

对于数据的传入过程,定义一个检查控制器来完成各种检查操作,它是一个控制类。具体完成如下三个功能,如图2所示:

1)检查检验和是否正确。它读取检验和计算器的计算结果,然后进行判断,如果不正确则丢弃该报文,正确则进一步处理。

2)检查传入的数据报的目的端口号是否正确。如果在进程控制块表PCB-Table中找不到传入的端口号,则表示没有进程要接受它,发ICMP端口号不可达错误报告;如果找到,则该端口号所对应的进程ID为接受进程。

3)检查是否为输入数据报分配输入队列。检查进程控制块表PCB-Table中该栏的队列标识号是否小于零,如果不小于零则已经发配输入队列,将数据报插入队列标识号中的队列中;反之,则还需要PCB-Table为数据报分配输入队列才能入队。

如表6所示,检查控制Checkcontroler类中iscksum用于检验和计算器与检查控制器之间的通信,当检验和计算器已经将计算结果发送过来时为true,反之则为false。操作Getudpbuff()是检查控制器从输入缓冲区中获取所要的数据。Queryport()操作用于从PCB-Table中读取端口号,以检查输入数据报的目的端口号是否正确。ReadQueueID()操作从PCB-Table中读取输入队列标识,以进一步确定下一步操作。

进程启动时,它从系统请求一个端口号,系统把熟知端口号指派给服务器,把短暂端口号指派给客户[7]。在进程控制块表PCB-Table类中有进程ID和端口号port,它们的属性名称是processID和port。state属性记录进程控制块表各项使用的情况,如果为IN-USE则表示该项已经分配给某进程,FREE则表示还未分配使用。queueID为输入队列对应的标号,如果是-1表示还没有为该进程分配输入队列,如表7所示。

输入队列InputQueue类中,insert()操作将数据报放入相应的队列中,addqueue()则表示请求从输入队列中新分配一个队列,然后再将数据报插入该队列,如表8所示。

UDP数据报的接收过程比较复杂。网络层IP通过IP-UDP-Interface类将数据报交给UDP处理,检验和计算器Accoutcksum对其进行检验和计算,检查控制器Checkcontroler查找进程控制块表PCB-Table对其目的端口检查,并根据PCB-Table中的队列分配情况进行相应的操作。整个接收过程如图3所示。

此外,由于UDP校验和的计算是个比较复杂的过程,将它进一步细化命令类,由图4的三个类来实现。Initialpudp类为检验和的计算准备伪首部,Readpudp()操作获取所要的数据,Creatpudp()操作把伪首部成员设置成相应的值,其中将udpcksum设置为零。计算的过程和法则由Accumulationcksum类中的Accumulate()操作来实现,sum和len是计算过程用到的中间变量。最终的结果保存在Finalvalue类的result中。

3 结论

本文用UML对UDP协议的实现作了详细的分析和设计,对内存不太受限的嵌入式系统可以很好的实现。但是,如何处理多继承、虚基类,以满足运行时对RAM的需要是个重要的问题;另外,对存储器的优化,在不影响代码性能的情况下,如何使代码被压缩在较小的存储空间,减小CPU周期总数;如何避免使用库函数,减少通用函数的对存储空间的使用等等一系列优化,仍是一个不断探索的问题。

摘要:将UDP协议划分成粒度更细的功能模块,该文给出了嵌入式系统中UDP协议的UML实现方法,从软件体系结构的角度详细的分析了UDP协议的具体建模过程。面向对象的实现方法,具有软件重用,可扩展性,多态性,函数覆盖与重载,使嵌入式系统的可移植性和可重用性大大提高。

关键词:UML,UDP,面向对象,嵌入式

参考文献

[1]Priestley M.Practical object-oriented design with UML[M].北京:清华大学出版社,2004.

[2]Schmuller J.UML基础、案例与应用[M].北京:人民邮电出版社,2004.

[3]Forouzan B A,Fegan S C.TCP/IP协议族[M].北京:清华大学出版社,2003.

[4]Comer D E,Stevens D L.用TCP/IP进行网际互连.第2卷:设计、实现和内部构成[M].北京:电子工业出版社,1998.

[5]Gamma E,Helm R,Johnson R,et al.Design patterns:elements of reusable object-oriented software[M].北京:China Machine Press,2002.

嵌入式模块 篇7

语音识别是将人类语音信号进行预处理、特征提取, 然后和测试、训练后存储在计算机中的标准模型进行比较, 得出判定和识别结果。当前主流的语音识别技术多基于统计模式, 模型训练过程中算法复杂、运算量大, 需要PC或工控机实现, 在一定程度上制约了语音识别技术的发展。

和基于PC的语音识别系统相比, 嵌入式语音识别系统运算速度、内存容量有限, 但体积小、功耗低、可靠性高、安装灵活, 在智能家电、消费电子等领域具有优势, 逐渐成为了研究的热点。

2、模块整体方案

语音识别包括训练、识别两个阶段, 在这两个阶段中, 都必须对输入的语音信号进行预处理和特征提取。语音识别的基本原理如图1所示。

在训练阶段, 用户多次输入训练语音, 模块预处理后进行特征提取, 得到特征矢量参数, 通过特征建模建立训练语音的参考模型库。在识别阶段, 模块按照一定算法, 将语音的特征矢量参数和模型库中的参考模型进行比较, 相似度最高的输入特征矢量将被判定为识别结果。根据识别对象, 语音识别分为特定人识别和非特定人识别。特定人识别的识别对象是特定用户, 非特定人识别的识别对象是普通用户, 需要采集多人语音进行训练, 才能达到较高的识别率。

现有的嵌入式语音识别系统主要有两种方式, 一种是在嵌入式处理器中直接调用语音开发包, 另一种则采取“嵌入式处理器+语音芯片”的模式。第一种方式计算相对复杂、开发周期长, 第二种方法结构简单, 微处理器计算量低, 可靠性高、开发周期短。本文介绍的语音识别模块以嵌入式微处理器为核心, 外围是非特定人语音识别芯片及相关电路, 模块选用ICRoute公司的LD3320芯片作为语音识别芯片。

3、硬件电路设计

模块硬件电路结构如图2所示, 包括主控制器和语音识别电路。模块正常工作时, 语音识别电路通过并口将处理后的数据传输给主控制器, 主控制器根据语音识别的结果, 向USART发送相应的命令, USART可用来扩展语音合成模块等外围串行设备。

3.1 主控制器芯片

本文介绍的语音识别模块主控制器选用S T公司的STM32F103C8T6芯片, 该芯片基于ARM Cortex-M332位RISC内核, 工作频率可达72MHz, 内置高速存储器, 拥有丰富的增强型I/O端口, 具有高性能、低功耗、低电压等优点, 易于集成和开发。

3.2 语音识别电路

语音识别电路参考了ICRoute发布的LD3320数据手册, 其原理图如图3所示。LD3320内部集成了语音识别优化算法, 无需外接Flash和RAM, 不用事先训练就能实现对非特定人的语音识别, 而且识别准确率较高。

LD3320和STM32F103C8T6通过并行方式相接, 其控制信号和复位信号、中断返回信号I N T B和STM32F103C8T6直接连接, 使用10k上拉电阻提高系统稳定性。在图3中, MBS (12引脚) 是麦克风的偏置, 并接了RC电路, 确保向麦克风提供稳定的电压。

4、系统软件设计

模块软件包括主控单元嵌入式操作系统μC/OS-Ⅱ移植、LD3320语音识别程序、对话管理程序等三部分。

4.1 嵌入式操作系统移植

μC/OS-Ⅱ是一个开源的实时多任务操作系统, 大部分代码采用C语言编写, 执行效率高、占用空间小、可扩展性强, 最小内核仅有2KB。μC/OS-Ⅱ是可剥夺型内核, 任务优先级划分非常重要。从分层化、模块化的设计理念出发, 主控系统任务优先级划分如表1所示。

除OSTaskStat、OSTaskIdle是系统自带任务外, 其他任务由用户创建。App_TaskStart是系统首个任务, 负责初始化时钟和底层设备, 创建事件及其他用户任务, 并对系统状态进行监测。

4.2 语音识别程序设计

本文介绍模块的语音识别程序采用中断方式, 其工作流程为:初始化、写入识别列表、开始识别、响应中断。

(1) 初始化。进行软复位、模式设定、FIFO设定、时钟频率设定。

(2) 写入识别列表。每个识别条目对应1字节的特定编号, 编号可重复, 但数值应小于256。LD3320最多支持50个识别条目, 每个识别条目是小写的汉语拼音, 每2个字 (拼音) 间有一个空格。

(3) 开始识别。图4是开始识别流程, ADC是麦克风输入通道, ADC增益是麦克风音量, 建议在40H-6FH间赋值, 值大表示MIC音量较大, 语音识别启动越敏感, 误判的概率也较高;值小代表MIC音量较小, 启动识别功能需要较大的音量, 但抗干扰性较好。经过对比实验, 本文介绍的模块中设定值为43H。

(4) 响应中断。麦克风采集到声音时, 就会产生中断信号, 中断程序会根据寄存器值分析结果, C5寄存器中的答案是得分最高、最可能正确的答案。

4.2 对话管理程序设计

对话管理单元用来存储等待识别的语音、等待执行的命令, 在主控制器中通过二维数组完成。每进行一次识别, LD3320可设置50个候选识别语句, 它们是10个以内的汉字或79个字节拼音串。本文介绍模块的对话管理数组如表2所示。

待识别的行为编号储存在行为数组中, 和50个语音识别语句对应。模块共有50组指令, 每组指令可包含6个行为, 能并行执行的行为可以归为一步, 在该模式下, 多个行为进行组合可完成复杂任务。

5、验证和测试

为验证语音识别模块的性能和可靠性, 分别在安静的室内环境、噪声较多的医院环境对语音识别模块进行测试。测试中, 对8条语音命令循环10次, 每个环境下对3名非特定人各测试80次, 计算成功识别的比例。

测试结果表明, 模块在室内环境下对非特定人的语音识别率在96%以上, 噪声较多的医院环境下语音识别率在92%左右。通过测试还发现, 在噪声较多的环境中模块的稳定性、实时性均有所降低。

6、结语

本文介绍了基于STM32的嵌入式语音识别模块的设计和实现, 对模块软、硬件组成及原理进行了较为详细的说明。实验表明, 本文介绍的语音识别模块具有稳定性好、识别率高、使用方便等优点, 可应用在智能家电、服务机器人、消费电子等领域, 具有一定的理论价值和应用前景。

摘要:本文介绍了以ARM为核心的嵌入式语音识别模块的设计和实现, 模块选用ST公司32位处理器STM32F103C8T6为核心处理单元, 通过以LD3320芯片为核心的硬件电路实现语音识别, 使用嵌入式操作系统μC/OS-Ⅱ实现任务调度和外围设备管理。

关键词:语音识别,ARM,LD3320

参考文献

[1]张丽娟, 王申良.基于STM32的语音识别系统的设计与实现[J].黑龙江科技信息, 2010 (2) .

[2]陈景帅, 周风余.基于SpeechSDK的机器人语音交互系统设计[J].北京联合大学学报 (自然科学版) , 2010 (1) .

[3]祝常健, 胡维平, 叶佳宁.基于HMM语音识别技术在ARM平台的实现[J].微计算机信息, 2009 (5) .

上一篇:三走下一篇:农产品加工业发展