为提高数据接收的实时性,可采用中断方式,利用VxWorks提供的select函数的事件触发机制,将读串口的任务阻塞使其一直等待数据,当有数据来到的时候该任务会立刻自动响应,提高系统的实时性。
4 环境配置
在本实时应用系统中采用486机作为目标机,串口通信时目标机VxWorks系统启动盘的制作步骤:
(1) 修改通用配置文件\\Tornado\target\config\pc486\config.h。在config.h文件中加入以下宏定义:
#define INCLUDE_WDB
#define INCLUDE_WDB_TTY_TEST
#undef WDB_COMM_TYPE
#define WDB_COMM_TYPE WDB_COMM_SERIAL /*定义通信方式为串口联结*/
#define WDB_TTY_CHANNEL 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)hostname:/fd0/vxWorks \ h=主机
ip e=目标机ip u=主机上的登录用户名"
(2) 在Tornado集成环境中执行菜单命令Project > Make PC486 > Common Targets > clean删除以前生成的文件,执行菜单命令Project > Make PC486 > Boot Rom Targets > bootrom_uncmp编译链接生成bootrom_uncmp ;再选择VxWorks Target,编译生成vxworks;
(3) 拷贝\\Tornado\target\config\pc486\bootrom_uncmp至\\Tornado\host\bin下
(4) 重命名文件bootrom_uncmp为bootrom;
(5) 准备一张已格式化的空盘插入软驱;
(6) 在目录\\Tornado\host\bin下执行命令 mkboot a: bootrom;
(7)拷贝\\Tornado\target\config\pc486\VxWorks至软盘;
(8) 将系统制作盘插入目标机软驱,加电启动目标机即载入VxWorkst系统。[3]
5程序示例
5.1 在程序中加入下列头文件
#include <vxWorks.h>
#include "strLib.h"
#include <string.h>
#include <sioLib.h>
#include <ioLib.h>
#include <stdio.h>
#include <ioctl.h>
#include <selectLib.h>
#include "types/vxTypesOld.h"
5.2 打开串口
int open_com1(void) //打开串口1函数
{ int sfd;//串口设备文件描述符
sfd =open(”/tyCo/0”,0_RDWR,0);//打开串口并返回串口设备文件描述符
if(sfd ==ERROR) //如果不能打开串口1则打印出错信息
printf("You can’t open port com1 !");
}
