![Rank: 8](images/default/star_level3.gif) ![Rank: 8](images/default/star_level3.gif)
- UID
- 872238
|
![](http://images.eccn.com/silabs/silicon_chip_980x60_202203.jpg)
实时操作系统的驭动程序与PC的相类似eR TOS通常在BSP定义了一套自己的驱动程序接口,根据这些接口写相应的驱动程序。当然RTOS与硬件较紧密,灵活性较大,开发人员完全可以抛开它提供的接口而自己编写骆动程序.这同直接在C代码中调用BIOS提供的底层功能(如BIOS中断)编写程序类似。BSP通常可以认为是基于硬件平台的。当开发某个平台且与硬件相关的程序时,往往不得不从设置某个寄存器的某个位开始编程。在嵌人式领城,这种情况更为明显,几乎所有的设备控制和各种协议控制都在同一个嵌人式CPU核当中,非常有利于对CPU核和设备进行抽象.如果能对CPU核和设备的各种控制进行抽象,则人们在移植OS或者开发驭动程序时,就没有必要对CPU进行非常深入的了解,不必要了解某个寄存器的某个位是控制什么的,也没有必要了解怎样初始化某个控制寄存器等等。因此,BSP是一种能为程序开发人员提供对硬件进行描述性操作的开发支律库。描述性操作是指在控制硬件时只需知道要完成什么,而不需要知道如何去完成,每个操作都是一些单一的动作.例如:对于设置一个串口的波特率,只需要知道是哪个申口,波特率是多少,而不需要知道要写哪一个寄存器以及如何写等。在利用BSP编写驱动程序时,编程人员只需要了解该驱动程序的初始化顺序以及初始化的内容,而不需要了解初始化的具体细节就能完成驱动程序。可以大大地提高工作效率。并且对于硬件的具体细节设1l`是在驱动程序中最容易出错的地方,而利用BSP支撑库则可以大大地减少出堵的可能性。在BSP支排库中,除了包含对硬件的描述性操作部分的代码外,还包含了对目标板的初始化部分、中断管理部分以及一些简单的驱动程序程序单元。这样的BSP可以不依赖于任何操作系统和骆动程序,但是可以作为操作系统和驱动程序的开发支排库,可以非常方便地移植或者开发操作系统与驱动程序。在最好的情况下,操作系统与骆动程序的移植只需要更换相应平台下的BSP支排库即可完成移植。BSP是对目标系统的软件支持,是一些硬件具体的函数的集合,主要完成下面的功能:
(1) 在系统启动时,对目标系统进行硬件初始化;
(2) 提供对目标系统设备的接口.如时钟、Ethernet控制器、串行芯片和SCSI控制器在PSOS 中,对于不同的开发系统,其不同的特性在板级支持包BSP的bsp.h 文件中作了具体的定义。例如基本特性,包括处理器类型BSP_CPUFAMILY(PoweiTC,68000,X86和1960等),具体的处理器(PPC604和PPC603等),还有浮点支持BSP_FPU,字符模式选择BSP间的开始地址。其它的如串行通道特性、LAN接口特性ENDIAN等,BSP_RAM_BASE RAM空、共享存储器通信以及板级支持包参数设定的缺省值。bsp.h ,bspcfg.h 和bspcfg.c 文件提供了在应用程序编译时对某些BSP特性进行配置是必要的。BSP进行配置的选项和实现。应用程序对例如,BSP_ LANI表明BSP是否需要LAN驱动,可以设置为是或否。这个参数会被多个文件使用,包括是否编译和建立LAN驱动,让操作系统支持LAN操作目标系统在复位后,要做的第一项工作就是对硬件设备进行初始化,执行Hwdinit函数。该函数完成在C中无法进行的初始化任务,Initboard函数在C代码继续板级初始化,这通常被称为硬件初始化(hardware
initialization),相应的sysinit函数完成非硬件初始化任务(software initialization)。在Hwdinit中BSP中对具休的处理器配置步骤如下
(1) 设置MSR,包括校验、优先级模式、禁止中断、禁止地址转换。即
extern unsigned long ppcMSRrd(void);
(2 )给减计数器处置,调用ppcDECwr,把值写人DE(,即
exter nvoid ppcDECwr(unsignedl ongv alue);
(3) 禁止指令和数据Caches,即
exter nunsigned long SysDcachelnhibit(void);
exter nvoid SysIcacheInhibit(void);
(4) 初 始 化核心寄存器,包括MachineS tatusR egister( MSR) //机器校验使能,中断可恢复
Instruction Support Control Register (ICTRL) / /开 发 端 口捕 获 使能
Debug Enable Register (D ER O) // 关 闭调 试 中 断
Interrupt Cause Register( ICR ) / /关 闭中 断 事 件
Internal Memeory MapRegister (IMMR ) // 设 里 内部 存 储 区 地 址
System Interface Unit (SIU )
Module Configuration Register ( SIUMCR )
Reset Status Register RSR) //复 位 状 态 控制 |
|