Drv之VxBus Driver的加载过程

2021-01-22 10:58:15 浏览数 (1)

VxBus Driver的初始化一般分为三步,入口函数通常使用xxxRegister()的形式。如果VxWorks启动之后再去调用它 - 例如在usrAppInit()里,它的加载过程会比较简单。

而WindRiver默认提供的Driver,都是在OS的启动过程中加载的。通常,xxxRegister()是在sysHwInit()中注册,具体的位置由CDF文件决定。其第一步初始化(*devInstanceInit)随后被调用,例如X86的PCI Device,就是在注册PCI Host Controller的Driver时调用。所以,所有PCI Device的Driver都会在这个Controller之前被注册

这个注册过程大致是

代码语言:javascript复制
$(BSP)/sysALib.s/sysInit() -> 
$(prj)/prjConfig.c/usrInit() -> 
$(BSP)/sysLib.c/sysHwInit() -> 
$(prj)/prjConfig.c/hardWareInterFaceInit() -> 
$(prj)/prjConfig.c/hardWareInterFaceBusInit() -> 
$(driver)/xxxRegister()

而后两步初始化操作,都是在sysHwInit2()里调用的。区别是:第二步的(*devInstanceInit2)是直接被调用;而第三步的(*devInstanceConnect)是在一个新任务中调用,这就导致它的真正执行时机很可能就是OS把所有功能都加载完成之后了

详细的调用关系如下图

这正是:

自动加载有先后,伴随系统三步走。

我是泰山 专注VX 0x10年

一起学习 共同进步

0 人点赞