启动时运行u-boot命令

时间:2016-05-14 20:10:55

标签: u-boot yocto

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

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

4 个答案:

答案 0 :(得分:2)

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

实现的
 SRC_URI_machine += "file://mydefenv.patch"

或者(甚至更好)使用自己的git树。即使环境完全损坏,这也可以使您的系统能够启动并获得有用的额外好处。

另一种可能性就是像Charles在另一个答案的评论中建议的那样,离线创建环境,并让U-Boot加载它,请参阅denx.de/wiki/view/DULG/UBootScripts

我有时也使用的第三种可能性是离线构建环境(可能使用与上面链接相同或类似的机制),并在正常的闪存编程过程中闪存环境以进行闪存。虽然,大多数时候我在AT91上做过这个,使用类似于at91 Sam-Ba TCL script的tcl脚本

无论您选择哪种方法,U-Boot中的bootcmd变量都应保留您的启动脚本。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

这是uboot的syntax

编辑:

  

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

答案 3 :(得分:0)

修改上述bootcmd(无论如何执行)是最简单的。

作为修补内核的替代方法,可以在u-boot中覆盖命令。 建立档案,例如platform-top.h放在修补程序文件所在的位置(该文件可能已经存在)并覆盖CONFIG_BOOTCOMMAND

结果将如下所示:

/* ... */

/* replace the memory write with any other valid command */
#define CONFIG_BOOTCOMMAND "mw 0x1 0x1 && run default_bootcommand"

不要忘记在bbapend SRC_URI = "file://platform-top.h"

中公开该文件