当嵌入式开发人员获得一个板或芯片时,它通常被绑定到一个板支持包(BSP)或软件开发工具包(SDK)。那么这两者有什么区别呢?乍一看,没那么多。这是因为它们通常包含相同类型的项目,包括关于目标平台的文档、具有匹配的应用程序编程接口(API)的运行时支持,可能还有一些支持库和工具。
通常,主要的区别是BSP以硬件为目标,通常是一个特定的板或系列板,而SDK可以以硬件或软件为目标。
BSP提供了一种使用BSP提供的API访问和配置硬件的方法。现在,它由一组C或c++头文件组成。微控制器的BSP通常被设计成支持“裸金属”应用程序或那些没有标准操作系统运行的应用程序。应用程序可以利用中断并实现自己的操作系统。
对于SDK,在软件方面,目标可以是API,中间件或操作系统。当然,中间件和操作系统可以为不同的功能区域具有许多API。针对硬件的SDK通常包括或支持一个或多个BSP。
SDK通常构建在标准接口或加载器(如BIOS或UEFI系统)之上(参见“拜拜BIOS。你好UEFI”)。最新的PC兼容主板使用UEFI以及许多嵌入式主板和模块。
通常,sdk比BSP包含更多的库支持。BSP的库或多或少地支持这个目标,很多时候提供了连接到硬件加速器的钩子,比如加密支持。SDK库的特点通常是算法不绑定到底层硬件;例如,SDK可能包含FFT或排序算法。
两者之间的另一个区别是,sdk可能会隐藏底层硬件,而BSP会暴露底层硬件。最重要的是,sdk有时会隐藏在像嵌入式开发工具包(EDK)或类似的变体后面。
在任何情况下,BSP或SDK的设计都是为了减少应用程序上市的时间。