量产u盘工具:ARM U-Boot构建问题的交叉工具链

关于量产u盘工具的问题,在build u中经常遇到, 我正在尝试为一个 Raspberry-Pi 构建自己的工具链。我知道有很多预构建的工具链。这项工作是出于教育原因。我正在从零开始关注嵌入式 arm linux。并成功构建了 gcc 和 uClib 到目前为止。我正在为目标 arm-unknown-linux-eabi 构建

我正在尝试为一个 Raspberry-Pi 构建自己的工具链。我知道有很多预构建的工具链。这项工作是出于教育原因。我正在从零开始关注嵌入式 arm linux。并成功构建了 gcc 和 uClib 到目前为止。我正在为目标 arm-unknown-linux-eabi 构建

现在,它涉及到准备一个可启动的文件系统,我质疑自己的引导加载程序构建。

关于这个系统的引导加载程序的部分似乎是不完整的。现在我问自己如何用我的 arm-unknown-linux-eabi 工具链为这个系统构建一个 uboot。

我是否需要构建一个不依赖于 linux 内核调用的工具链。我的第一次研究使我意识到,有独立的工具链依赖于操作系统(linux kernel sys-calls 等)和那些不需要在有内核的工具链。有时被称为“Bare-Metal”工具链或“独立”工具链。

一些消息来源提到可以使用 linux 工具链构建 U-Boot。如果这是真的,为什么以及如何工作?

如果我必须为“裸金属”工具链构建第二个工具链,我可以在哪里找到有关这两者之间差异的信息。

2

您可以使用与构建内核相同的跨工具链构建 U-Boot-很可能是系统的其余用户空间。

根据定义,引导加载程序是自包含的,并且不关心您选择的 C 运行时库,因为它不使用它。

构建引导加载程序和内核时,重要的是编译器和链接器配置为生成可在特定内存地址运行的静态链接代码。

1

在几乎所有可能的方式中,嵌入式和 Linux 工具链之间没有区别。但是有一个例外。

这个例外是__clear_cache-一个可以由编译器生成的函数,在“Linux”工具链中包括一个系统调用来同步指令和数据缓存。(有关该位的更多信息,请参见http://blogs.arm.com/software-enablement/141-caches-and-self-modifying-code/。)

现在,除非你明确地添加一个调用该函数,我知道它被调用的唯一方法是通过在 C(应该避免的 GCC 扩展)中编写嵌套函数。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(18)
破产申请程序:申请转账(apps to transfer money)
上一篇
Pu xi:IntelliJPlantUML插件不检测*.pu文件
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(83条)