fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1544回复:6

20分请教驱动与设备的注册!

楼主#
更多 发布于:2003-08-11 17:34
我在vxworks编程向导中看到需使用iosdrvinstall和iosdevadd将驱动和设备添加到io系统,请问这两个函数在那里调用!
是在usrconfig.c中吗?

[编辑 -  8/11/03 by  fwzfwz1]
有了驱动,人才有了力量。
沙漠之鹰
驱动大牛
驱动大牛
  • 注册日期2001-12-30
  • 最后登录2007-08-02
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-12 13:36
应该是在你的驱动程序里面调用吧!
------------------------------ [color=red]茶壶深爱着茶叶,表达爱意时却遭到拒绝,茶壶大吼:为什么?这一切都是为什么? 茶叶胆怯地说:俺妈说了,成天灌水的都不是好人。 ---别到处看,说你哪!!    [/color]
seven
驱动小牛
驱动小牛
  • 注册日期2001-04-03
  • 最后登录2007-03-28
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-15 08:39
两个地方都可以调用。各有各的好处。但我建议最好是在驱动里调用,因为你有时候会修改驱动程序,而BSP部分一般来说尽量不要修改的。
我爱中医:http://www.ngotcm.com/forum/index.php
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-15 14:02
两个地方都可以调用。各有各的好处。但我建议最好是在驱动里调用,因为你有时候会修改驱动程序,而BSP部分一般来说尽量不要修改的。

那末在驱动的什么地方调用那,请赐教!
有了驱动,人才有了力量。
seven
驱动小牛
驱动小牛
  • 注册日期2001-04-03
  • 最后登录2007-03-28
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-17 08:41
在驱动程序里。例如,我写了个FLASHDRV,那么我就这么调用:
int FlashDrvInstall()
{
int index;
    static struct XXXX_t
    {
        DEV_HDR  zDevHead;
        int      xx[0x200];
    } xxxx;
    memset(&xxxx, 0, sizeof(xxxx));
    index=iosDrvInstall(FlashCreate, FlashDelete, FlashOpen, FlashClose, FlashRead, FlashWrite, FlashIOCtl);
    iosDevAdd(&xxxx.zDevHead, \"/FlashDev\", index);

return 0;
}

其中,FlashDrvInstall()是在BOOTCONFIG。C中调用的。
我爱中医:http://www.ngotcm.com/forum/index.php
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-18 23:27
在驱动程序里。例如,我写了个FLASHDRV,那么我就这么调用:
int FlashDrvInstall()
{
int index;
    static struct XXXX_t
    {
        DEV_HDR  zDevHead;
        int      xx[0x200];
    } xxxx;
    memset(&xxxx, 0, sizeof(xxxx));
    index=iosDrvInstall(FlashCreate, FlashDelete, FlashOpen, FlashClose, FlashRead, FlashWrite, FlashIOCtl);
    iosDevAdd(&xxxx.zDevHead, \"/FlashDev\", index);

return 0;
}

其中,FlashDrvInstall()是在BOOTCONFIG。C中调用的。
 

根据我的理解,seven兄的驱动的初始化及设备的创建部分的代码并不是在驱动中调用的,而是在BSP部分调用的。而且是针对基于ROM的vxworks的。和一般的在usrconfig.c中调用并没有什么区别。
《嵌入式实时操作系统vxworks及其开发环境Tornado》一书上提到一般不要修改config/all下的文件,而无论在usrconfig.c和rootconfig.c中调用驱动的初始化和设备的创建函数都修改了config/all下的文件。不知还有没有其他调用驱动初始化和设备创建的地方。
有了驱动,人才有了力量。
沙漠之鹰
驱动大牛
驱动大牛
  • 注册日期2001-12-30
  • 最后登录2007-08-02
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-19 13:23
[quote]两个地方都可以调用。各有各的好处。但我建议最好是在驱动里调用,因为你有时候会修改驱动程序,而BSP部分一般来说尽量不要修改的。

那末在驱动的什么地方调用那,请赐教! [/quote]

其实还是在syslib.c程序里面调用。一般的做法是在你的驱动程序里面做一个子程序调用这两个函数,然后再在syslib.c里面调用你做的子程序,这样就行了。其实你只要看看例子就知道了。
------------------------------ [color=red]茶壶深爱着茶叶,表达爱意时却遭到拒绝,茶壶大吼:为什么?这一切都是为什么? 茶叶胆怯地说:俺妈说了,成天灌水的都不是好人。 ---别到处看,说你哪!!    [/color]
游客

返回顶部