6 添加新机器
向 Yocto Project 添加新机器的过程并不复杂。本节介绍如何添加与现有受支持 机器相似的机器。
备注
Yocto Project 完全有能力支持全新架构,但这可能需要修改 gcc、
glibc 和站点信息,超出了本手册范围。
添加新机器的完整示例见 Yocto Project 板级支持包(BSP)开发指南的 “使用 bitbake-layers 创建新 BSP 层” 一节。
6 添加机器配置文件
添加新机器需要在层的 conf/machine 目录中添加机器配置文件,其中提供
所添加设备的详细信息。
OpenEmbedded 构建系统使用机器配置文件去掉扩展名后的名称引用新机器。
例如,配置文件为 crownbay.conf 时,构建系统将机器识别为 "crownbay"。
必须在机器配置文件中设置,或从下级配置文件中引入的最重要变量如下:
TARGET_ARCH,例如 "arm"
PREFERRED_PROVIDER_virtual/kernelMACHINE_FEATURES,例如 "screen wifi"
可能还需要以下变量:
SERIAL_CONSOLES,例如 "115200;ttyS0 115200;ttyS1"
KERNEL_IMAGETYPE,例如 "zImage"
IMAGE_FSTYPES,例如 "tar.gz jffs2"
这些变量的完整说明见参考部分。可以参考 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