我正在尝试使用Linux
为T1042D4RDB-64B
嵌入式板编译从https://github.com/qoriq-open-source/linux(版本4.9)获得的Yocto
内核。当前正在使用4.1.35-rt41
。
我遵循了以下步骤:
bitbake虚拟/内核-c cleansstate
bitbake虚拟/内核-c补丁
用我的新内核源代码(https://github.com/qoriq-open-source/linux)替换git文件夹
使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内核那样的丰富内核。
答案 0 :(得分:2)
内核配置:
通过 .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"
我从未尝试过最后一个,也不知道它是否有效或可能会破坏其他依赖项。
答案 1 :(得分:0)
我通过将Yocto版本从2.0升级到2.7找到了解决方案。我使用的版本是为我的主板(t1042d4rdb-64b)新设计的,包括Linux内核4.19.xxx。安装说明可以在这里找到 https://source.codeaurora.org/external/qoriq/qoriq-components/yocto-sdk/tree/readme?h=yocto_2.7