vxworks程序开发实践(6个实践方法)


21期2007年11月 167121819 (2007) 2125699204 ScienceTechnology EngineeringVol. 21Nov.2007 2007Sci.Tech. Engng. 嵌入式实时操作系统 Vxworks串口驱动 程序的设计与实现 (中国石油大学资源与信息学院,北京102249) 摘要针对 Wind River公司的嵌入式实时操作系统 Vxworks,分析了系统内核串口驱动的层次结构,详细阐述了 Vxworks下 串口驱动的启动顺序,给出了 SAMSUNG公司 ARM7微处理器芯片 S3C44B0X的串口驱动具体实现。 关键词实时操作系统Vxworks驱动程序 中图法分类号TP316. 89; 文献标识码A 2007年 26日收到国家自然科学基金项目 1053404和40574049)资助 第一作者简介: 1984—),男,湖南南县人,硕士研究生, 研究方向:智能检测技术。 Vxworks是由美国 Wind River公司推出的实时 操作系统,实现了比其他实时操作系统更好的有效 性、商用性、可裁剪性和互操作性 ,其产品在高可靠性、高性能领域中被广泛应用。

串行通信是嵌入 式设备通信应用中最为广泛的一种方式,它具有可 靠性高、抗干扰能力强等优点。 不同的操作系统对串行通信的处理方式不尽 相同,本文在分析了 Vxworks操作系统内核串口驱 动的层次结构和启动顺序的基础上vxworks程序开发实践,提出了如何实 现基于 Vxworks操作系统的 ARM7 微处理器芯片 S3C44B0X芯片串口驱动程序编写。 1串口驱动分层结构 一个完整的 Vxworks串行设备驱动包含 象软件结构:I/O系统层、tty驱动层和底层硬件驱 动层,如图 1所示。 顶层的 I/O系统层通过调用通用 ioLib库中的 read )等函数,从给定的参数中找到相应的设备描述符, 然后找到设备驱动表, 行设备驱动表中相应操作函数,而设备驱动表中的函数属于 tty中间层。 ttyDrv及其支持库 tyLib作为硬件与 I/O系统 之间的接口层。ttyDrv是一个虚拟的驱动,在 tyLib 库的支持下,统一管理 xxDrv(硬件驱动) ,按照字符 设备驱动接入到 I/O系统中,并提供读写环形缓冲 区,实现与硬件无关的功能 1Vxworks串口驱动层次结构图xxDrv层用来初始化驱动程序, 它采用回调的 方法来适应不同的上层协议。

xxDrv在处理数据 时,只是例行地回调填入的函数, 而不用关心具体 的实现细节,从而适应不同的上层实现。 当用户调用 write函数进行写操作时,会根据相 fd调用在设备驱动表中注册的tyWrite函数,此函数将用户缓冲区的内容写入相应的输出环形 缓冲区中vxworks程序开发实践(River:Vxworks下串口驱动的启动顺序给出芯片S3C44B0X),一旦输出环形缓冲区不为空, 就会调用 回调函数 tyITx ,从输出环形缓冲区取出字符,由xxTxStartup )启动一次中断输出,在输出中断服务程序 xxTxInt )中将数据发往指定串口。当串口接收到数据时,会调用输入中断服务程 ,将输入的字符写入指定的缓冲区,然后由回调函数 tyIRd )将缓冲区的内容读入输入环形缓冲区,当用户调用 read )进行读操作时,会根据相应的 fd调用在设备驱动表中注册的 tyRead函 数,此函数将输出环形缓冲区中的内容读入用户缓 2系统初始化串行设备顺序除了解驱动结构外,还需要了解在 Vxworks下 串口驱动的启动顺序。启动过程可分为两个阶段, 如图 2所示。 第一阶段是在内核启动之前,在 usrInit )中进行第一步的初始化,这一步主要完成串口的基本初 始化,将其置于安静状态 中调用sysLib. c中的函数 sysHwInit 端口;然后调用sysSerial. c中的函数 sysSerialHwInit )初始化和硬件相关的驱动的SIO_CHAN结构;再 调用 xxDevInit xx2DevInit函数完成以下工作: 复位串口、设置串口相 关寄存器 (包括禁止 FIFO和 AFC、帧数据格式和波 、设定串口工作在查询方式以及关闭串口中断。

html5游戏开发实践指南_vxworks程序开发实践_rest web service开发实践

系统激活内核之后,在根任务 usrRoot )中进行第二步初始化,将串口设置为中断方式实现对 tty库 的底层支持。bootConfig. )调用函数sysHwInit2 sysSerial.c中的函数 sysSerialHwInit2 )初始化并使能串口中断;最后调用 xxDevInit2 ,使串口工作在中断模式,完成对上层 tty库的支持。 3S3C44B0X的串口驱动实现 了解 Vxworks串口驱动结构层次和串口驱动启动 流程后,只需要根据具体的MCU芯片来修改底层 xx2 2Vxworks串口驱动启动过程图Drv驱动代码。S3C44B0X的串口驱动实现,可参考 target/ config/wrSbcArm7 目录下的 sngks32cSio. sngks32cSio.h文件作为模板,在此基础上进行移植。 1移植步骤(1)为了使用串口,需要在系统中进行配置,这 部分工作主要在 config. h中实现。 define INCLUDE_SER IAL /支持串口define NUM_TTY /支持串口通道数define CONSOLE_TTY /控制台使用COM0 #define CONSOLE_BAUD_RATE115200 若定义串口为WDB 连接下载通道, 还需要如下配 #defineWDB_COMM_TYPE WDB_COMM_SER IAL设置 WDB 为串口模式 #define WDB_TTY_BAUD115200/ WDB连接通道串口波特率 #define WDB_TTY_CHANNEL1/ /使用 COM1为WDB 连接通道 #define WDB _TTY_DEV_NAME /缺省的WDB通道在 tty中的设备名 sngks32cSio.h中串口相关寄存器偏移地址,添加位 功能的宏定义,并根据给定系统时钟频率计算串口 波特率设置值。

S3C44B0X波特率与系统主时钟有 如下计算公式: UBRDIVn 163波特率) (3)修改sngks32cSio. c文件,主要涉及两个初 始化函数、接收和发送中断函数、启动发送函数。 LOCALintsngks32cTxStartup SIO_CHAN3pSioChan) sngks32cIntTx( pChan) returnOK; elsereturn ERROR; sngks32cIntTx( :发送中断服务例程void sngks32c IntTx( SNGKS32C_CHAN FASTintoldlevel; SNGKS32C_SIO _REG_READ pChan,SNGKS32C _USTAT, status) status&USTAT_TX_READY) getTxArg,&outChar) SNGKS32C_SIO_REG_WRITE( pChan, SNGKS32C_UTXBUF,outChar) SNGKS32C_USTAT,status) status&USTAT_TX_READY) getTx2Arg, &outChar) ERROR)break; SNGKS32C_SIO_REG_WRITE( pChan, SNGKS32C_UTXBUF,outChar) 4结束语Vxworks是一种高效的嵌入式多任务实时操作 系统,其应用范围随着嵌入式系统的广泛应用而日 益扩大。

嵌入式设备一般都带有串行接口,同时嵌 入式产品开发过程中板子的调试也大多需要串口, 因此掌握在 Vxworks下的串口驱动编写还是很有必 要的。作者利用本文所讨论的移植方法,实现了在 某项目开发中 Vxworks系统 BSP层串行设备驱动, 通过串口连接主机,下载操作系统和应用程序代码。 Spaceshuttle RTOSBayesian network. Digit2 al Avionics Systems Vxworks程序开发实践.北京: 人民邮电 出版社, 2004 Vxworks环境下串口驱动程序设计.微机发展, 2003; 13 41—454李广影,董连成. 实时操作系统 Vxworks下串行通信驱动研究. 炭技术,2006; 25 24—255Wind Rriver. Vxworks BSP6Samsung. S3C44BOX Data Sheet. http: /www.samsung. com, 2002 21期徐伟,等:嵌入式实时操作系统 Vxworks串口驱动程序的设计与实现 实验结果表明系统利用率高vxworks程序开发实践,并测得当 时,系统利用率最高,也即检查点最佳时间间隔为 100 s;实验结果分析图同时说明存在一个最佳检查 点间隔。

取实验所采用的参数,用科学计算程序包 Matlab对 4)式编程进行数值分析,检查点最佳时间间隔也是约为100 s,从而验证了 (4)式的正确性。 4结论 在分布式信息资源管理系统中,服务器对于系 统的可靠性及效率起着非常重要的作用,服务器故 障的多发性是系统性能的瓶颈。本文利用冗余技 术,设计实现了一个服务器的主从备份模型, 通过 基于检查点回卷恢复的技术提高了系统的可靠性 和可用性;为了降低系统的容错开销, 采用了写时 复制的检查点方式,并计算出了双机容错系统检查 点的最佳设置间隔。实验结果表明,该冗余系统简 单、高效、可靠。 分布式冗余管理系统可靠性的设计与实现. 计算机工程与应用, 2003; 39 多复制服务器间无阻塞的数据更新.软件学报. 1998; 268—2723李凯原,杨孝宗,减少检查点开销的一种方法. 计算机工程与应 2000;36 4杨金民,张大方.基于分块消息日志的回卷恢复策略. 电子学报, 2004; 32 基于Markov链的分布式仿真系统最 佳检查点间隔研究. 国防科技大学学报, 2005; 27 73—776Pradhan Roll2forwardcheckpointing scheme: NovelFault2tol2 erant Architecture. IEEE Trans 1994;43 1163—11747Trivedi computerscience applications. Prentice Hall, 1988 Reliable Effic ient Implementation Scheme RedundantSystem InformationResource Management TIAN Hua (Library HunanPublic Security College, Changsha 410138, Abstract]Distributed management system informationresource must conflictingbe2 tween reliability reliablesystem model redundanttechnology. im2proving efficiency modeladopt Copy2on2Write setcheckpoint, bestinterval checkpoint.Experimental results show Keywords] information resource managementredundancereliabilityefficiency (上接第 5701页) Design Serial Dr iver RTOSVxworks XU Wei, JU Xiao2dong Information,University Petroleum,Beijing 102249, serialdriver architecture bootprocess WRSRTOS Vxworks were analyzed example serialdriver upon S3C44B0X Keywords] real2time operating systemVxworksdriver program


免费领取: 只要加微信,回复“入门视频”,即刻获取 全网最系统,最容易入门的的Web前端入门全套视频,C语言入门全套入门视频,大数据全套入门视频,PhP全套入门视频,Pathon全套入门视频,Java全套入门视频!!!微信号:18370228235 ,立即领取!
版权申明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ892482387,本站将立刻清除。

分享到