我正在尝试使用Linux
为https://github.com/qoriq-open-source/linux嵌入式板编译从T1042D4RDB-64B
(版本4.9)获得的新Yocto
内核。当前正在使用4.1.35-rt41
。
我遵循了以下步骤:
bitbake虚拟/内核-c cleansstate
bitbake虚拟/内核-c补丁
用我的新内核源代码(https://github.com/qoriq-open-source/linux)替换git文件夹
make ARCH = powerpc menuconfig
bitbake虚拟/内核
结果是
新内核已成功编译,但uImage不包含我需要的驱动程序。新内核(deploy / images / t1042d4rdb-64b / rootfs.tar.gz)中只有4个驱动程序,它们是“ hid”,“ input”,“ misc”和“ staging”。
Linux kernel 4.9
中有很多驱动程序文件夹,例如gpio,gpu,蓝牙,连接器等。
问题是
如何导入新uImage所需的驱动程序并将其放入板中?或如何编译该内核并选择所需的模块/驱动程序?我想要像我的Ubuntu内核那样的丰富内核。
内核配置:
通过。config文件编译内核时,将选择驱动程序。您可以通过menuconfig配置内核(包括使用的驱动程序):
bitbake -c menuconfig virtual/kernel
现在,您需要说服bitbake使用这些有效的更改。为此,您需要强制编译内核:
bitbake -f -c compile virtual/kernel
最后,您可以编译图像并将其闪烁在目标上。
不过,这不会使更改永久生效。要使更改永久生效,您需要一个自定义层和一个bbappend文件。使用devtool做到这一点很容易。 yocto mega manual详细解释了该过程。在这里,我将仅说明最基本的步骤。运行
devtool modify virtual/kernel
将在本地分支上的build / workspace / sources / linux-mainline(假设您使用的内核称为kernel-mainline)内添加临时工作副本。您可以在此处进行所需的所有更改,然后在您的硬件上进行尝试。一旦感到满意并想要将这些更改添加到配方中,就需要提交这些更改。终于运行
devtool finish linux-mainline <path-to-your-layer>
将自动生成一个。bbappend和一个defconfig(.config)文件,并将其放入图层中。如果您想修补一些驱动程序等,则可能要看一下手册的kernel-dev部分。
内核版本选择:
我对此不太确定,但是应该这样工作:您需要一个内核的配方,该配方已经可以用作任何已知的bitbake层的配方。如果不确定,请查看openembedded layer index并搜索要使用的内核版本,下载配方并将其放入层中。最后,您需要告诉bitbake使用此版本。这可以在build / local.conf配置文件中进行:
PREFERED_VERSION_linux-mainline = "5.3.11"
我从未尝试过最后一个,也不知道它是否有效或可能会破坏其他依赖关系。