赞
踩
当我们考虑操作系统和处理器体系结构之间的统一接口是如何实现的?即操作系统内核对处理器的抽象的实现。毫无疑问答案当然是搞处理器的寄存器配置。当然统一接口的实现不仅仅是寄存器配置,还有中断创建等等。
在通用计算机中完成统一接口任务的是BIOS,这里BIOS和操作系统是分开的,在通用计算机中的BIOS中有一个引导程序,这个程序会去读你电脑的硬盘、U盘或者软盘,上面有没有引导记录,如果有就让引导记录把操作系统装入电脑。
而在嵌入式系统中一般没有BOIS,会有另外一个东西BSP(Board Support Package板极支持包)。
BSP是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统的一部分,BSP是在标准开发版上运行的一部分软件,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板, 在嵌入式系统软件的组成中,就有BSP,BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写。
BSP主要功能是支持操作系统的引导与开发,通过BSP我们可以在开发板上快速的启动操作系统以及分析操作系统的性能。有了BSP的支持,各个OEM(原始设备制造商)厂商和独立硬件开发商就可以缩短基于Windows CE 平台产品的开发周期。
BSP最基本的是对处理器进行抽象,再丰富一点会包括其他硬件设备。
BSP针对处理器结构进行抽象也称为处理器初始化,主要就是根据操作系统的要求设置寄存器,调整处理器的核心工作模式和局部总线模式,这些工作的主要部分一般都是由处理器的设计厂商来完成,他们会将相关的指令、参数等封装成操作系统能够理解的各个函数(可执行文件),作为文件的形式打包给到主流的操作系统。同时如果开发者想要进行修改或者优化,处理器厂商也会提供相关的开发工具。另一方面,对于像Linux这样庞大生态的操作系统,开源社区或者一些第三方也会提供一些开发工具给到开发者,总之我们面对主流的操作系统,如果要写BSP并不是从0开始,而是基于一个比较完善的东西进行修改或者优化,自己写一套可执行的文件给操作系统用,这件事是否容易要看你搞的这个处理器的寄存器和指令集数量是不是多。
Android在移动平台、物联网场景中的应用已十分广泛,成熟的生态使得开发者不断在Android上开发着各种软件,谷歌也在大力推进着开源软件项目AOSP。不过在OS和主板硬件之间,BSP在嵌入式系统中对硬件设备的表现却有着不小的影响。“Android会定义一些硬件抽象层,为不同的硬件做适配。一个真正的Android,无论是在手机或者任何设备上去跑,它还需要一个层次,也是板级的支持套件或者支持软件,叫做BSP。”
英特尔要做的,就是构建一个开放的BSP,并为此成立了名为“Celadon”的开源Android项目——可用于英特尔架构的开源Android软件参考软件栈。Celadon基于标准的Android软件栈,构建在Linux内核之上,包括丰富的Android库和框架,以及针对硬件优化的组件。同时,英特尔还为Celadon开发了很多不同的硬件抽象层(HAL)接口和驱动程序,以实现功能扩展和硬件加速。由于 Celadon与AOSP、kernel.org有着紧密联系,并且通过Android的CTS(兼容性测试套件)和VTS(供应商测试套件)运行堆栈,这就让用户得以在最新的英特尔硬件平台上能够最快使用到最新的Android稳定版本进行开发。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。