6 添加新机器

向 Yocto Project 添加新机器的过程并不复杂。本节介绍如何添加与现有受支持 机器相似的机器。

备注

Yocto Project 完全有能力支持全新架构,但这可能需要修改 gcc、 glibc 和站点信息,超出了本手册范围。

添加新机器的完整示例见 Yocto Project 板级支持包(BSP)开发指南的 “使用 bitbake-layers 创建新 BSP 层” 一节。

6 添加机器配置文件

添加新机器需要在层的 conf/machine 目录中添加机器配置文件,其中提供 所添加设备的详细信息。

OpenEmbedded 构建系统使用机器配置文件去掉扩展名后的名称引用新机器。 例如,配置文件为 crownbay.conf 时,构建系统将机器识别为 "crownbay"。

必须在机器配置文件中设置,或从下级配置文件中引入的最重要变量如下:

可能还需要以下变量:

这些变量的完整说明见参考部分。可以参考 meta-yocto-bsp/conf/machine/ 中已有的机器 .conf 文件。

6 为机器添加内核

OpenEmbedded 构建系统必须能够为机器构建内核。需要为机器创建新内核配方, 或扩展已有内核配方。源码目录的 meta/recipes-kernel/linux 中有多个 可供参考的内核配方示例。

创建新内核配方时,设置 SRC_URI 遵循通常的配方编写规则:指定所有 必要补丁,并将 S 指向源码。需要创建 do_configure 任务,通过 defconfig 文件配置解包后的内核。可运行 make defconfig, 更常见的做法是复制合适的 defconfig 文件后运行 make oldconfig。 通过 inherit kernel,并按需使用部分 linux-*.inc 文件,大多数其他 功能都已有集中实现,类的默认行为通常可以满足需要。

扩展已有内核配方时,通常只需添加适当的 defconfig 文件。应将其放在与 该配方中其他机器的 defconfig 文件类似的位置。一种可行做法是在 SRC_URI 中列出文件,并将机器加入 COMPATIBLE_MACHINE 表达式:

COMPATIBLE_MACHINE = '(qemux86|qemumips)'

defconfig 文件的更多信息见 Yocto Project Linux 内核开发手册的 “修改配置” 一节。

6 添加外形规格配置文件

外形规格(formfactor)配置文件提供镜像目标硬件的信息,以及构建系统无法 从内核等其他来源获取的信息。例如,帧缓冲方向、系统是否有键盘、键盘与屏幕 的相对位置以及屏幕分辨率。

多数情况下,构建系统的默认值已经合理。如果需要定制,则应在 meta/recipes-bsp/formfactor/files 目录中创建 machconfig 文件。 该目录包含 qemuarm、qemux86 等具体机器的子目录。可用设置和默认值 见同一区域的 meta/recipes-bsp/formfactor/files/config 文件。

以下是 "qemuarm" 机器的示例:

HAVE_TOUCHSCREEN=1
HAVE_KEYBOARD=1
DISPLAY_CAN_ROTATE=0
DISPLAY_ORIENTATION=0
#DISPLAY_WIDTH_PIXELS=640
#DISPLAY_HEIGHT_PIXELS=480
#DISPLAY_BPP=16
DISPLAY_DPI=150
DISPLAY_SUBPIXEL_ORDER=vrgb