基于VxWorks的双485口管理系统设计_第1页
基于VxWorks的双485口管理系统设计_第2页
基于VxWorks的双485口管理系统设计_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于VxWorks的双485口管理系统设计

摘要:VxWorks嵌入式操作系统具有高效的实时任务管理与调度、任务的同步与通信、内存管理、I/O管理、时钟管理等机制。两个485口在通信速率、工作模式、控制方式上有较大差别且系统死线要求严格。详细介绍了VxWorks下双485口串行通信系统BSP、驱动程序和应用程序的开发过程。基于VxWorks构建的嵌入式串行通信系统实时性好,效率高,可根据硬件进行优化配置;利用VxWorks的I/O系统将驱动程序作为内核过程,设备作为特殊文件处理,解决了工作方式不同的两个485口的驱动程序开发和接口统一问题。关键词:通信系统;嵌入式串行通信引言VxWorks是美国WindRiver公司专门为嵌入式微处理器设计的一种高模块化、高性能的实时多任务操作系统,具有很好的安全性、可靠性及系统灵活性[1-2]。该系统要求两个485端口波特率分别为460.8kb和614.4kb;工作方式分别为程序查询式和中断驱动式;代写论文握手方式和通信控制方式也完全不具有相对的独立性和“并发性”,而且各个任务根据不同的“紧迫感”应具有不同的优先级。根据以上多方面的要求和特点,基于优先级抢占式的多任务实时操作系统VxWorks是该系统的首选[3]。本文以研制某型训练装备为背景,详细介绍了基于VxWorks的双485口通信系统设计方法和过程。1串口通信基本原理串口通信作为最常用的通信方式,用途非常广泛,驱动易于编写,被绝大多数操作系统默认支持。其基本功能是实现和串行设备间的编码转换发送数据时,字节数据经CPU通过通用异步接收发送器(简称UART)转换为串行位,从串行端口发送出去;接收数据时,串行位通过UART被转换为字节数据,并放入缓冲区,由CPU读取。通过对UART的内部寄存器的控制实现字节数据和位数据的转换和通信。通信时,UART按初始化设置,把起始位、校验位和停止位加到来自CPU的8位数据上,然后按设置的波特率把这个二进制位串发送到串行通信线上,如图1所示;同样,UART能自动从通信线上接收串行数据,并取出有效的数据位,然后转换成数据字符存入接收数据寄存器。2串行通信软件设计该软件以WindRiver的TornadoII集成开发环境为平台进行开发。包括BSP开发、驱动程序开发、应用程序开发等步骤。2.1BSP开发BSP(BoardSupportPacket,板级支持包)是介于底层硬件和上层软件之间的底层软件开发包。它来源于嵌入式操作系统与硬件无关的设计思想[2,4]。操作系统被设计运行在虚拟的硬件平台上,对于具体的硬件平台,与硬件相关的代码都被封装在BSP中。它主要功能为屏蔽硬件,提供操作系统的驱动及硬件驱动。它的主要功能包括:系统引导时,初始化目标机硬件;提供目标系统上的驱动程序,如定时器、串口等[2,6]。开发BSP,主要以目标板CPU的BSP文件为模板,建立工程并修改相关源文件。BSP文件在vx-works/target/config/all和vxworks/target/config/bsp-name文件夹里。其中,all文件夹里的文件是所有BSP的通用文件,bspname文件夹的文件是用户自己定制的BSP文件。该系统采用PentiumCPU,因此以vxworks/target/config/pcPentium文件夹里的文件为模板进行修改,开发过程如下。系统配置在config/all目录包含的文件中完成。需要配置的头文件有target/config/all/configAll.h和arget/config/pcPentium/config.h;需要配置的模块文件有target/config/all/usrconfig.c和target/src/config目录下的初始化模块。配置头文件主要利用定义(#define)和去除定义(#undef)实现。ConfigAll.h是全局配置头文件,包括所有目标系统公用的配置参数默认定义,一般不修改此文件,而在Config.h中重新定义。以配置引导程序为例:该系统开发过程中使用串口(此串口为目标机开发板上的串口)调试VxWorks映像,端口1作为WDB代理通信通道,不设目标机控制台通#defineN-UART-CHANNELS2这样,宿主机和目标机通过一根串口线连接,VxWorks映像文件从目标机软盘上加载,宿主机通过串口来调试目标机上的VxWorks。在config.h中修改如下内容,同时在Makefile里配置ROM起始地址(ROM-BASE-ADRS)、代码段入口(ROM-TEXT-ADRS)、ROM大小(ROM-SIZE)、VxWorks映像加载地址(RAM-LOW-ADRS)和BootROM加载地址(RAM-HIGH-ADRS)。该系统对模块文件usrconfig.c和target/src/config目录下的初始化模块无需作修改[2]。2.2串口驱动程序开发VxWorks操作系统有两种方式实现驱动。1)把设备驱动程序作为独立任务实现,直接在顶层任务中实现硬件操作,完成特有专用的驱动程序。2)VxWorks的I/O系统将设备程序作为内核过程实现。这种方式便于实现I/O子系统的层次模型,便于文件系统一起把设备作为特殊文件处理,提供统一的管理、统一的界面和统一的使用方法,并把设备、文件及网络通信组织成为一致的更高层次的抽象,为用户提供统一的系统服务和用户接口。采用这种驱动方式,向上将TTY设备安装到标准的I/O系统中,上层应用通过标准的I/O接口完成对硬件设备的操作,向下提供对实际硬件设备的底层设备驱动程序[7-8。串口1、串口2均采用82C52芯片作为UART。根据上位机的工作方式,端口1采用硬件握手中断驱动方式,有5根信号线:2根数据传输线(TXD、RXD),2根握手线(CTS、RTS)和1根地线。端口2采用软件握手查询工作方式,有3根信号线:2根数据传输线(TXD、RXD)和1根地线。各端口的默认字长均为8位、停止位2位、奇偶校验位1位、端口1默认波特率为614.4kbps,端口2默认波特率为460.8kbps。首先构造设备描述符结构体,设备描述符保存了与设备相关联的数据,它必须以设备头(DEV-HDR)结构为开头。由于2个端口的工作方式完全不同,且无法预测数据传输的先后顺序和传输时机,2个端口的数据接收函数必须分开编写,其中uartRecQuery()函数用于端口2的查询工作方式;uartRecData()函数用于端口1的中断握手方式,其优先级高于uartRecQuery()函数。但数据发送函数可以合并,因为对于单处理器而言,是不可能实现真正的多任务并行处理的,即使编写成两个并行任务,也是在处理器的控制下,按时间片轮转执行的。这样不仅不能提高执行效率,反而会因为任务上下文切换造成一定的资源浪费,影响系统实时性。这种情况,更适合采用面向过程的方法对程序进行设计和优化。下面对其进行说明:调用后,其首先检测输入参数是否合法,而后根据端口号选择工作方式(中断或查询),作相应操作,开始发送数据,每发送一个字节检测并等待TBRE(发送缓冲寄存器空)信号变为有效,再发送下一字节,数据全部发送完毕后函数返回。其工作流程如驱动程序开发完成后,在usrConfig.c文件的usrRoot()函数里,调用API函数iosDrvInstall()对以上驱动程序分别进行安装,再初始化设备描述符,并用iosDevAdd()将设备增加到设备列表中,最后将设备置为中断模式。以上操作完成后即可用标准I/O函数操作两个不同的串口设备2.3串口通信应用程序设计数据通信按帧进行,帧分为命令帧和应答帧。帧格式为命令帧:命令码长度参数串异或应答帧:应答码长度参数串异或

对于多字节参数,按高字节在前,低字节在后的次序发送。数据采用二进制16位有符号整数数据格式。其中,最高位为符号位,数据为二进制格式。数据传输时,上位机首先发送一个命令帧,包含数据包个数、最后一个数据包的字节数,除最后一个数据包外,每包大小为16kB。模拟器收到后,回复应答帧并将收到的数据包个数、最后一个数据包的字节数一同发回校验,对帧长度校验无误后开始发送数据。由于传输数据量较大,一般校验方法进行内容误判率高,不能纠错,大多数情况下需要重新发送,非常费时。循环冗余校验法(CRC)由于实现简单,检错能力强,并能纠错,可以较好地解决这个问题。该系统采用CRC16进行校验[9]。3结论串行通信以其网络连接方便、抗干扰性能好、传输距离远等优点,在嵌入式系统得到广泛

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论