实时操作系统VxWorks下多串口通讯设计
嵌入式VxWorks实时操作系统的多串口通信的实现

嵌入式VxWorks实时操作系统的多串口通信的实现【摘要】VxWorks是一种由WindRiver公司开发的实时操作系统,可通过I/O 控制函数Ioctl()对串口参数进行选择,通过Select宏实现对串口数据读写与监测。
通过配置头文件中相应的配置宏来实现该系统的串口通信。
并以DOS平台为例,介绍基于DOS平台的嵌入式VxWorks系统的多串口通信的实现方式以及串口通信的编程方法。
【关键词】串口通信;VxWorks;内核组件;实时操作系统1.引言在多个设备互连的实时信息控制系统中,常常涉及主控系统与多个设备之间的信息通讯,设备间通讯方式有多种,主要包括串口通讯、并口通讯、网络通讯、CAN总线通讯、429总线通讯和1533B总线通讯等。
在VxWorks系统设计应用中,串口是一类非常重要的数据通信接口,是嵌入式设备应用最为广泛的一种通信方式,在嵌入式实时操作系统中实现串口通信,可大大提高系统的应用范围,提高系统获取信息的能力。
因此,在VxWorks系统下串行通信程序首先必须清晰地了解和认识VxWorks系统下串口的层次结构。
2.VxWorks实时操作系统串口组件VxWorks[1、2]实时操作系统具有良好的可裁剪能力,可裁剪的组件超过80个,用户可以通过交叉开发环境根据需求进行方便的配置。
针对不同的功能要求,选择所需要的内核组件,在VxWorks实时操作系统微内核编译阶段,加载相应得支持组件,卸载不需要的功能组件。
通过配置VxWorks实时操作系统微内核,可以使系统运行所需的资源有效减少。
VxWorks的可裁剪性能方便地在全局配置头文件configALL.h和BSP。
配置头文件config.h中通过包括(#define XXX)或去除(#undefXXX)配置宏来实现[4]。
#define INCLUDE_TTY_DEV //配置串口驱动程序#define NUM_TTY 2 //配置串口数目串口配置的具体步骤如下:1)在内核配置文件configALL.h或config.h中加入如下串口配置宏定义:#define INCLUDE_TTY_DEV //配置串口驱动程序#define NUM_TTY 2 //配置串口数目2)编译内核VxWorks实时操作系统微内核驱动时将在根任务usrRoot()中调用串口设备驱动程序初始化函数ttyDrv()以及创建VxWorks系统串口设备函数ttyDevCreat(),建立能够被VxWorks系统识别的串口设备文件;3)这样通过以上两个步骤,用户既可在自己编写的应用程序中通过open(),read(),write(),close()等函数调用串口设备文件来实现对串口设备的控制。
基于VxWorks的双485口管理系统设计

基于VxWorks的双485口管理系统设计摘要:vxworks嵌入式操作系统具有高效的实时任务管理与调度、任务的同步与通信、内存管理、i/o管理、时钟管理等机制。
两个485口在通信速率、工作模式、控制方式上有较大差别且系统死线要求严格。
详细介绍了vxworks下双485口串行通信系统bsp、驱动程序和应用程序的开发过程。
基于vxworks构建的嵌入式串行通信系统实时性好,效率高,可根据硬件进行优化配置;利用vxworks的i/o系统将驱动程序作为内核过程,设备作为特殊文件处理,解决了工作方式不同的两个485口的驱动程序开发和接口统一问题。
关键词:通信系统;嵌入式串行通信引言vxworks是美国windriver公司专门为嵌入式微处理器设计的一种高模块化、高性能的实时多任务操作系统,具有很好的安全性、可靠性及系统灵活性[12]。
该系统要求两个485端口波特率分别为460.8 kb和614.4 kb;工作方式分别为程序查询式和中断驱动式;代写论文握手方式和通信控制方式也完全不具有相对的独立性和“并发性”,而且各个任务根据不同的“紧迫感”应具有不同的优先级。
根据以上多方面的要求和特点,基于优先级抢占式的多任务实时操作系统vxworks是该系统的首选[3]。
本文以研制某型训练装备为背景,详细介绍了基于vxworks的双485口通信系统设计方法和过程。
1串口通信基本原理串口通信作为最常用的通信方式,用途非常广泛,驱动易于编写,被绝大多数操作系统默认支持。
其基本功能是实现和串行设备间的编码转换发送数据时,字节数据经cpu通过通用异步接收发送器(简称uart)转换为串行位,从串行端口发送出去;接收数据时,串行位通过uart被转换为字节数据,并放入缓冲区,由cpu读取。
通过对uart的内部寄存器的控制实现字节数据和位数据的转换和通信。
通信时,uart按初始化设置,把起始位、校验位和停止位加到来自cpu的8位数据上,然后按设置的波特率把这个二进制位串发送到串行通信线上,如图1所示;同样,uart能自动从通信线上接收串行数据,并取出有效的数据位,然后转换成数据字符存入接收数据寄存器。
基于VxWorks的虚拟机串口通信的实现

基于VxWorks的虚拟机串口通信的实现
李洪;吴宁
【期刊名称】《信息系统工程》
【年(卷),期】2009(000)005
【摘要】以VMware Workstation为虚拟硬件开发平台,Tornado为交叉编译环境,通过网络下载的方式向虚拟机成功移植了VxWorks操作系统.介绍了虚拟机平台的构造和虚拟网卡驱动程序的移植过程,给出了内核映像的定制流程,详细探讨了bootrom的编译和引导盘的制作方法.最后,分析了VxWorks串口驱动的基本框架,并通过编译下载应用程序,实现了虚拟机平台和普通PC机之间的串口通信.
【总页数】6页(P110-115)
【作者】李洪;吴宁
【作者单位】南京航空航天大学信息科学与技术学院南京 210016;南京航空航天大学信息科学与技术学院南京 210016
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于VxWorks实时操作系统的多串口通信系统的实现 [J], 雷瑛;刘亘炜;张安;张磊
2.基于Vxworks实时操作系统的串口通信程序设计与实现 [J], 张军
3.VxWorks中基于RS485总线的串口通信协议及实现 [J], 张爱卿;唐普英;汪康洪
4.基于Vxworks实时操作系统的串口通信程序设计与实现 [J], 张军
5.VxWorks中基于RS485总线的串口通信协议及实现 [J], 张爱卿;唐普英;汪康洪因版权原因,仅展示原文概要,查看原文内容请购买。
实时操作系统VxWorks下多串口通讯设计

RDA: IPort= sysInByte( Port+ 5); if ( IPort& 0x01 ) { W rk= sysInByte( P ort); if (! ( IPort& 0x04 ) ) { P r= pwk - > RXDR; Pw = pwk - > RX DW; p w k- > p RXD[ Pw ] = W rk ; Pw + + ; Pw& = pwk- > RXDS ; if ( Pw! } goto RDA; } AnyRC | = BIT; /* 置当前串口收到数据标志位 * / RCB it| = B I T; /* 置当前串口收到数据标志位 * / break ; case 0x06 : W rk= sysInByte( Port+ 5) ; } goto STA; EdA: sysOutB y te( I NTPTA, 0x20); sysOutB y te( I NTPTC, 0x20) ; }
串口参数选择vxworks实时操作系统通过io控制函数ioctl串口控制功能字功能字功能fiobaudrate设置串口波特率fiocancel取消读写操作fioflush清空输入缓冲和输出缓冲fiogetname得到文件设备名fiogetoptions返回当前的设备选项字fionread得到输入缓冲中未读取的字节数fionwrite得到输出缓冲中的字节数fiosetoptions设置设备选项字串口数据读写vxworks实时操作系统可通过select函数使串口读写任务一直处于阻塞状态直到串口设备文件准备好
2 多串口初始化流程
基于 PC /104 模块的嵌入式系统 , 串行通信是 常用的通信方式之一。通过串行数据端口 , 可以实 现 PC /104 与 PC 机以及 PC /104 模块之间的通信。 本文采用盛博科技有限公司的 SE M /M SP - 12( A ) 嵌入式模块 , 在嵌入式系统中扩展 8 个以上的串行 端口, 实现多串口数据通信扩展设计。 VxW orks系统平台下多串口初始化操作流程如 图 1 所示。 74
VxWorks的多任务通信机制

VxWorks的多任务通信机制一、 VxWorks操作系统介绍VxWorks实时操作系统式由美国WindRiver公司推出的一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统,VxWorks的核心是高性能的微内核wind,其具有快速任务切换、中断支持、抢占式和时间片轮转调度机制等特点,保证对外部事件的快速反应。
除了微内核,VxWorks还包括了I/O系统、文件系统、TCP/IP网络系统、图形系统、虚拟内存管理、板极支持包BSP (Board Support Package)等模块,而BSP层的存在使VxWorks可以方便地移植到各种硬件平台。
在目前的嵌入式操作系统市场,VxWorks占据着80%以上的市场份额,广泛地应用于通信、消费电子、交通运输、工业控制、航天航空等领域。
二、 VxWorks的多任务通信机制通常,在一个实时系统中,存在着多个并发的任务来协同实现系统的功能,操作系统必须为这些任务提供快速且功能强大的通信机制。
在VxWorks系统中,有信号量(semaphore)、消息队列(message queue)、管道(pipe)、事件(event)等通信机制,对一个系统开发人员来说,如何合理地使用这些通信机制,是系统能够长期高效、可靠、安全运行的关键。
1、信号量(semaphore)在VxWorks种,信号量是提供任务间同步和互斥的最快速、开销最小的机制,VxWorks有三种不同类型的信号量:(1)二进制信号量:可用于2个任务之间的同步工作。
如任务A 必须在任务B完成特定的动作以后才能进行,在这种情况下,任务A 可以获取信号量而处于阻塞(pend)状态,任务B在完成特定的动作后释放该信号量。
一般来说二进制信号量适用于一对一的任务之间的同步。
(2)互斥信号量:主要用于任务之间共享数据区的互斥保护,具有优先级反转、安全删除、递归等特性。
在有2个或2个以上的任务共享一个数据区的时候,必须使用互斥机制进行保护。
嵌入式实时操作系统Vxworks串口驱动程序的设计与实现

个 完 整 的 V w rs串行设 备驱 动 包 含 3层 抽 x ok
x xor v
象 软件 结构 :/ IO系 统 层 、t 驱 动 层 和 底 层 硬 件 驱 tr )
动 层 , 图 1所示 。 如
l l vo n I行备l ’ 串设
图 1 V w rs串 口驱动 层次结构 图 x ok
函数 属 于 竹 中间层 。
t Dv t r 及其支持 库 t i 为硬件与 IO系统 y y b作 L /
之 间 的接 口层 。 tDv是 一 个 虚 拟 的驱 动 , tLb t r y 在 yi 库 的支 持下 , 一管 理 xD v 硬 件 驱动 ) 按 照 字符 统 x r( , 设备 驱 动接 入 到 IO系 统 中 , 提 供 读 写 环 形缓 冲 / 并 区, 实现 与硬 件无 关 的功 能 。 j
维普资讯
第 7卷
第2期 1
20 0 7年 1 1月
科
学
技
术
与
工
程
V0 . N . 17 o 21
Nv o7 o .2 0
17 —89 2 0 ) 15 9 -4 6 11 1 ( 07 2 —6 90
S i n e T c n l g n n ie rn c e c e h oo y a d E gn e i g
顶层 的 IO系统 层 通 过 调 用 通 用 i i 中 的 / o b库 L ra ( 、 re ) i t ) 函数 , 给定 的参 数 中找 ed ) wi ( 、o l 等 t c( 从 到 相应 的设 备 描 述 符 , 后 找 到 设 备 驱 动 表 , 执 然 并 行设 备 驱动表 中相应 操 作 函数 , 设 备 驱 动 表 中 的 而
VxWorks下串口通信程序设计与实例

VxWorks下串口通信程序设计与实例【摘要】本问讨论了在嵌入式实时操作系统VxWorks下结合PowerPC平台实现串口通信的相关技术,给出了基本原理和程序示例。
详细介绍了串口设置时每个参数的配置方法及作用。
【关键词】VxWorks;PowerPC平台;串行通信;串口参数1.前言VxWorks是一个具有微内核、可裁剪的高性能强实时操作系统,在全球和国内被大量使用。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。
PowerPC处理器有非常强的嵌入式表现,因为它具有优异的性能、较低的能量损耗以及较低的散热量,包含串行和以太网控制器这样功能强大的集成I/O。
在计算机系统通信应用中,RS232串口是目前广泛使用的设备通信控制接口,在嵌入式实时操作系统中实现串口通信,可大大提高系统的应用范围,提高系统获取信息的能力。
2.串口通信原理及优点串口通信本质是CPU发出的命令数据经串行端口后转换为串行的位,接收方又把串行的位转换成字节命令回送CPU,实现通讯。
串口通信有如下优点:(1)开发简单,用户可以自定义数据格式,独占串口与另一方通讯。
(2)成本低廉,串口通信从转换芯片到传输介质相对其他通信成本廉价。
(3)使用灵活,有全双工RS232,亦有但双工RS485,而且转换方便。
在传输数据量不大,传输距离不大,比如一个变电站内,非常适合使用串口通信。
3.串口通信在Vxworks实现原理在VxWorks中,将I/O系统设计成为任何类型的设备提供一个简单、统一、独立于设备的接口,任何对于串口的操作都可以视为对一个文件的操作,而不必了解串口设备或程序驱动实现的细节。
下面以MPC8309 CPU添加12个串口为例解释实现过程:(1)软件添加,修改对应BSP包,使系统支持12个串口,并且申请资源。
编译BSP包,生成vxworks系统文件及bootrom文件。
系统启动时用devs命令可以查看到串口。
Vx Works中串口通信的实现

串 口通信 的优点 是开 发简单 , 传输 数据 量不 在
大 、 求 速度 不高 而传输 距 离较 远 的通信 场合 得 到 要
广 泛应 用。
在 Vx rs中, I0 系 统 设计 成 为 任何 类 wok 将 / 型 的设 备 提供 一 个简单 、 一 、 立 于设备 的接 口。 统 独
Ke r s:Vx o k ;s ra o y wo d W r s e i lc mm u ia i n;Po r n c to we PC;RTOS
widRi r 司 的嵌 入式 多 任 务 Vx r s n v 公 e wok 实 时操 作系统 是 目前 世 界 上 用 户 数 量 最 大 的 实 时操 作 系统 , 已成功 的应 用于 航 空 、 天 、 航 武器 控 制 、 舰
J n. 2 0 u ,0 7
V Wok 中串 口通 信的实现 x rs
李 慧
( 陵 科 技 学 院 信 息 技 术 学 院 , 苏 南 京 金 江 200 ) 1 0 1
摘
要 : P weP 以 o r C为 例 , 论 了 基 于 P weP 讨 o r C的 嵌 入 式 实 时 操 作 系统 V Wok 与 P 机 进 行 串 口 通 信 的 基 本 x rs C
维普资讯
第2卷 3
第 2期
金 陵 科 技 学 院 学 报 J URNA I I NS T O L OFJNL NG I TI UTE O E HNO O Y FT C L G
Vo . 3 No 2 12 . .
20 0 7年 6月
船 、 信 等领 域。 如在 美 国的 火 星探 测 器 、 国者 通 爱
编码 转换 器 。 当数据 从 C U 经过 串行 端 口发送 出 P 去时 , 节数 据转 换 为 串行 的位 ; 接收 数据 时 , 字 在 串 行 的位 被 转换 为字 节 数 据 。应 用 程 序 要使 用 串 口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 Vx W orks系统串口通信配置
1 . 1 串口工作模式 VxW orks操作系统 中的串 行设备 ( 终端 tty 设
73
先存储在缓冲区中, 当输入 NEWL INE 字符后 , 整行 字符 ( 包括 NEWL I NE 字符 ) 同时 导入环 形存储区 中。当从一个 tty 设备以线性模式进行读操作时, 根 据用户读操作缓冲区的容量 , 可以从环形存储区中 读取两行的字符信息。 1 . 2 串口参数选择 VxW orks实时操作系统通过 I/O 控制函数 io ctl ( ) 对串口参数进 行选择。串 口控制功能字如 表 1 所示。
实际使用中, CPU 板和串口板通过 PC104 总线 连接。本文仅对与串口相关的模块进行介绍。系统 串口板提供 8 个串行口 ( P1~ P8) , 分别完成不同的 数据通信功能。 SEM /M SP 12( A )串口通信模块, 在 板集成了两个单元高性能的 16C554 控制芯片 ( 相 当于 8 个 16C550) , 可以达到更高的通讯速率而无 需占用过多的 CPU 资源。 SEM /M SP 12( A) 模块中 , J3 、J4 为模 块的串行 端口。该模块 共有 8 个串口 , 每个串口有 16 字节 FI FO, 并且 RS232 /RS422 /RS485 可选 , 光 电隔离输 出, 在标 准 配 置下 可 达 115 . 2kbps ( 460 . 8kbps 可 选 ), 低 功 耗 单 + 5V 供 电 , 工 作 温 度 范 围 较 宽 ( - 55 ~ + 70 ), 串口 的基 地址系 统加 电时 从 EEPROM 中取数据配置 , 上电后可通过软件配置 , 八个串口占用一个系统中断资源。串口通讯模块采 用两块 16C554 芯片 , 每块芯片控制四个串口。 要正确使用每个串行口, 除了硬件跳线设置正 确外 , 还要 对 SEM /M SP 12 ( A ) 模 块 的 在板 EEP ROM 进行软件设置。每个串行口的基地址和中断 号设置均保存在 EEPROM 中 , 上电后模块将从中读 取这些数据, 并且中断号的软件设置要与硬件跳线 设置相一致。在本文中, 通过跳线设定串口通讯模 块的基地址为 0x380 , 中断向量为 IRQ9, 通过编程设 定串口的工作参数 : 波特率为 115200bps。
图 2 多串口中断服务程序流程
RDA: IPort= sysInByte( Port+ 5); if ( IPort& 0x01 ) { W rk= sysInByte( P ort); if (! ( IPort& 0x04 ) ) { P r= pwk - > RXDR; Pw = pwk - > RX DW; p w k- > p RXD[ Pw ] = W rk ; Pw + + ; Pw& = pwk- > RXDS ; if ( Pw! } goto RDA; } AnyRC | = BIT; /* 置当前串口收到数据标志位 * / RCB it| = B I T; /* 置当前串口收到数据标志位 * / break ; case 0x06 : W rk= sysInByte( Port+ 5) ; } goto STA; EdA: sysOutB y te( I NTPTA, 0x20); sysOutB y te( I NTPTC, 0x20) ; }
0 引言
VxW orks是目前软件工程师采用最多的用于开 发实时嵌入式系统的商用实时操作系统。 Vx W orks 操作系统采用微内核设计 , 具有可伸缩性、 可裁减性 和高可靠性 , 适用于所有流行目标的 CPU 平台, 提 供了超过 1800 个应用编成接口, 用户可以根据自己 的需要对 Vx W orks进行配置。 V x W orks操作系统具 有良好的持续发展能力、 高性能的内核以及友好的 用户开发环境, 广泛地应用于通信、 军事、 航空和航 天等高精尖技术及实时性要求极高的领域中 , 如美 国的 F 16、 FA 18 战斗机、 B 2 隐形轰炸机和爱国者 导弹上 , 甚至在火星探测器上也使用了 V x W orks操 作系统。
( 下转第 79页 )
/* 多串口模块 M SP 12( A) 的中断服务程序* / vo id ne w _INTA _Server( vo id) { static char IPor, t W rk ; static in tPor, t PNo , Pr , Pw, B IT; static struct TPWK * p wk ; STA: IPort= sysInByte( B aseAddA + 0x02) ; if ( IPort= = 0) goto Ed A; BI T = 0x01; w hile( ( B I T & IP ort) = = 0) BIT < < = 1 ; sw itch( B IT ) { case 0x80 : PNo= 7 ; break ; case 0x40 : PNo= 6 ; break ; case 0x20 : PNo= 5 ; break ; case 0x10 : PNo= 4 ; break ; case 0x08 : PNo= 3 ; break ; case 0x04 : PNo= 2 ; break ; case 0x02 : PNo= 1 ; break ; case 0x01 : PNo= 0 ; break ; } Port= Port A dd[ PNo]; IPort= sysInByte( Port+ 2); if ( ( IP ort & 0x01) = = 0x01 ) goto STA; /* no IRQ * / p w k= & PWK[ PNo];
Ab stract : VxW orks is a real t i m e operat io n syste m deve lo ped byW indR iver com pany , and is popular in m any e m bedded system s. Vx W orks RTOS has super io r clipping ab ility . User can c lip dow n g roupw are based on require m ents by using the T ornado cross developm en t env ironm en. t U ser con fig ures kernel facilities o f system by se lect ing som e of the K ernel facilit ie s , and all kerne l facilities can be independently conf ig ured in to the system. T he rea liza tio n w ays and prog ra mm in g m ethod of mu lt i serial comm unication bet w een em bedded Vx W orks system o f x86 operat ing platfor m and PC w as in troduced . Key words : m ulti seria l comm un icat ion; VxW orks ; rea l ti m e operatio n system ( RTOS)
表 1 串口控制功能字 功能字 FI O BAUDRA TE FI O CAN CEL FI O FLU S H FI OG ETNAM E FI O GETOPT I ON S FI ONR EAD FI ONW R I TE FI O SETO PTI ON S 功能 设置串口波特率 取消读写操作 清空输入缓冲和输出缓冲 得到文件设备名 返回当前的设备选项字 得到输入缓冲中未读取的字节数 得到输出缓冲中的字节数 设置设备选项字 图 1 多串口初始化流程
1 . 3 串口数据读写 VxW orks实时操作系统可通过 se lect( ) 函数使 串口读写任务一直处于阻塞状态, 直到串口设备文 件准备好。通过 select宏实现对串口数据读写的监 测 , 即当在串口上有数据送来时或串口设备准备好 可以发送数据时 , Vx W orks实时操作系统通过 select 宏通知串口数据读写任务。 VxW orks提供的 select ( ) 函数有关宏定义如表 2所示。
应用领域。 Vx W orks实时操作系统具有良好的裁剪能力, 用户可通过交叉开发环境根据需求裁剪 组件 , 选择各种内核组件进行系统内核配置 , 编译系统内核时进行独立的加载和卸载 。 介绍了 基于 x86 平台的嵌入式 VxW orks系统与 PC 机多串口通信的实现方式以及串口通信的编程方法。 关键词: 多串口通信 ; VxW orks ; 实时操作系统
D esign of multi serial comm unication in embedded real ti m e Vx W orks operating system
WANG L i x in, MA Sheng x ian
( National K ey Laboratory of E lectro Op tic Syste m, In for m ation Con tro l Technology, Sanhe 065201, Ch ina)
中图分类号 : TP332
ห้องสมุดไป่ตู้
文献标识码 : A
文章编号 : 1009- 2552( 2010) 08- 0073- 03
实时操作系统 Vx W orks下多串口通讯设计