VxWorks操作系统指南(2.3) 板级支持包BSP

1.1.板级支持包BSP

      板级支持包BSP负责目标板硬件的初始化,实时内核的载入等。

     对于硬件初始化的顺序,大致可按下表中形式进行:

  

     

sysInit()

(a)锁住中断;(b)禁用缓冲;

(c)用缺省值初始化系统中断表(仅i960);

(d)用缺省值初始化系统错误表(仅i960);

(e)初始化处理器寄存器到一缺省值;

(f)使回溯失效;(g)清除所有悬置中断;

(h)激活usrInit(),指明启动类型。

sysALib.s

UsrInit()

(a)bss赋零;

(b)保存bootTypesysStartType;

(c)调用excVecInit(),初始化所有系统和缺省中断向量;

(d)依次调用sysHwInit(),  usrKernelInit(),kernelInit().

usrConfig.c

usrKernelInit()

依次调用classLibInit(),taskLibInit(),taskHookInit(),semBLibInit(),semMLibInit(),semCLibInit(),semOLibInit(),wdLibInit(),msgQLibInit(),qInit(),workQInit()

usrKernel.c

kernelInit()

初始化并启动内核。

(a)激活intLockLevelSet();

(b)从内存池顶部创建根堆栈和TCB

(c)调用taskInit(),taskActivate(),用于usrRoot();

(d)调用usrRoot().

kernelLib.c

UsrRoot()

初始化I/O系统,驱动器,设备(在configAll.hconfig.h中指定)

(a)调用sysClkConnect(),sysClkRateSet(),

iosInit(),[ttyDrv()];

(b)初始化excInit(),logInit(),sigInit().

(c)初始化管道,pipeDrv();

(d)stdioInit(),mathSoftInit()mathHardInit()

(e)wdbConfig():配置并初始化目标代理机

usrConfig.c

 

    在大多数目标板的板级支持包中,VxWorks的入口点由两个函数:romInit()romStart()来完成,而非sysInit()。具体基于ROMVxWorks的初始化过程如下表所示:

函数

函数功能

所在文件

1.romInit()

 

 

 

 

2.romStart()

 

 

 

 

3.usrInit()

 

4.usrKernelInit()

5.kernelInit()

 

6.usrRoot()

 

7.Application routine

(a)禁止中断;

(b)保存启动类型;

(c)硬件初始化;

(d)调用romStart();

 

(a)将数据段从ROM拷贝到RAM,清内存;

(b)将代码段从ROM拷贝到RAM,有必要的话解    压缩;

(c)调用usrInit();

 

初始化程序

 

如果相应的配置文件被定义,对应函数被调用

 

初始化并启动内核

 

初始化I/O系统,驱动器,创建设备

 

应用程序代码

romInit.s

 

 

 

 

bootInit.c

 

 

 

 

usrConfig.c

 

usrKernel.c

 

kernelLib.c

 

usrConfig.c

 

Application source file

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值