2016-05-14 170 views
1

我有一个运行Yocto(Jethro)的自定义板,并且想要运行单个u-boot命令,preboot。显然,打破空间引导序列并手动运行它的作品。我如何让它自动运行?更具体地说,默认情况下,启动命令序列在哪里?在启动时运行u-boot命令

编辑:另外,我知道我可以在运行时编辑环境。但是,我正在尝试将此更改构建到映像中,以便我可以分发它。

回答

1

一般的答案是,bootcmd是默认运行的,如果存在持久性环境,您可以更改命令和'saveenv'以保留它。

1

当你在uboot环境中。输入printenv,它将列出uboot使用的环境变量。

有一个变量名bootcmd。目前,我的包含一堆if else命令。同样,在那里添加你喜欢的功能来启动。

并在它完成并测试后。使用saveenv来存储编辑

这是一个用于uboot的syntax

编辑:

的U-Boot允许存储在纯文本文件的命令或命令序列。然后使用mkimage工具,您可以将该文件转换为可以使用U-Boot的autoscr命令执行的脚本映像。 U-boot Scripting Capabilities

+0

是的,这工作,但那只是那个磁盘。我如何自动将其构建到图像中? –

+0

这就是你需要的http://www.denx.de/wiki/view/DULG/UBootScripts –

1

通常情况下,你的U-Boot的配方将建立的U-Boot的一台机器,在这种情况下,我通常只是打补丁编译,默认情况下,U-Boot的环境做正确的事。这是通过

SRC_URI_machine += "file://mydefenv.patch" 

或者(甚至更好)使用你自己的git树。这也会带来额外的好处,即即使环境完全损坏,系统也可能启动并提供有用的信息。

另一种可能是做像查尔斯在另一个答案评论建议,离线创造环境,并有U-Boot的加载它,请参阅denx.de/wiki/view/DULG/UBootScripts

第三种可能,那我也有时用,是离线构建环境(可能使用与上述链接相同或类似的机制),并且在正常的闪存编程过程中闪存环境闪烁。虽然我大部分时间都是在AT91上完成这个工作,但是使用类似于at91 Sam-Ba TCL script的tcl脚本

无论您选择哪种方法,U-Boot中的bootcmd变量都应该包含引导脚本。