This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3352:使用 meta-Arago/meta-ti 和自定义层时的 defconfig 问题

Guru**** 2553700 points
Other Parts Discussed in Thread: AM3352

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/576374/linux-am3352-defconfig-problems-when-using-meta-arago-meta-ti-and-a-custom-layer

器件型号:AM3352

工具/软件:Linux

您好!

我在尝试使用我自己的 defconfig 为定制的 am3352板配置 linux-ti-staging-4.9内核时遇到了相当困难。

我已经使用 Arago 的"设置构建环境 "页面上的步骤设置了 meta-Arago 集中式构建环境、但我使用的是 Linaro 6.2.1-2016工具链而不是 Linaro 5.3-2016工具链、我使用了 Arago-morty-next 配置进行层配置。

我还为电路板添加了一个定制层(我使用 Yocto 项目的 Yocto-BSP 工具创建的、位于不同目录中)、名为 meta-custom、并添加了我的 defconfig (实际上是我为4.9.10内核制作的完整.config)和针对 meta-custom/ti-kernel/linux-4.9配置的特定于电路板的补丁。 meta-custom/meta-kernel/Linux 中的 linux-ti-staging_4.9.bbappend 文件如下所示:

FILESEXTRAPATHS_PREPEND:="${THISDIR}/${PN}-4.9:"

SRC_URI +="文件://defconfig"
SRC_URI +="文件://0001-added_support-for-my-board.patch"

对于 meta-custom/conf/machine/中的 custom.conf 机器配置、我需要 meta-ti/conf/machine/include 中的 ti33x.inc。 我认为这是我大多数问题的根源、因为这包括声明 SOC_family ="ti33x"、这似乎强制 meta ti/prometa-kernel/linux-ti-stage-4.9/t33x/进行 defconfig。 从那里、defconfig (以及最终的.config)看起来是从 tisdk/build/Arago-tmp-extern-linaro-toolchain/work / custom-linux-gnueabi/linux-ti-staging /4.9.10+gitblahblahblah/build/sources/ti_config_frages/using defconfig_builder.sh 脚本中的 defconfig 片段生成的 defconfig 片段。

在我的图层的 layers.conf 中、我将 BBFILE_PRIORY_CUSTOM 更改为等于"11"、并已将图层添加到 tisdk/build/conf/中 bblayers.conf 文件中的 BBLAYERS 变量的末尾

我能够成功完成针对电路板的 bitbake 内核镜像-最小化构建、但内核工作目录中的.config 文件与我的 defconfig 不同、我认为这是由于 defconfig_builder.sh 脚本覆盖了我的 defconfig、因此不能为我的电路板生成正确的内核。 有人可以帮助我纠正这种情况吗?

谢谢、

Jon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Jon、

    我认为构建系统不会为您提供 defconfig 文件。 层内有许多方法内核目录。 请检查 OE 构建系统采用哪一个、并将您的更改应用于此系统。

    此致、
    Kemal
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    问题是我正在执行一个 Linux - ti-分段内核程序的附加操作。 那么、最终会发生什么情况呢? 嗯、执行命令

    bitbake -e linux-ti-staging | grep "SRC_URI="

    构建内核后、显示了答案

    SRC_URI=" git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git;协议=git;分支=ti-lsk-linux-4.9.y       文件://defconfig 文件://defconfig 文件://0001-added-support-for-my-board.patch"

    第一个 defconfig 来自 meta-ti 层的 linux-ti-staging _4.9配方、第二个 defconfig 来自我的层。  TI defconfig 由 meta-ti/meta-ti/meta-kernel/linux/setup-defconfig.inc 中的脚本挑选、这是 TI 的 Linux-ti-staging _4.9食谱(食谱中的第9行)所要求的。  当 tisdk/build/Arago-tmp-external-linaro-toolchain/work / custom-linux-gnueabi/linux-ti-stag/4.9.10+gitAUTOINC+1c74e8801c-r22a.arago5/包含一行"use-tisdk-config_am3x"时、所有情况都显示为 true。  因此、尽管我的 defconfig 包含在 SRC_URI 中、但它不会被使用、因为它不是我之前提到的脚本看到的第一个 defconfig。

    我是如何解决这个问题的?  我将 TI 的 Linux-ti-staging _4.9配方中的内容复制到我自己的 linux-ti-staging _4.9.bb 中、删除了所有与非 ti33x 相关的行(其中相当一部分)、并将我的补丁附加到 SRC_URI。  这迫使我使用我的配方而不是 TI 的配方、并导致使用我的 defconfig 构建内核。

    如果您面临相同或类似的问题、您可以问自己以下一些问题:

    1) 1)您的 conf/bblayers.conf 中是否包含 meta-ti?

    2) 2)您的层是否包含在 conf/bblayers.conf 中?

    3) 3)您是否为器件(MACHINE=mydevice)构建了 bitbake?

    4) 4)您是附加到 Linux-ti-staging 配方、还是使用自己的配方代替 TI 配方?  根据我的经验、您需要使用自己的配方。

    5) 5)构建内核后、SRC_URI 包含什么(bitbake -e linux-ti-staging | grep "SRC_URI=")?

    6) 6)您是否检查了您的配方中的拼写错误?

    注意事项:

    1) 1)当我仍在尝试附加到 TI 内核配方时、我尝试了

    SRC_URI_REMOVE ="文件://defconfig"

    SRC_URI +="文件://defconfig"

    remove 从 SRC_URI 中删除""之间指定的所有实例;这包括我的 defconfig 和 TI 的 defconfig。

    2)在我的附加文件中包含 use-tisdk-config=""没有任何作用(至少我确实注意到了这一点)。

    3) 3)将以下匿名 python 函数添加到我的附加文件的末尾确实删除了 TI defconfig、但不会在 setup-defconfig.inc 中的脚本使用它之前删除。

    Python (){

    SRC_Uri = d.getVar ('SRC_URI'、True)

    SRC_Uri = src_Uri.replace("文件://defconfig"、""、1)

    d.setVar('SRC_URI'、src_uri)

    如果其他人有更好的解决方案或任何其他“做什么或不做什么”,我很感谢您的回答:)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="c0wb0y"]如果其他任何人有更好的解决方案或任何其他"做什么或不做什么",我希望您的回答:)

    我有一个类似的问题、除了我不使用 Arago、而是在添加 meta-ti 层后在 Yocto 中构建它。 一段时间内、我无法将内核配置片段放入.config (在我自己的.bbappend 配方 linux-ti-staging _%.bbappend 中执行操作)。 然后 、在研究"meta-ti/petia-kernel/linux/setup-defconfig.inc"中的代码后、我注意到、它希望我的内核配置片段还会列在这个变量"kernel_config_frages"中。 然后、我在我的配方中添加了它们:

    kernel_config_fragments +="${workdir}/rpmsg_client_samples.cfg \
    ${workdir}/unset_uio_and_prueth.cfg \
    "

    一切都开始完美地工作。 无需复制 TI 配方并将其放入我的层中、我只需使用.bbappend 文件即可。