u-boot - Uboot 自定义应用程序映像从闪存加载
问题描述
我有 2 个图像存储在闪存中的预定义地址中,这些图像是根据我可以在启动时测试的一些标准加载的。
有人可以建议一种使用 uboot 的工具(如 bootm 等)以编程方式启动任一映像的方法吗?或者指出这个过程的一个例子。
提前致谢。
解决方案
我假设您用于加载图像的任何方法都需要一个地址,因此只需在运行之前设置它。 bootcmd
是主要的切入点,boot
与run 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 从不同的地方加载。
推荐阅读
- html - 如何修复,我的输入 HTML5 模式与模式不正确匹配
- ios - 我需要接受 alamofire 关闭的响应并将其发送到另一个班级
- c - C 中的初始化 {0} 是什么?
- c# - 2D Raycast 无法正确检测重叠碰撞器并忽略排序层
- selenium - 如何使用 selenium Java 在 chrome print privew 页面中单击保存按钮
- python - 使用熊猫数据的概率密度函数
- maven - Jenkins 插件包括节点和节点依赖项?
- javascript - Angular 2 到最新版本 - jsonp 和 URLSearchParams 到 HttpClient 和 HttpParams
- php - Symfony API 平台实体继承
- ansible - 如何使ansible任务仅在一台主机上运行?对于每个应用程序