这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 斑竹帮帮忙啊!!!

共2条 1/1 1 跳转至

斑竹帮帮忙啊!!!

菜鸟
2007-05-08 22:13:11     打赏

在pc104上增加一个多串口模块,以前跑的是dos+RTkernel,厂商提供的驱动程序如下(写操作部分):

void SioTxWrite(unsigned int port, unsigned int Len,unsigned char *Buf)
{
static unsigned char j,addr, DataNum;
outportb(CBaseAddr+0x0F, 0x91);

DataNum=SioTxLen(port);
if ((DataNum+Len)>2047)
return;
outportb(CBaseAddr+0x0F, 0x90);
addr=0x00+port;

for(j=0; j<Len; j++)
{
outportb(CBaseAddr+addr, Buf[j]);
}
}

以前是把驱动程序和应用程序放在一起编译,就ok!现在硬件跑vxWorks,也就是实现移植.请问针对现在的驱动程序开发vxWorks,怎么开展工作,请大虾指点啊!!谢谢啦 急....




关键词: 斑竹     帮帮忙    

菜鸟
2007-05-13 02:23:00     打赏
2楼

看你的驱动代码,可以看出是用的直接IO方式实现的,这个驱动直接操作串行接口的寄存器。

在VxWorks下面,你可以有两种选择:

其一:使用与DOS一模一样的代码。当然,个别函数的名称是不同的,outportb在VxWorks x86下面应该就是sysOutByte这个函数。。。。(如果图省事,可以直接做个宏来代替函数名)。这样做的关键就是你要知道串口芯片的IO基地址,有可能是PCI pnp方式获取的,有可能是固定的,,,,,IBM PC下好象是固定的,0x2f8为COM1,0x3f8为COM2,,当然这个跟板子强相关,你还要根据你自己的芯片组来确定--芯片组手册上会有。

其二:使用VxWorks现成的串口驱动,vxworks提供很多种通用的串口驱动,并最终把串口作为一个设备(文件,tty类型的,跟unix的概念一样)。按猜测,你的串行接口驱动应该是i8250或者16550兼容的。可以使用其中任何一种。然后,按标准的文件访问方式访问串口做应用程序。。。

第一种更精确,而且你要做的工作可能会少写。第二种标准,可靠,但要做的工作多些。全凭你自己选择了。。。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]