首页 > 解决方案 > Uboot 自定义应用程序映像从闪存加载

问题描述

我有 2 个图像存储在闪存中的预定义地址中,这些图像是根据我可以在启动时测试的一些标准加载的。

有人可以建议一种使用 uboot 的工具(如 bootm 等)以编程方式启动任一映像的方法吗?或者指出这个过程的一个例子。

提前致谢。

标签: u-boot

解决方案


我假设您用于加载图像的任何方法都需要一个地址,因此只需在运行之前设置它。 bootcmd是主要的切入点,bootrun bootcmd.

setenv flashload 'fooload $imageflashaddr $loadaddr'
setenv setimageflashaddr 'if something; then setenv imageflashaddr xxx ; else setenv imageflashaddr yyy; fi'
setenv bootcmd 'run setimageflashaddr && run flashload && bootm $loadaddr'

u-boot 非常灵活;有很多方法可以做到这一点。这使用环境变量。您也可以通过 C 代码或在运行时加载的脚本文件执行此操作。


如果你想用 C 代码来做,你可以编辑你的开发板的 C 文件(通常在board/vendor_name/board_name.c. 你可以定义一个board_late_init()(还有其他的钩子,但是这个通常是一个很好的起点)。你可以使用env_get()andenv_set()来设置你的地址,以便您的 bootcmd 从不同的地方加载。


推荐阅读