【问题标题】:Execute bootm command in C在 C 中执行 bootm 命令
【发布时间】:2020-10-20 03:52:42
【问题描述】:

就上下文而言,我一直在为项目的 u-boot 添加一些补丁,并且我已经将内核映像、设备树 blob 和 initrd 映像加载到 u-boot 内存中。

过去我很幸运通过它们各自的 C 函数调用命令行函数(如 do_mem_cp),但我对 bootm 命令没有运气。我目前正在做:

char *argv[4] = {"bootm", "a5001000", "b0000000", "a9000000"};
do_bootm(NULL, 0, 4, argv);

正如我所说,这在过去适用于其他命令,但在此调用期间我收到错误 "Synchronous Abort" handler, esr 0x96000004。有谁知道从 C 调用 bootm (或类似命令)的更好方法?

编辑:这是为 Jetson TX2i 设计的

【问题讨论】:

  • 我注意到的一件事是这些“BLOB”的大小都没有输入到 bootm 中……我需要将这些存储在某个地方吗?

标签: u-boot


【解决方案1】:

do_bootm()的定义是:

extern int do_bootm(struct cmd_tbl *cmdtp, int flag, int argc,
                    char *const argv[]);

如果出现错误,cmdtp 会被取消引用以打印已执行命令的名称。因此,您不应将 NULL 作为 cmdtp 传递。而是填充适当类型的结构并将指针传递给它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    相关资源
    最近更新 更多