引言

动基座光电测量平台按载体的不同可分为车载、舰载、机载和星载四种。为了保证测量平台系统的可靠性和测量的准确性,平台在正式放到载体上运行之前需要进行仿真检测。目前的动基座光电测量仿真检测系统大多成本高、人机交互性差,携带不方便,给外场检测带来很多麻烦。本文针对这个问题,利用三星的 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。这是系统的显示控制终端,负责用户控制端的图形界面显示。用户可以在发送面板上根据自己的需求输入控制命令,同时在接收面板会显示下位机传过来的各项性能指标。出于便携化设计的考虑,屏幕只有 寸大小,分辨率为 320*240。

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

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

2 系统软件开发环境

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

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

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

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

3 系统终端程序设计

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

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

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

发送模块和接收模块

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

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

TranslateMessage (&msg);

DispatchMessage (&msg);

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

串口通信

串口通信是终端程序设计的难点,也是重点。发送和接收最终都要通过串口来执行。串行端口在 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精彩内容

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉

操作系统读写者问题实验报告_基于S3C2410微处理器和操作系统实现光电测量仿真检测系统的设计...相关推荐

  1. 操作系统读写者问题实验报告_什么是操作系统?

    什么是操作系统? 为什么说C / C++ 更底层 ? 电脑里只有一个CPU, 多线程是怎么实现的 ? 一些简单口胡, 也算对本学期的学习做一个总结 一言蔽之, 操作系统是管理下层硬件, 为上层软件提供 ...

  2. 操作系统读写者问题实验报告_操作系统知识点总结

    用户态和内核态 用户态和内核态的区别? 明白这两个概念之前,我们得知道用户空间和内核空间. 用户空间:指的就是用户可以操作和访问的空间,这个空间通常存放我们用户自己写的数据等. 内核空间:是系统内核来 ...

  3. 操作系统读写者问题实验报告_备战秋招——操作系统(2)

    请你讲述一下互斥锁(mutex)机制,以及互斥锁和读写锁的区别 参考回答: 1.互斥锁和读写锁区别: 互斥锁:mutex,用于保证在任何时刻,都只能有一个线程访问该对象.当获取锁操作失败时,线程会进入 ...

  4. 操作系统读写者问题实验报告_操作系统 37

    这里是操作系统自学笔记第37节 Hard Disk Drives 磁盘的最小单位是扇区(sector),每个sector 512 byte,是磁盘原子操作的单位:扇区编号0-n-1是address s ...

  5. Java简单记事本设计实验报告_基于JAVA的记事本设计报告.doc

    基于JAVA的记事本设计报告 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 11 页 XX学校计算机系综合性实验 实 验 报 告 课程名称 Java程序设计 实验学期 至 学年 第 学期 ...

  6. java框架ssh实验报告_基于SSH的实验报告提交系统

    [实例简介] 基于SSH的实验报告提交的开发系统,可以用于毕业设计和平时的学习中,适合学习javaweb三大框架的同学学习. [实例截图] [核心代码] 364e55cd-edbc-4bfc-a29b ...

  7. logisim 快速加法器设计实验报告_基于Logisim平台的《计算机组成原理》实验教学探究...

    邵雄凯 杨习伟 摘要:在分析现有<计算机组成原理>实验教学现状的基础上,针对软件类专业学生硬件基础知识薄弱.一般地方高校硬件设备不足等实际情况,提出基于Logisim平台的<计算机组 ...

  8. c语言 判断一个图是否全连通_基于云平台的全链路大规模网络连通性检测系统详解...

    虚拟网络排查问题困难,传统的traceroute等工具很难起到太大作用,大部分情况下都需要到宿主机.混合云网关上抓包来troubleshooting,耗时又费力.有些场景中包的传送路径比较长(如跨域. ...

  9. 基于单片机心率脉搏心率血压体温血氧检测系统的设计与实现

    功能介绍 本次设计通过32系列单片机STM32进行数据处理,配置引脚和JFC103传感器以及温度传感器进行数据通信.采用防水DS18B20进行腋下温度采集,通过单总线方式进行数据传输.心率血氧血压模块 ...

最新文章

  1. jedis使用_网易架构师心得:Springboot下使用redis踩过的坑
  2. java reference_java中的4种reference的差别和使用场景(含理论、代码和执行结果)...
  3. c++ vector 先进先出_C++ STL Vector(容器)学习
  4. CGContextRef学习笔记
  5. 利用dynamic简化数据库的访问
  6. ORB_SLAM安装问题error: ‘std::chrono::monotonic_clock’ has not been declared
  7. 中国存储器行业应用趋势与投资机遇研究报告2022版
  8. USB鼠标失灵的解决办法
  9. dealloc不调用的情况
  10. 论文致谢走红后,中科院博士回信了!
  11. PLSQL 设置日期格式为年月日不显示时分秒
  12. 如何在windows server 2008上配置NLB群集
  13. Python爬虫实战—笔趣看小说网
  14. Java验证图片格式
  15. 程序员小助手 | Emacs,最强编辑器,没有之一
  16. Java如何打印输出九九乘法表
  17. 关于“.”与“->”使用的区别
  18. 3D建模软件功能解析之Maya篇
  19. [Java8新特性]Collectors源码阅读-1 toCollections和joining等
  20. 打印机用计算机名慢,“电脑连上打印机就超级慢”的解决方案

热门文章

  1. Linux C : Makefile 的编写和示例
  2. python打包成exe_【Python】使用pyinstaller打包成exe文件时可以显示图片的方法
  3. 美国计算机科学和计算机工程专业的好大学,2021USNews美国计算机工程专业排名一览表...
  4. word中链接到目标后返回快捷键
  5. java int64如何定义_java – 具有两个int属性的自定义类的hashCode是什么?
  6. python 日期 间隔_Python datetime time 等时间 日期 之间的计算和相互转化
  7. 知识储备—01-进程,线程,多线程相关总结
  8. [Python web开发] Web框架开发基础 (一)
  9. TSP - 状态压缩dp
  10. springMVC+Spring+mybatis整合配置版与注解版