新增既有厂商硬件指南¶
本篇章介绍如何在已有厂商下新增新硬件。
新增既有厂商硬件¶
厂家或者实例层已经有示例版的 Machine.conf 的情况下我们只需要在现有的基础上定制即可,示例层基本已经把所必须的启动相关固件等镜像做了打包实现。需要的准备工作如下:
连接主机(窗口1)按照以下流程准备编译工程
# 按照初始化工程,以下initdir可以换成自己的命名 oebuild init initdir # 如果用自己fork的仓库可以加 -u <url> -b <branch> 指定自己链接与分支 # 下载必须layer以及docker cd initdir && oebuild update # 新增开发板的oebuild单板配置:在yocto-meta-openeuler/.oebuild/platform/下参考对应的模板内容新建一个自己命名的板子,如xyz-abcd.yaml。 cd src/yocto-meta-openeuler/.oebuild/platform/; cp orangepi5.yaml xyz-abcd.yaml # 修改xyz-abcd.yaml的内容machine变量为自己的机器名如xyz-abcd,修改后返回,创建并进入编译环境。 cd -; oebuild generate -p xyz-abcd;cd build/xyz-abcd && oebuild bitbake
打开窗口2或者vscode,切换到主机的initdir/src/yocto-meta-openeuler,在bsp/meta-openeuler-bsp/conf/machine下,参考其他的已存在的模板,新增自己板子的xyz-abcd.conf,引用默认配置后修改参数主要如下:
KERNEL_DEVICETREE: 设备树名,也就是传递过去make的构建设备树目标,如果需要构建特殊镜像如rockchip的boot.img可以指定ROCKCHIP_KERNEL_DTB_NAME。
UBOOT_MACHINE:指定uboot编译使用的defconfig。
KBUILD_DEFCONFIG:内核的defconfig预配置,如果是rk的3399,3568,3588也可以置空,此时会由OPENEULER_KERNEL_CONFIG决定传进去的文件。
WKS_FILE:用于创建分区映像文件的位置;可以自己增加自定义的WKS_FILE以解决具体的分区大小等信息。(可选,用于定义wic镜像)
增加自定义设备树与内核配置:
# 完成上述操作后,在容器环境(窗口1)中下载对应的内核 bitbake virtual/kernel -c fetch # 下载完成后,在主机中(窗口2)把abcd的设备树放到内核中的对应位置 cp abcd.dts* initdir/src/xxx-kernel/arch/<对应架构>/boot/dts/<vendor>/ # 在主机中(窗口2)如果上面指定了KBUILD_DEFCONFIG,请把对应的文件复制过去 cp xxxx_defconfig initdir/src/xxx-kernel/arch/<对应架构>/configs/ # 编译镜像:在容器环境(窗口1)中编译镜像,然后烧录测试 bitbake openeuler-image # 如果希望在社区中开源可以把社区的xxx-kernel fork到自己仓库,把增加了设备树的内核仓库推到自己仓库,并提PR即可