基于VXWORKS的串口通信程序设计与实现
基于VxWorks的水下机器人通信系统设计

基于VxWorks的水下机器人通信系统设计贾献强;魏延辉;高延滨;于媛媛【摘要】针对水下机器人(ROV)在深海高噪声干扰环境中工作的特点,设计了一套基于VxWorks实时操作系统的ROV整体通信系统,实现了水下核心控制器对水下分系统快速高效的信息采集和数据分配,水下系统和水面控制器稳定实时的数据交换;硬件方面设计了以CAN总线为基础的水下通信系统,通过FPGA实现了CAN总线和PC104总线之间的时序逻辑转换,软件方面设计了基于TCP/IP协议栈的水面操控台和ROV之间的网络通信方式和水下各系统之间的CAN总线通信方式,着重介绍了基于缓冲队列的网络通信编程;通信系统数据测试实验表明:CAN总线通信和网络通信均具有良好的实时性和可靠性,满足最初的设计需求,而且采用模块化设计,便于维护和移植.【期刊名称】《计算机测量与控制》【年(卷),期】2015(023)010【总页数】4页(P3529-3532)【关键词】水下机器人;VxWorks;CAN;TCP/IP【作者】贾献强;魏延辉;高延滨;于媛媛【作者单位】哈尔滨工程大学自动化学院,哈尔滨 150001;哈尔滨工程大学自动化学院,哈尔滨 150001;哈尔滨工程大学自动化学院,哈尔滨 150001;哈尔滨工程大学自动化学院,哈尔滨 150001【正文语种】中文【中图分类】TP24目前,人类正面临着陆地上各种资源、能源和空间日益短缺的问题,海洋开发技术的发展受到世界各国的极大重视[1]。
水下机器人(remotely operated vehicle,ROV)能够通过遥控,代替或辅助人类在恶劣的海洋环境中作业,因此,ROV对通信系统的安全性和可靠性有着极高的要求[2]。
目前水下机器人通信系统研究现状:中科院沈阳自动化所研究的ROV采用光纤和基于UDP协议栈的网络通信,水下各部分采用以太网转串口的串口服务器形式通信[3],采用光纤通信能够增大传输距离,较强的抗干扰能力。
vxworks bsp基础与实现

Vxworks的代码是下面这个样子,文件众多,分类放在不同的地方,有没有一个类似 批处理的方式解决,那就是makefile。
Make与makefile(3)
在vxworks开发时,我们使用的ide环境,但我也要知道整个工程的编译。建立一个 Bootloader工程时,会在要目录下有如下一个makefile文件:
这个地址起始是可以移动。初始化值为0xff400000
E3000启动时初始地址空间(1)
每个外设的地址如何来?IMMR+1M内偏移 有些控制器有多个片选,如何定义地址?
E3000启动时初始地址空间(2)
E3000启动时初始地址空间(3)
Nor flash
定义了boorom的8m地址范围,最前面还是最后面 代码位置在nor flash中
1、Vxbus模式
2、传统兼容驱动 configNet.h
Vxworks驱动-网卡驱动(2)
MII接口一般应用于MAC层和PHY层之间的以太网数据传输,也可叫数据接口。 (MAC与PHY间的管理接口一般是MDIO).常用的有MII、RMII、SMII、SSMII、SSSMII、 GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等
我们可以看到,当我们执行build时候,比如我们我们执行make bootloader.bin时, Bootloader.bin我们称之为目标,也就是说我们编译链接的最终就是生成这个镜像。 第一幅图的最终结果是cd bsp目录,执行make bootloader.bin,那个看下面bsp目录 Makefile中的一段文字:
汇编相关问题(3)寻址方式
Mlc-ez_q基于嵌入式操作系统VxWorks的多任务并发程序设计

|_~吾尝终日而思矣,不如须臾之所学也;吾尝而望矣,不如登高之博见也。
--《荀子·劝学》基于嵌入式操作系统VxWorks的多任务并发程序设计(1)――基本概念02月 13th, 2006 by 宋宝华作者:宋宝华 e-mail:21cnbao@ 出处:软件报(转载请务必注明作者与出处)1引言嵌入式系统定义为:嵌入到对象体系中的专用计算机系统。
“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素,对象系统则是指嵌入式系统所嵌入的宿主系统。
目前,随着高端消费类电子产品(如PDA、手机、智能家电)的普及,嵌入式计算机系统获得了相当广泛的应用。
操作系统在嵌入式软件体系中占据着重要低位,学习和掌握相关的知识是一名嵌入式系统研发人员的必须。
1.1本文的读者对象与写作目的本文针对的读者对象为入门级的嵌入式系统软件开发人员以及其他对嵌入式操作系统感兴趣的朋友,顺利阅读本文需要读者具备的基本知识能力为:(1)熟练的C语言程序设计能力;(2)操作系统的基本知识。
如果读者具备在Windows平台下进行多线程程序设计或者其他嵌入式操作系统本台下进行多任务程序设计的经验,将对阅读本文有很大的帮助。
本文虽然以VxWorks为介绍的主体对象,但是其中所论述的概念和方法并不局限于VxWorks操作系统本身。
它们也同样适用于其它嵌入式操作系统,如WinCE、嵌入式Linux、ucos等,所谓“万变不离其宗”。
笔者力求能以通俗和形象的语言进行论述,但是由于水平有限,文中难免存在错误和纰漏,诚盼读者朋友指正。
1.2 为什么以VxWorks为写作对象之所以选择VxWorks操作系统为本文的写作对象,是因为:(1)VxWorks具备清晰的多任务并发控制及任务间通信的成熟机制;(2)VxWorks有广泛的使用基础,国内外分布着大量的VxWorks程序员;(3)VxWorks简单易学,便于我们集中目标讲解多任务控制程序本身。
xmodem协议介绍及VxWorks下的应用

/*最大重试次数*/
#define MAX_RETRY
10
/*最大包序列宏定义*/
#define MAX_SEQNO
255Biblioteka /*等待包头的时间 10S*/
#define WAIT_SOH_TIME 10
/*发送 C 字符的次数*/
#define SEND_C_TIMES
3
/*校验和方式*/
#define CHECK_CRC
发送端发现最后一个数据包不足 128 字节时,填充 CTRL+Z (0x1a)。发送端发送完毕后
发送 EOT 结束文件传输,或者发现接收端一直不响应或对同一数据包响应 NAK 超过规定次
数(一般 10 次)时发送 CAN 取消传输。接收端接收到 EOT 或 CAN 时结束传输流程。
下面以校验和 checksum 的数据包传输流程说明 xmodem 协议的原理。接收端启动连接后,
xmodem 协议介绍及 VxWorks 下的应用
最初,XMODEM 协议是一种基于调制解调器直接拨号通讯的文件传输协议,用来支持两台 计 算 机 之 间 的 文 件 传 输 。由于其简单可靠、实现方便的特性,现在已经广泛应用于嵌入式设备 中。实现 xmodem 只需要微处理器带有串口控制器就行了,一般的 8 位单片机也能进行文件 传输。
/*CRC 计算*/ U16 CRC16_CCITT (U8 *ptr, S32 count) {
U16 usCrc; U8 * pTmp; U16 i;
usCrc = 0; pTmp = ptr; while (--count >= 0) {
usCrc = usCrc ^ ((U16)( *pTmp++ ) << 8); for ( i = 0; i < 8; ++i) {
gxworks3编程实例

gxworks3编程实例摘要:一、引言二、gxworks3 编程基础1.gxworks3 概述2.编程环境搭建3.基本语法与数据类型三、gxworks3 编程实例1.实例一:点亮一个LED 灯2.实例二:实现一个简单的串口通信程序3.实例三:控制伺服电机旋转四、gxworks3 编程技巧与优化1.提高程序性能2.错误处理与调试3.模块化编程五、总结与展望正文:一、引言gxworks3 是一款基于Keil C51 的嵌入式软件开发平台,广泛应用于各种工业控制领域。
本文将介绍gxworks3 编程的基础知识和实例,帮助读者快速掌握gxworks3 编程。
二、gxworks3 编程基础1.gxworks3 概述gxworks3 是北京航空航天大学研制的一款嵌入式软件开发平台,支持C 语言编程,具有丰富的硬件资源,适用于各种嵌入式系统开发。
2.编程环境搭建首先,需要安装Keil C51 编译器,然后下载并安装gxworks3 软件。
接下来,创建一个新项目,配置好系统时钟和目标板,即可开始编程。
3.基本语法与数据类型gxworks3 编程语言基本语法与C 语言相同。
主要数据类型包括整型(byte, word, dword)、浮点型(float, double)和字符型(char)。
此外,还支持位字段(bitfield)和联合体(union)等复合数据类型。
三、gxworks3 编程实例1.实例一:点亮一个LED 灯通过编写一个简单的程序,控制P1 口的LED 灯点亮。
首先,初始化P1 口,然后通过循环点亮和熄灭LED 灯。
2.实例二:实现一个简单的串口通信程序创建一个基于UART0 的串口通信程序,实现两个gxworks3 设备之间的简单通信。
首先配置UART0 的相关参数,如波特率、数据位、停止位等,然后通过循环发送和接收数据。
3.实例三:控制伺服电机旋转通过编写一个程序,控制伺服电机根据PWM 信号的占空比旋转。
29VxWorks移植实验

实验29 VxWorks移植实验一实验原理1 VxWorks内核的特点及BSP简介1.1 VxWorks内核的特点操作系统的实时性是一个相对的概念,一般指的是在相同的环境下、使用相同的输入,会在规定的时间内得到正确的响应。
一个实时操作系统内核需要满足许多特定的实时环境所提出的基本要求,这些内容包括:(1) 多任务由于真实世界的事件的异步性,能够运行许多并发进程或任务是很重要的。
多任务提供了一个较好的对真实世界的模拟,因为它允许对应于许多外部事件的多线程“同时”执行。
系统内核通过适当的策略分配CPU给这些任务来获得并发性。
(2) 抢占调度真实世界的事件具有继承的优先级,在分配CPU的时候要注意到这些优先级。
基于优先级的抢占调度,任务都被指定了优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务被分配CPU资源。
换句话说,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务。
(3) 任务间的通讯与同步在一个实时系统中,可能有许多任务作为应用的一部分执行。
系统必须提供这些任务间的快速且功能强大的通信机制,内核也要提供同步机制,来有效地共享不可抢占的资源或临界资源。
(4) 任务与中断之间的通信尽管真实世界的事件通常作为中断方式到来,但为了提供有效的排队、优先级和减少中断延时,我们通常希望在任务级处理相应的工作。
所以需要在任务级和中断级之间进行通信,完成事件的传递。
VxWorks就是一个基于抢占式的实时操作系统,已经被广泛的应用到许多行业,VxWorks 操作系统具有很多优点,比如:(1)高度的可靠性操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。
而稳定、可靠一直是VxWorks的一个突出优点。
自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。
(2)优秀的实时性实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。
vxworks使用过程中的100个疑问与解答
vxworks使用过程中的100个疑问与解答1. VxWorks是什么?VxWorks是一种实时操作系统(RTOS),由美国Wind River公司开发,适用于嵌入式系统。
2. VxWorks有哪些特点?VxWorks具有高度可靠性、实时性、可移植性和可扩展性等特点。
3.如何安装VxWorks?安装VxWorks需要下载安装包,然后按照安装指南进行安装。
4.如何创建VxWorks任务?可以使用taskSpawn函数来创建任务,指定任务的入口函数、优先级等参数。
5. VxWorks如何进行任务间通信?任务间可以使用消息队列、信号量、共享内存等机制进行通信。
6.如何调试VxWorks程序?可以使用Wind River公司的调试工具Wind River Workbench进行调试。
7. VxWorks支持哪些开发语言?VxWorks主要支持C和C++开发,也可以使用汇编语言和Java等。
8.如何加载和运行VxWorks程序?VxWorks程序可以通过TFTP、FTP等网络协议加载到目标设备上,然后使用命令运行。
9. VxWorks是否支持多任务?是的,VxWorks支持多个任务的同时运行,并通过任务调度器进行任务切换。
10.如何实现任务间的同步?可以使用信号量、事件标志等机制实现任务间的同步。
11. VxWorks中如何实现中断处理?VxWorks提供了中断服务例程(ISR)和处理器驱动程序(DPC)来处理中断。
12.如何列出VxWorks系统中的任务?可使用taskShow命令列出系统中所有任务的详细信息。
13.如何获取任务的优先级?可以使用taskPriorityGet命令获取任务的优先级。
14.如何设置任务的优先级?可以使用taskPrioritySet命令设置任务的优先级。
15.如何控制任务的时间片轮转?可以使用taskDelay命令来控制任务的时间片轮转。
16.如何查看VxWorks系统的中断信息?可以使用intShow命令来查看系统中的中断信息。
手把手教你用VB实现Modbus-RTU串行通讯工程实例
用VB实现Modbus RTU串行通讯在一些应用中可能需要使用诸如VB来进行上位机监控程序的开发,而Modbus协议是这类应用中首选的通讯协议;Modbus协议以其简单易用,在工业领域里已广泛的为其他第三方设备所支持。
这里对VB和Twi do PLC间的通讯进行说明。
对于大部分应用,Twido PLC作为从站,它不需要编制通讯程序,只要把通讯口的参数设置好即可,例如下图表示此Twido通过编程口和上位机连接,其站号地址为2;波特率、数据位、校验、停止位和上位机设置保持一致。
VB程序通过利用MSComm控件很容易就能够实现。
1.通讯口初始化:MSComm1.Settings = "9600,n,8,1"mPort = 1MSComm1.SThreshold = 0If Not MSComm1.PortOpen Then MSComm1.PortOpen = True2.CRC校验码的计算方法,如以下函数,可以得到字节数组变量cmdstring指向的字符串的CRC校验码。
Function crc16_1(ByRef cmdstring() As Byte, ByVal j As Integer)Dim data As IntegerDim i As IntegerAddressreg_crc = &HFFFFFor i = 0 To jAddressreg_crc = Addressreg_crc Xor cmdstring(i)For j = 0 To 7data = Addressreg_crc And &H1If data ThenAddressreg_crc = Int(Addressreg_crc / 2)Addressreg_crc = Addressreg_crc And &H7FFFAddressreg_crc = Addressreg_crc Xor &HA001ElseAddressreg_crc = Addressreg_crc / 2Addressreg_crc = Addressreg_crc And &H7FFFEnd IfNext jNext iIf Addressreg_crc < 0 ThenAddressreg_crc = Addressreg_crc - &HFFFF0000End IfHiByte = Addressreg_crc And &HFFLoByte = (Addressreg_crc And &HFF00) / &H100End Function3.读多个字的命令(本例是从2号站读%MW10起始的4个字):Dim SendStr(7) As ByteDim RcvStr() As ByteSendStr(0) = 2 ,从站号是2SendStr(1) = &H3 ,读多个字的命令代码SendStr(2) = 0 ,起始地址高字节SendStr(3) = 10,起始地址低字节SendStr(4) = &H0,数据长度高字节SendStr(5) = 4 ,数据长度低字节Call crc16(SendStr(), 5) ,CRC计算SendStr(6) = HiByteSendStr(7) = LoByte,读命令发送后,当接收5 + SendStr(5) * 2 个字节时产生中断CmdLenth = 5 + SendStr(5) * 2MSComm1.RThreshold = CmdLenthMSComm1.Output = SendStr ,发送命令4.写多个字的命令(本例是写2号站%MW20起始的3个字):Dim WriteStr() As Bytek = 6 ,写6个字节ReDim WriteStr(8 + k)WriteStr(0) = 2 ,从站号是2WriteStr(1) = &H10 ,写多个字的命令代码WriteStr(2) = 0 ,起始地址高字节WriteStr(3) = 20 ,起始地址低字节WriteStr(4) = &H0 ,数据长度高字节<字的个数>WriteStr(5) = k / 2 ,数据长度低字节<字的个数>WriteStr(6) = k ,数据长度<字节的个数> WriteStr(7) = &H12,写的第1个字的高字节WriteStr(8) = &H34,写的第1个字的低字节WriteStr(9) = &H56,写的第2个字的高字节WriteStr(10) = &H78,写的第2个字的低字节WriteStr(11) = &H9A,写的第3个字的高字节WriteStr(12) = &HBC,写的第3个字的低字节Call crc16(WriteStr(), 6 + k)WriteStr(9 + (k / 2 - 1) * 2) = HiByte WriteStr(10 + (k / 2 - 1) * 2) = LoByteMSComm1.InBufferCount = 0MSComm1.Output = WriteStr,写命令发送后,当接收到8个字节时中断CmdLenth = 8MSComm1.RThreshold = CmdLenth5.通讯事件中断产生时的数据处理:Private Sub MSComm1_OnComm()Dim inx() As ByteSelect Case mEventCase comEvReceive ,判断为接收事件MSComm1.InputLen = CmdLenth ,接收数据的长度inx = MSComm1.Input ,接收数据MSComm1.InBufferCount = 0For k = 3 To CmdLenth - 3tmpstr = tmpstr & "/" & Hex(inx(k))NextText1.Text = tmpstr ,以十六进制显示所接收长度的数据BeepEnd SelectEnd Sub。
基于VxWorks的在线编程技术
编 的 务 程 服 端
系统 中获取 新代 码 并 对 自己重 新 编 程 , 即可 用 程 序 来 改变 程序 。IP技 术 实 现 方 法 通 常 是 将 F A H存 储 A LS 器 映射 为两 个或 两 个 以 上存 储 体 , 当运 行 一 个 存 储体 上 的用 户程序 时 , 以对 另一 个存 储体 进行 重新 编程 , 可 之后将 控制 从一个 存储 体转 向另一个 。
B oL a e 中实 现 的。为 了提 高 在 线 编 程 系统 的编 程 otod r 速 度 和稳定 性 , 本系 统采 用 的通 讯端 口为 以太 网接 口,
IP在线 编程方 法 , A 很好 地解 决 了 V Wok 代码 开发 和 x rs 维护 中 , P在线 编程传输速度 慢 、 I A 稳定性差 的问题 。
编程 。基 于 T P I 网 络 协 议 的 编 程 系 统 的 结 构 如 C /P
图 1 所示 。
器 件可 以编程 写 入最 终 用 户 代码 , 不 需要 从 电路 板 而
上 取下器 件 , 已经 编 程 的 器 件 也 可 以 用 IP方 式 擦 除 S
或再 编程 。 I P I . p l a o rga mig 指 MC A (n A pi t n Porm n ) ci U可 以在
在线编程技术分为两种 : 一种是 IP 另一种是 IP S, A。 IP(n S s m Pormm n ) 电路 板 上 的 空 白 S I . yt rga ig 指 e
时 传统 的 串 口 IP在 线编 程 系统 在 B o odr中予 以 A ot ae L 保 留 , 在 操作 系统 损 坏 的 情况 下也 可 以完 成在 线 以便
基 于T PI的 IP ̄线 C/ P A,
虚拟串口管理软件的设计与应用
Microcomputer Applications V ol.27,No.4,2011技术交流微型电脑应用2011年第27卷第4期55文章编号:1007-757X(2011)04-0062-02虚拟串口管理软件的设计与应用姜元建、王斌、徐伟摘要:针对电力线载波设备的生产、安装、维护需求,提出应用虚拟串口管理软件实现对现场载波设备的通信测试、控制管理。
虚拟串口管理软件负责虚拟串口设备的配置管理、串口数据帧与网络数据帧的转换工作,给出了虚拟串口管理软件的程序结构和实现方法。
关键词:虚拟串口;管理;数据转换中图分类号:TP311文献标志码:A0引言在变电站电力线载波设备的生产、安装、维护工作中,需要对现场的载波设备进行通信测试、控制管理,系统结构如图1所示:图1系统结构图通信管理装置是基于ARM9和Vxworks 操作系统开发的控制设备,每个设备具有两块网卡、12路串口,通过这些串口与载波设备进行数据通信,实现载波设备监测,同时还具备数据传输功能:将接收的网络数据帧转为串口数据帧发送给载波设备或将载波设备发送的串口数据帧转为网络数据帧。
在管理计算机(PC)上需要虚拟出这些串口,并能把控制信息通过串口-网络-串口的方式发送到载波设备,同时也能把载波设备的数据通过串口-网络-串口的方式传送到管理计算机。
本文讨论了管理计算机上虚拟串口管理软件的程序架构和实现方法。
1虚拟串口管理软件的架构虚拟串口管理软件包括虚拟串口驱动程序和虚拟串口管理器。
如图2所示,虚拟串口驱动程序是一个标准的设备驱动程序,它的作用是实现虚拟串口设备的创建/卸载、IO控制码的处理、读写等IRP 派遣函数。
该驱动程序的系统IO调用接口以及读写控制完全遵循标准的串口驱动程序,串口应用程序对虚拟串口的使用与普通串口没有任何区别。
虚拟串口管理器的作用是在系统原有的普通串口之外为系统添加或删除虚拟串口设备,根据虚拟串口的配置信息采用TCP或UDP 协议实现与远方通信管理装置的网络通信,具备网络链路心跳检测、链路断开自动重连等功能,负责实现虚拟串口驱动程序和网络之间的联系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一一-一2005川清地区自动化与电控技术学术年会 Consoled PWM Inveter for CVCF Operation团. IEEE Trees. on Power Eleos.1994,9(5):473一BO[61李玉梅,马伟明.无差拍控制在申联电力有源滤波器中的应用电 力系统自动化,2001, 25 (8):28-30.[71彭晓涛,程时杰等,差拍控制在有源电力逮波器中的应用,继电器, 2004,32(8)0[81郑A琳,郝荣泰,电力有Rd波器的关lp指令分区控制研究,北方 交通大学学报,2003, 27(2),191郑琼林,郝荣泰,关联指令分区控制脉宽调制技术,中国电机工程 学报,2000,20(6)a[101王立乔,王长永张仲超组合变流器相移SVM技术的研究也力 系统自动化,2002, 26(18).[11]李建林,张仲超组合变流器载波相移空问向量调制〔CPS-SVM)技 术高电压技术,2003,29(1):18-20.[12]粟时平,周赛,刘桂英基于人工神经网络的有源电力滤波器控制 方法的研究.电气开关2001,5[13]刘桂英,粟时平t三相四线并联有源电力滤波器及其神经网络控 制湖南电力,2003,23(3)
[14}钟庆,吴捷等墓于DSP的有源电力滤波器的实现.继电器, 2004,32(10:37-40.[15]王勇,吕征宇等.基于DSP的有源电力a波器数字控制系统.高电 压技术,2004,30(2):17-19.[161田大强,蒋平,赵剑峰新型DSP用于并联型有源电力滤波器的计 算与控制电力科学与工程,2003,1:14-17.
作者简介张海男,生于1981年男,硕士研究生,主要从事多电平有深电力浦波器的研究。万益杰男,生于1981年,硕士研究生,主要从事多电平有汉电力滤波器的研究。苗鹅男,生于1978年.硕士研究生,主要从事有派电力逮波器的研究。徐明男,生于1983年,硕士研究生,主要研究方向为单周控制技术在有派电力浦波器中的应用。周林男,生于1961年,博士,教授,硕士生导师,主要从事FACTS及电网谐波治理方面的研究
基于Vxworks的串口通信程序设计与实现张军王帆(中国空气动力研究与发展中心) 摘要结合嵌入式实时操作系统V.Works实现风洞侧控系统的实际应用、以其中的申口通信为例,讨论了在V.WOrk。下实现串口通信的关键技术,给出了基本原理、环境配里和程序示例。 关钮词VxWorks实时操作系统嵌入式操作系统串行通信
0前言 目前市场上比较著名的实时操作系统有:VxWorks IPSOS,Nucleus,QNX,VRTX,Windows CE,Palm OS,Lyny,OS等。其中,VxWork,是一个具有微内核、可裁剪的高性能强实时操作系统,在实时操作系统市场上处于领先地位。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、弹道制导、飞机导航等。在美国的F-16战斗机、B-2隐形轰炸机和爱国者导弹上,甚至火星探测器上都使用了VxWorks实时操作系统。在嵌人式实时操作系统中使用串口通信,不仅可扩展嵌人式设备通信能力,而且可扩大其应用范围。
1 VxWorks简介 VxWork,是由wRS(wind River Systems, Inc.)公司开发的一套具有微内核、高性能、可伸缩的实时操作系统,支持广泛的网络通信协议,并能够根据用户的需求进行组合、其开放式的结构和对工业标准的支持使开发者只需做最少的工作即可设计出有效的适合于不同用户要求的系统。除子胜能出众的操作系统之外,wRS公司还提供了优秀的实时操作系统开发工具Tornado, Tornado由三个高度集成的部分组成:Tornado工具,一整套强有力的交叉开发工具;VxWorks运行系统,是运行在目标机上的高性能、可裁剪的实时操作系统;连接目标机和宿主机的通信选项,加以太网、串行线路、在线仿真等。Tornado能够支持Windows,Unix等流行的工作平台和POwerPC,X86,ARM等几乎所有的目标处理器,所提供
的工具可用于所有目标机,并具有两种调试模式(系统模式和任务模式)。除了基本的功能和开发工具外,Tornado还具有先进的系列网络产品,极大地扩展了Tomad。的
2005年8月22-27日四川・成都1792005川渝地区自动化与电控技术学术年会网络特性,并增强了嵌人式微处理器的网络特性。2串口通信基本原理 串口在嵌人式系统当中是一类重要的数据通信接口,其本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 串口通信的优点是开发简单,在传输数据量不大、要求速度不高而传输距离较大的通信场合得到广泛应用。 在VxWork:中,将UO系统设计成为任何类型的设备提供一个简单、统一、独立于设备的接口,任何对于串口的操作都可以视为对一个文件的操作,而不必了解串口设备或程序驱动实现的细节。在串口通信软件的设计中,当串口初始化完成后,在使用之前利用openo打开相应串口,然后进行配置。 VxWork,提供终端和伪终端设备驱动。场驱动针对实终端;pty针对仿真终端的程序。Tty设备有两种操作模式:mw模式和line模式。在raw模式下,每个刚从设备输人的字符对读者都是有效的;在line模式下所有输人字符被存储,直到NEWLINE字符输人。设备选项字使用带FIOSETOPTIONS功能的ioctlo程序来设置。 配置完成后,依据串口打开时的读写标志,调用函数。teo,readp对串口进行只读操作、只写操作或同时进行读写操作。 为提高数据接收的实时性,可采用中断方式,利用VxWork:提供的select函数的事件触发机制,将读串口的任务阻塞使其一直等待数据,当有数据来到的时候该任务会立刻自动响应,提高系统的实时性。
定义通信方式为串口联结*l #define WDBes TTYee CHANNEL 1 /*通道号*1 #define WDB_TTY_BAUD 9600 /*串口速率,可设置
至38400*/ #define WDB-TTY-DEV--NAME "tyCo/1" #define CONSOLE TTY 0 #define DEFAULT_BOOT_LINE "fd=0,0 (0,0)host-name:/fd0/Works \ h二主机 ip e=目标机ip u=主机上的登录用户名” (2)在Tomad。集成环境中执行菜单命令Project >Make PC486 > Common Targets > clean删除以前生成的文件,执行菜单命令Project > Make PC486 > Boot Rom Tar-gets>bootrom-uncmp编译链接生成bootrout_uncmp;再选择VxWorks Target,编译生成vxworks; (3)拷贝\\Tomado\target\config\pc486\bootmm unemp至\\\Tomado\host\bin下 (4)重命名文件bootrom_uncmp为hootrom; (5)准备一张已格式化的空盘插人软驱; (6)在目录\\Tomado\host\bin下执行命令mkboot a:bootrom; (7)拷贝\\Tornado\target\config\pc486\VxWork:至软盘; (8)将系统制作盘插人目标机软!W,,加电启动目标机即载人VxWorkst系统。
3环境配置 在本实时应用系统中采用486机作为目标机,串口通信时目标机VxWorks系统启动盘的制作步骤: (1)修改通用配置文件\\Tornado\target\con-fig\pc486\config.h。在。onfig.h文件中加人以下宏定义。 #define INCLUDEes WDB #define INCLUDE WDB TY TEST #undef WDB COMM TYPE #define WDB COMMes TYPE WDB_ COMM SERIAL /*
4程序示例4.1在程序中加入下列头文件 #include <}Works.h> #include "strLib.h" #include <string上> #include <sioLib.h> #include <ioLib.h> #include <stdio.h> #include <ioctl.h> #include <selectLib.h> #include "typeswxTypesOld.h"4.2打开串口
int open-comI (void) //打开串口1函数 (int sfd; //串口设备文件描述符 sfd =open (" / tyCo / 0",0_RDWR,0);//打开串口并返回串口设备文件描述符 if (sfd ==ERROR) //如果不能打开串口1则打印出错信息
1802005年8月22-27日四川・成都