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/AM4378:为何两者都执行??IT&#39令人难以置信。

Guru**** 2614265 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581722/linux-am4378-why-both-them-executed-it-s-unbelievable

器件型号:AM4378

工具/软件:Linux

在 u-boot 源码中、我在下面写入一些代码

因为我想知道天气 CONFIG_SPL_Build 是否已定义?

但这两个命令都被执行、如下所示:

发生了什么??可能是什么错误。

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

    看起来 SPL_Build 是为 SPL (第一级引导加载程序)定义的、而不是为 u-boot (第二级引导加载程序)定义的。

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

    SPL 和 U-Boot 构建

    相同的代码库用于构建 U-Boot (u-boot.img)和 SPL (称为 MLO)。 由于使用相同的代码库、因此预处理器标志用于隔离两个构建之间的代码。 例如、您不希望在两个构建中都包含 DDR 和 MPU 时钟初始化代码。 优点还在于、一个构建可生成两个映像。

    以下是所使用的预处理器标志示例:

    #ifdef CONFIG_SPL_Build

    #ifndef CONFIG_SPL_Build

    CONFIG_SPL_Build 开关决定是构建 SPL 还是构建 U-Boot (如果已定义)、还是仅构建 U-Boot (如果未定义)。 如果任一 U-Boot 足够小、足以容纳在内部存储器中、或者如果您从 NOR 闪存引导、则在就地执行、这可能是未定义的。 否则、您将需要构建 SPL、并应定义此开关。

    training.ti.com/linux-board-porting-series-module-4-linuxu-boot-source-code-structure

    此致、
    帕维尔

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

    这种情况如何发生?由于这两个宏都位于同一源代码中、如何在某些文件中定义和在某些文件中定义宏 CONFIG_SPL_Build?我在哪里可以了解为什么会发生这种情况?在某些 makefile 文件、头文件或 C 语言文件中?

    谢谢

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

    你可以看到,在我的灵魂里,我写了

    PUs ("iysheng 说 ndef CONFIG_SPL_BUILY") 

    如果我不定义 CONFIG_SPL_Build、则会执行代码、

    (「iysheng say spl build"); 

    但是、如果我定义 CONFIG_SPL_Build、代码将会执行。

    但这两个都被执行了吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经详细解释了。 之所以执行这两个命令、是因为"#ifdef CONFIG_SPL_build"对于 SPL 有效、您会看到"iysheng say spl build"、而"#ifndef CONFIG_SPL_build"对于 u-boot 有效、您会看到"iyshay ndef CONFIG_SPL_build"

    您是第一次使用嵌入式 Linux 和引导加载程序吗? 我建议您阅读一些有关嵌入式 Linux 和引导加载程序概念的书籍。 重点介绍两级引导加载程序概念。

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

    E、我已经学习了大约几个月的嵌入式 Linux、但我没有好的学习行为、所以感谢 您的回复、您能向我推荐一些与嵌入式 Linux 相关的书籍、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以查看以下 wiki 页面、请注意、SPL 在该 wiki 中被命名为 x-loader:

    omappedia.org/.../Bootloader_Project

    我还会向您推荐"Mastering Embedded Linux Programming"书籍。

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

    E、谢谢、我稍后将看到这本书。