实验 2:创建自己的电路板支持包 (BSP)
BSP 包含特定于电路板中使用的组件/芯片的设备驱动程序集。 它们由组件供应商/芯片供应商提供,主要采用 .inf 和关联的 .sys/.dll 文件形式。
在以下情况中创建新的电路板支持包 (BSP):
创建新的硬件设计
替换现有硬件设计上的驱动程序或组件
无论是创建新 BSP 还是修改现有 BSP,你都将成为所有者。 这使你可以决定是否允许在电路板上安装更新。
在实验中,我们将基于 Raspberry Pi 2 创建新的 BSP,删除现有 GPIO 驱动程序并将其替换为示例 GPIO 驱动程序:GPIO KMDF 演示。
创建新的 BSP 工作文件夹
从 IoT 核心版 Shell 创建要使用 Add-IoTBSP 修改的 BSP 工作文件夹。
Add-IoTBSP MyRPi2 (or) newbsp MyRPi2
将包添加到功能清单中
打开新 BSP 的功能清单文件
C:\MyWorkspace\Source-arm\BSP\MyRpi2\MyRpi2FM.xml
。在另一个窗口中,打开 Raspberry Pi 2 功能清单以用作模板。
添加基本包 (BasePackages)。
启动分区的 UEFI 驱动程序 (RASPBERRYPI.RPi2.BootFirmware.cab)
UpdateOS 所需的驱动程序 (SV.PlatExtensions.UpdateOS.cab)
必需的设备驱动程序 (bcm2836sdhc.cab、dwcUsbOtg.cab、rpiq.cab)
创建自己的 BSP 时,通常需要使用显示器驱动程序和存储驱动程序,有时需要网络驱动程序。
特定于设备的自定义项
复制设备布局包和平台包 (DeviceLayoutPackages、OEMDevicePlatformPackages)。
请注意,可以将 OEMDevicePlatform.xml 和 devicelayout.xml 打包到一个包中,例如 DeviceLayout.MBR4GB。 然后,可以在两个部分(例如
<OEMDevicePlatformPackages>
和<DeviceLayoutPackages>
下)中指定此包作为输入。 若要了解详细信息,请参阅设备布局。复制功能(功能)。
复制所需功能。 排除不适用于项目的任何内容。
例如,除了现有 GPIO 驱动程序以外,复制其他每个驱动程序:
<PackageFile Path="$(mspackageroot)\Retail\$(cputype)\$(buildtype)" Name="RASPBERRYPI.RPi2.GPIO.cab"> <FeatureIDs> <FeatureID>RPI2_DRIVERS</FeatureID> </FeatureIDs> </PackageFile>
注意:若要轻松对包进行分组,可以将它们合并到一个或多个功能 ID 中。 例如,所有 Raspberry Pi 2 可选驱动程序使用功能 ID RPI2_DRIVERS。
添加 HelloBlinky 驱动程序
<PackageFile Path="%PKGBLD_DIR%" Name="%OEM_NAME%.Drivers.HelloBlinky.cab"> <FeatureIDs> <FeatureID>BLINKY_DRIVER</FeatureID> </FeatureIDs> </PackageFile>
创建新的产品文件夹
创建新的工作产品文件夹,将 BSP 名称添加到末尾。
newproduct ProductC MyRpi2
这将创建文件夹
C:\MyWorkspace\Source-<arch>\Products\ProductC
,它链接到新的 BSP。
更新项目的配置文件
使用 Add-IoTProductFeature 更新产品测试配置文件
Add-IoTProductFeature ProductC Test BLINKY_DRIVER -OEM (or) addfid ProductC Test BLINKY_DRIVER -OEM
生成和测试映像
生成映像
从 IoT 核心版 Shell 创建映像:
buildimage ProductC Test
这会在
C:\MyWorkspace\Build\<arch>\ProductC\Flash.ffu
中创建产品二进制文件。启动“Windows IoT 核心版仪表板”>“设置新设备”>“自定义”,并浏览到你的映像。
将 Micro SD 卡置于设备中,选择它并接受许可条款,然后单击“安装”。 这会将上一个映像替换为新映像。
将卡置于 IoT 设备中,然后启动设备。
片刻后,设备会自动启动,你应会看到你的应用。
检查驱动程序是否正常工作
- 使用你好,Blinky!实验中的测试过程来测试驱动程序。