战乙女手机在线观看:BSP(Board Support Packet)是什么?

来源:百度文库 编辑:高校问答 时间:2024/05/05 02:40:25
BSP(Board Support Packet)是什么?
我太诚实,今天去见工被唬住了.

我就是写device driver的(从and/or/not开始), 不需要狗屁bsp. 他娘的!

"悬赏分:100"只是数字游戏, 不必太介意.

I DO know Dick. I DON'T know the man.

就说"Power Up Code"不就结了吗?起个名字怪吓人的.我还以为有多大的一个Packet, 里面有什么好吃的.
谢了!

"抓抓小耳朵"说的概括, "zwg33 - 魔法师"说的详细,真不知这100 fens该给谁, 你们投票吧.

BSP就是买开发板,开发板的生产商提供的一个资料和资源包

通常包括:

一 硬件相关:
1 开发板原理图
2 开发板元件列表
3 接口定义
4 地址分布

二 软件相关:
1 某些操作系统的bootloader及源代码
2 某些操作系统裁剪好的映像文件(如linux系列可能有源码,如WinCE可能有CEC文件)

三 服务相关
1 售后的技术支持(根据价格,差异很大)

但以上并非一定都有,根据生产商和芯片的不同,会有一定增减,建议按照自己的要求多比较

PS:这个问题其实不值那么多悬赏,呵呵,你也不富裕

呵呵,消消火气,这年头都是不懂的面试懂的,习惯了就好,下回主动唬他们,问他们知道DD不(device driver)
^-^

BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间的底层软件开发包,它主要功能为屏蔽硬件,提供操作系统的驱动及硬件驱动,具体功能包括:
·单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持;
·为操作系统提供设备驱动程序和系统中断服务程序;
·定制操作系统的功能,为软件系统提供一个实时多任务的运行环境;
·初始化操作系统,为操作系统的正常运行做好准备;
BSP在VxWorks系统中的地位见图1。
BSP文件在vxworks/target/config/all和vxworks/target/config/bspname文件夹里。其中,all文件夹里的文件是所有BSP的通用文件,bspname文件夹的文件是用户自己定制的BSP文件。
经过编译、链接,并在makefile和depend. bspname等文件的控制下,原程序最后将生成镜像。VxWorks的镜像可分为两类:可下载镜像和可引导镜像。
·可下载镜像(Loadable Image):实际包括两部分,一是vxWorks,二是boot ROM,两部分是独立创建的。其中boot ROM包括被压缩的boot ROM镜像(bootrom)、非压缩的boot ROM镜像(bootrom_uncmp)和驻留ROM的boot ROM镜像(bootrom_res)三种类型;
·可引导镜像(Bootable Image):是将引导程序和vxWorks融为一体的镜像,它常常是最终产品,包括不驻留ROM的镜像和驻留ROM的镜像两种类型。

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

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

函 数
函 数 功 能
所 在 文 件

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

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

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

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

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

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

UsrInit()
(a)对bss赋零;

(b)保存bootType于sysStartType;

(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.h和config.h中指定)

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

iosInit(),[ttyDrv()];

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

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

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

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

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

函数
函数功能
所在文件

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