我如何构建 u-boot 和 OpenWRT 以便它们为生产做好准备?

How can I build u-boot and OpenWRT so that they are ready for production?

编辑: 正如评论中所述,这个问题似乎太宽泛而无法回答,所以我将留下对问题和问题的解释,因为它们还没有改了,不过我改了标题(好像还不错,不过比以前好多了)所以更合拍了。

是什么让我想到这个问题

我想为我的开发板编译 OpenWRT。目前我正在将它编译成黑色的 beagle bone,它非常简单,因为有可用的教程,但这让我开始思考。我将如何为完全裸板构建它?不管喜欢与否,BBB 都带有 u-boot 和 linux 的一个版本(如果我没记错的话是 Amstrong)所以当我为它构建 OpenWRT 时,可能已经为我处理了很多事情。

我知道我需要首先设置电路板从某个地方启动,然后它必须有引导加载程序,最后是内核(有 SPL 等等,但是好吧,我们暂时把它放在一边).

假设系统

让我们假设我有一个类似于 beaglebone 的硬件,只是它有一个拨码开关连接到引导引脚,以便 select 从我要引导我的设备的地方。想象一下,我已经将它设置为从以太网启动,这意味着在启动时,位于 ROM 中的引导加载程序将接收一个二进制文件并将其存储在闪存中,所有这些都是通过 TFTP 完成的。

问题

PS: 不好意思问这么基础的问题,我是第一次真正编译内核,最多只接触过微控制器和RTOS

让我们试着一一回答问题

At this point I imagine that the binary file given via TFTP is the bootloader, am I right?

不是,应该是固件(内核+HLOS)。 TFTP 在 uboot 中可用或仅在 SBL(Secondary boot loader) 加载到内存后可用。

So after that I'd need to give the bootloader the kernel?

bootloader 需要存在于内存中,如果需要它可以从以太网获取固件,这可以通过更改 uboot env(bootcmd) 简单地完成,也可以在编译时配置。

Does this mean that it is a 2 step process? First load the bootloader an dthen the kernel?

是的,bootloader 需要提前加载,但是如果你设计一个定制板,你可以将图像合并到一个大文件中,然后 flash/load 一次那个文件。

Is it possible to compile both at the same time and load it into the microprocessor?
Does OpenWRT build u-boot as well or do I need to compile it separately? I know it downloads the kernel and compiles it.

是的,Openwrt 非常灵活,它一次编译 uboot、内核、用户空间包并创建所需的映像(基于用户配置)。

How would I build this for production? Imagining that I have to build u-boot and openwrt separately, would I create a script that compiles both and then does the entire process of downloading it into the microprocessor?

您可以配置 openwrt 以生成适当的映像(基于闪存和系统要求),然后在生产中闪存该映像(如此简单)。

Is it possible to pre-configure the kernel so that it doesn't need to be configured after the code is downloaded? I mean, for example, compile it with initialization scripts instead of connecting to the device and configuring this. Is it possible or do I have to connect to the board and configure it manually?

是的,编译时使用make kernel_menuconfig配置内核参数。 希望,我已经回答了所有问题!!!