BSP(Board Support Package),板级支持包,也称为硬件抽象层HAL或者中间层。

它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。
BSP是相对于操作系统而言的,不同的操作系统有不同定义形式的BSP,要求BSP所实现的功能也有所不同。
在嵌入式Linux系统中,主要是初始化底层硬件并引导操作系统;同时,BSP又是和硬件相关的,还要考虑对硬件的初始化操作。这些初始化操作主要是对CPU、内存、中断等相关的寄存器及协处理器进行正确的配置。
在不同的开发阶段,因为核心和文件系统所处的位置不同,BSP所要完成的工 作也有所不同;在开发调试阶段,BSP要能够与主机通信并从主机下载核心;在目标产品中,BSP要能够从非易失存储设备中加载核心。
BSP有两个特点:硬件相关性和操作系统相关性。
设计一个完整的BSP需要完成两部分工作:
A、 嵌入式系统的硬件初始化和BSP功能。
片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。
板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。
用linux。因为嵌入式首先要保证稳定性,而安卓的碎片化和兼容性一直是弊病。linux有稳定的开源社区,有众多爱好者的无偿支持,以及极佳的稳定性,是嵌入式的首选。而安卓应用的娱乐功能较强悍,电视的嵌入系统既有安卓,也有linux,对电视来说,安卓更佳。
因为LINUX的先天优势导致嵌入式开发大多采用LINUX系统:
1.开源,代码开放,省去了自己编写的麻烦,节约成本而且不会涉及到专利和产权纠纷。
2.功能齐全,对于很多硬件设备都有丰富的驱动程序,只需要移植一下,不需要改动太多。
3.稳定,linux确实比windows要稳定。
4.对于大多数芯片,都有裁剪的配置文件,在Linux内核源代码下,arch/arm/configs中有许多芯片的配置文件。
5.Linux分而治之的思想,可以使得驱动和应用程序并行开发,加快开发速度。
(1)引导加载程序,包括固化在固件中的boot代码和bootloader两大部分。有些cpu在运行bootloader之前会先运行一段固化程序,比如x86的CPU会先运行bios中的固件,然后才运行硬盘的第一个分区(MBR)中的bootloader,但是在大多的嵌入式系统中,是没有固件的,bootloader就是上电后执行的第一个程序。
特定于嵌入式板子的定制内核以及内核的启动参数,内核的启动参数可以是内核默认的,也可以是由bootloader传递给它的。
包括根文件系统和建立于Flash内存设备上的文件系统,里面包含了linux系统能够运行所必须的应用程序、库等等,比如可以给用户提供LInux的控制界面shell程序、动态链接的程序时所需要的glibc或uClibc库等。
特定于用户的应用程序,它们也存储在文件系统中,有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面,常用的嵌入式GUI有:Qtopia和MinGUI等。显然,在嵌入式系统的固态存储设备上有相应的分区来存储它们。