BSP(Board Support Package),板级支持包,也称为硬件抽象层HAL或者中间层。
它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。
BSP是相对于 *** 作系统而言的,不同的 *** 作系统有不同定义形式的BSP,要求BSP所实现的功能也有所不同。
在嵌入式Linux系统中,主要是初始化底层硬件并引导 *** 作系统;同时,BSP又是和硬件相关的,还要考虑对硬件的初始化 *** 作。这些初始化 *** 作主要是对CPU、内存、中断等相关的寄存器及协处理器进行正确的配置。
在不同的开发阶段,因为核心和文件系统所处的位置不同,BSP所要完成的工 作也有所不同;在开发调试阶段,BSP要能够与主机通信并从主机下载核心;在目标产品中,BSP要能够从非易失存储设备中加载核心。
扩展资料
BSP有两个特点:硬件相关性和 *** 作系统相关性。
设计一个完整的BSP需要完成两部分工作:
A、 嵌入式系统的硬件初始化和BSP功能。
片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。
板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。
系统级初始化:以软件为主的初始化过程,进行 *** 作系统的初始化。
B、 设计硬件相关的设备驱动。
简单点说Linux BSP开发就是把Linux在某个板子上跑起来。这个板子不一定是ARM的,可能是任何一个arch的,比如PPC/MIPS,甚至x86也可以算上,还有一些比较少见的像SPARC/ColdFire之类的。
题主可能比较疑惑BSP应该开发到什么程度是吧?也就是说要把Linux跑到什么程度?是有个串口能跑shell就可以了?还是网络、USB什么的都要全弄起来?
据我了解(我隔壁就是BSP Team),跑到什么程度,看公司(客户、老板)的开发要求,同时也看公司有没有上层的开发人员专门管这些事情。
比如,你这个板子只用在很简单的环境里,网络、USB都不需要,那么串口能起来就基本可以了。但是如果恰好客户有要求网络必须是OK的,那做BSP的人一般就要把网络也调通,如果客户要求USB能用,那么做BSP的人可能也要弄USB。
实际开发过程中,BSP开发的边界在哪,看老板、客户的要求。
一般来说开发流程,初始化CPU、内存这些是第一步,然后是串口、shell、文件系统也要起来,然后就是根据需求是否要调一些基本的驱动了。
我见过有些板子,客户只要最基本的东西,这种BSP开发很轻松,但是有些板子,连USB-OTG都要起来,那么开发BSP的人就很苦逼,因为USB-OTG太难搞了,但没办法,只能硬着头皮去学、去搞。
BSP开发的边界就是没边界,当然,有些公司比较好,会专门招几个驱动工程师,这种公司里,开发BSP的人会稍微轻松点,搞不定的就丢给写驱动的人了——就是我这样的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)