编辑:正如评论中所述,问题似乎过于宽泛而无法回答,所以我会留下问题和问题的解释,因为它们没有改变,但我已经改变了标题(它似乎 好 ,但它比以前更好)所以它们更合适。< / p>
我想为我的电路板编译OpenWRT。目前我正在将它编译为beagle bone black,并且它非常直接,因为有可用的教程,但它让我思考。我将如何为完全裸板构建它?喜欢或不喜欢BBB带有u-boot和linux版本(如果我没有弄错的话,就是Amstrong),所以当我为它构建OpenWRT时,可能已经有很多事情需要照顾我。
我知道我需要首先设置电路板从某个地方启动,然后它必须有引导程序,最后是内核(有SPL和所有这些,但好吧,让我们把它暂时放在一边)。
让我们想象一下,我有一个类似于beaglebone的硬件,除了它有一个连接到引导引脚的拨动开关,以便选择我要从哪里引导我的设备。想象一下,我已将其设置为从以太网启动,这意味着在启动时,位于ROM中的引导加载程序将接收二进制文件并将其存储在闪存中,所有这些都通过TFTP实现。
是否可以同时编译并加载到微处理器中?
OpenWRT是否也构建了u-boot,还是需要单独编译?我知道它会下载内核并编译它。
PS:很抱歉这些基本问题,但这是我第一次真正编译内核,而且我最多只使用微控制器和RTOS
答案 0 :(得分:2)
让我们尝试逐一回答问题
At this point I imagine that the binary file given via TFTP is the bootloader, am I right?
不,它应该是固件(内核+ HLOS)。 TFTP在uboot中可用,或仅在SBL(辅助引导加载程序)加载到内存后才可用。
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,但是如果你设计一个自定义板,你可以将这些图像合并到一个大文件中,然后一次闪存/加载该文件。
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在编译时配置内核参数。 希望,我已回答了所有疑问!!!