基于S3C2410微处理器和操作系统实现光电测量仿真检测系统的设计

描述

引言

动基座光电测量平台按载体的不同可分为车载、舰载、机载和星载四种。为了保证测量平台系统的可靠性和测量的准确性,平台在正式放到载体上运行之前需要进行仿真检测。目前的动基座光电测量仿真检测系统大多成本高、人机交互性差,携带不方便,给外场检测带来很多麻烦。本文针对这个问题,利用三星的 ARM9处理器 S3C2410、嵌入式 WinCE操作系统,设计出了一种可视化便携的动基座光电测量仿真检测系统。该系统使用终端控制命令操纵光电平台,通过串口通信实时检测平台的各种性能指标。

S3C2410是三星公司生产的一款基于 ARM920T内核的 32位 RISC微处理器,主频可达 203 MHz。其内部集成大量的外围资源,具有高性能、低功耗、接口丰富的特性。 WinCE是微软开发的一个开放的、可升级的 32位嵌入式实时操作系统,它的图形用户界面相当出色,具有模块化、结构化的特点, WinCE支持各种硬件外围设备、其它设备及网络系统。 WinCE有完善的配套开发软件工具集,使嵌入式系统开发者和应用开发者能够定做各种产品。

1 系统的硬件构成

在经过分析、筛选之后,选择合适的硬件搭建硬件开发环境。光电测量仿真检测系统的硬件环境,主要由以 S3C2410为核心的单片机、带触摸屏的 LCD和 SD卡三部分组成。系统的总体结构图如图 1所示。

检测系统

图1系统整体结构图

虚线以上的部分为光电测量仿真检测系统的硬件环境,其各部分组成与功能如下:

(1)以 S3C2410为核心的单板机。这是整个系统的硬件核心。它带有一个 64M的 SDRAM和一个 64M的 Nand Flash。一个 SD卡插座用来安装数据存储用的 SD卡,一个 USB Host可以接鼠标键盘输入控制设备,一个 USB Device接口用于系统程序的烧写。为了开发时的调试方便,还扩展了一个 10M的以太网接口,主要用于和宿主机通讯﹑调试和下载程序。同时还带有两个 DB9的串口,一个用于设计阶段的调试,另一个用于与下位机上的 PC104通信,从而达到控制光电测量平台的目的。

(2)带触摸屏的 LCD。这是系统的显示控制终端,负责用户控制端的图形界面显示。用户可以在发送面板上根据自己的需求输入控制命令,同时在接收面板会显示下位机传过来的各项性能指标。出于便携化设计的考虑,屏幕只有 3.5寸大小,分辨率为 320*240。

(3)SD卡。它是系统的存储设备,负责存储通信数据。出于系统小型化和便携的考虑,我们选择体积较小的 SD卡作为数据存储介质。

由于篇幅的限制,这里只简要的介绍了一下系统的硬件开发环境。在接下来的部分将详细的阐述其软件开发流程。

2 系统软件开发环境

在进行软件开发之前,必须先建立软件开发环境。本文将使用嵌入式 WinCE操作系统作为软件的运行平台,下面将简要介绍其软件开发环境的建立。

(1)WinCE内核的定制。嵌入式系统由于受硬件资源的限制,在实际开发时往往需要裁减,然后定制出适合自己硬件资源的嵌入式操作系统。根据现有的硬件设备配置,使用 Platform Builder 4.2定制、配置、编译一个 WinCE操作系统内核,这当中重要的是要加入所需设备的驱动程序,最终生成 WinCE内核文件nk.bin和安装 WinCE所需的 Eboot程序。

(2)安装 WinCE到 ARM板上。先通过 JTAG板将 bios烧写到 Nandflash,然后用 USB数据线将 Eboot程序和 WinCE内核 nk.bin下载到 ARM板上,通过 Eboot程序, WinCE将自动被安装。

(3)应用程序的开发。微软专门为 WinCE的软件开发推出了 eMbedded Visual C++ 4.0,利用 eMbedded Visual C++ 4.0提供的工具可以方便的创建、修改和调试应用程序。

3 系统终端程序设计

搭建软件开发环境后,接下来进行终端应用程序的开发。动基座光电测量系统的终端程序主要由发送、接收和串口通信三大模块组成。其中发送模块控制命令和发送显示两部分,接收模块分为接收显示和数据存储两部分。终端系统的主要功能模块框架图如下图 2所示:

检测系统

图2终端程序功能模块框架图

终端程序的具体设计使用 eMbedded Visual C++ 4.0软件,下面简要介绍一下程序设计过程:

3.1发送模块和接收模块

发送和接收模块的设计主要是对窗口的设计。窗口的建立并不复杂,主要是窗口初始化和各种按钮控件的建立。同其他版本的 windows程序一样,WinCE程序也采用了消息驱动机制,用户的各种操作通过消息的形式发送给应用程序,而应用程序时刻等待着消息的到来,一旦发现它的消息队列中有未处理的消息,就获取并分析该消息,应用程序根据消息所包含的内容采取适当的动作来响应用户所作的操作。下面是消息循环函数:

while (GetMessage (&msg, NULL, 0, 0)) {

TranslateMessage (&msg);

DispatchMessage (&msg);

当用户启动程序的时候,消息循环开始,建立各个窗口和按钮控件的消息被发送,应用程序接收到这些消息后,对其进行翻译,然后运行每个消息所对应的函数。

3.2串口通信

串口通信是终端程序设计的难点,也是重点。发送和接收最终都要通过串口来执行。串行端口在 WinCE下属于流接口设备,它是串行设备接口的常规 I/O驱动程序调用和与通信相关的具体函数的结合。要注意的是, WinCE不支持直接对串行端口的寄存器进行编程。由于篇幅有限,用到的函数就不一一介绍了,下面主要介绍用多线程的方法进行串口的读写。

Windows CE不支持重叠 I/O,所以如果在主线程进行大量读写串口操作时,有可能使整个程序陷入缓慢的串口等待中去,因此采用多线程来进行读写串口操作。

程序的主线程用来负责消息的处理,另外还有两个附加线程。读线程负责从串口读回数据,写线程由事件触发,发送控制命令。在程序初始化时创建事件,创建写线程并利用 WaitCommEvent函数阻塞该线程,等待事件触发。然手打开串口,创建读线程,读回数据,进行处理;当按下发送命令后,触发通信事件,解除阻塞的写线程,这时开始发送数据。

4 测试结果

将最后定型的可执行程序烧写到目标板上,然后进行地面仿真试验。该仿真系统使用 +5V的输入电压,由系统终端软件的控制面板发送控制命令,灵活的操纵光电平台的各种运行状态。接收面板上能以 100ms的刷新频率实时显示光电平台的各种性能指标,同时如果选择数据存储的话,还可以将这些数据信息存储在SD卡上。软件的运行界面如下图3所示:

检测系统

图3软件运行界面

这里以光电平台的高低温实验为例,在全程 2个小时中,该仿真系统始终能和光电平台正确通信,并实时显示平台的各项性能指标。测试结果表明该系统具有功能丰富、可靠性高、操作便捷等优点。

5 结语

我们利用 ARM9处理器强大的功能,以及嵌入式 WinCE操作系统的网络、可视化图形界面、多线程编程等提供的便捷高效的底层支持,开发出的嵌入式光电测量仿真检测系统具有功能丰富、可靠性高、界面友好、操作方便等诸多优点。本文介绍了该系统的硬件组成部分和功能,重点阐述了嵌入式软件的开发流程和关键技术串口通信的解决过程,相信可以为其它基于 WinCE嵌入式终端系统的开发提供参考。项目最终能产生的经济效益为20万元。

本文作者创新点:本文采用 ARM&WinCE相结合,多线程串口通讯,设计出了一种便携式、成本低、人机交互性好的动基座光电测量仿真检测系统。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分