如何从 U-Boot 启动裸板二进制文件?

2023-12-10

我们如何从 U-Boot 启动独立的裸板二进制文件(不是使用 U-Boot 环境运行的独立二进制文件,而不是 Linux 内核)。我的要求是使用我的二进制文件重新初始化主板和驱动程序......

我可以用我的二进制文件替换启动介质(此处为 NOR 闪存)中的 U-Boot,但我的要求是不要从 NOR 闪存中删除 U-boot,我应该使用“tftp”命令从 LAN 网络加载我的二进制文件。

感谢致敬, 维伦德拉纳特


如何从 U-Boot 启动裸板二进制文件?

使用U-Bootgo命令执行任何类型的独立程序。

我们如何从 U-Boot 启动独立的裸板二进制文件(不是使用 U-Boot 环境运行的独立二进制文件,而不是 Linux 内核)。

使用U-Bootgo命令执行任何类型的独立程序。

...我应该使用“tftp”命令从 LAN 网络加载我的二进制文件。

使用U-Boottftpboot and go执行任何类型的独立程序的命令。 (缩写为tftp命令已被弃用,现在还有一个tftpput命令。)

这里的问题是,当我使用 go 命令时,我的程序必须使用 U-Boot 服务功能(我的意思是独立的二进制文件将在 U-Boot 环境中运行)...

你被误导了,没有要求你必须“使用U-Boot服务功能".
独立于 U-Boot 构建独立程序,并且它将完全独立于 U-Boot 执行。

但我无法使用 bootm 或 U-Boot 提供的任何其他启动命令启动,因为我的二进制文件不是内核格式。

没有“内核格式”;这就是为什么 U-Boot 使用mkimage包装器来识别二进制文件。
The bootmcommand 是通过指定二进制文件的特性专门针对 Linux 内核等操作系统的启动要求(例如包含命令行参数的缓冲区)而设计的。
使用U-Bootgo命令来执行任何类型的简单、独立的程序。

如果您在使用时执行二进制文件时遇到问题go命令,那么问题出在你的程序上,例如控制处理器并初始化其 C 环境。

ADDENDUM
当我使用这个词时独立的程序,我指的是通用定义(又名裸机),而不是U-Boot 特定定义与其有关的例子/目录。
FWIW我用过go两种“独立”程序的命令。
U-Boot 将其“独立”描述为

 * "Standalone Programs" are directly runnable in the environment
 *   provided by U-Boot; it is expected that (if they behave
 *   well) you can continue to work in U-Boot after return from
 *   the Standalone Program.

请注意,U-Boot 环境的使用是可选的。
使用 U-Boot 环境不需要独立程序,特别是在不打算返回 U-Boot 的情况下。
U-Boot 中没有任何东西可以检测或限制独立程序的行为。

如果您无法让您的独立程序与go命令,那么问题出在你的程序上,而不是出在go命令。
The go命令仅传输控制(即,将分支指令转移到指定的内存位置),并且对该代码不施加任何限制或要求(除了对系统操作有意义的内容之外)。

使用在线仿真器 (ICE) 或 JTAG 调试器来解决代码问题,尤其是当您的程序不使用现有堆栈时。

附录2
而不是暧昧go命令,该mkimage包装器确实提供了standalone与使用的图像类型bootm命令。
See 创建裸机启动映像,但不要期望得到不同的结果go命令。
使用包装器的优点和bootm over go下载的图像(uImage 文件)可以是:

  • 识别/验证iminfo命令,
  • 压缩(例如 gzip、bzip2、lzo)或未压缩。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 U-Boot 启动裸板二进制文件? 的相关文章

  • uboot源码分析之start.S解析

    1 start S引入 1 1 u boot lds中找到start S入口 1 在uboot中因为有汇编阶段参与 xff0c 因此不能直接找main c 整个程序的入口取决于链接脚本中ENTRY声明的地方 ENTRY start 因此 s
  • petalinux uboot源码怎么打补丁

    petalinux的源码 petalinux工程对于我来说 xff0c 就是有一点不能直接起修改源码 xff0c 你需要间接的修改源码的内容 xff1f 这个修改你还需要遵从petalinux的规章流程 当你不知道的时候你会感到无从下手 x
  • uboot移植Linux-SD驱动代码解析

    一 uboot与linux驱动 1 1 uboot本身是裸机程序 1 狭义的驱动概念是指 xff1a 操作系统中用来具体操控硬件的代码叫驱动 广义的驱动概念是指 xff1a 凡是操控硬件的代码都叫驱动 2 裸机程序中是直接使用寄存器的物理地
  • U-Boot 移植

    目录 NXP官方开发板uboot编译测试 查找NXP官方的开发板默认配置文件 defconfig 配置编译NXP官方开发板对应的uboot 烧写验证与驱动测试 定位缺少的驱动 在NXP官方U Boot 中添加自己的开发板 添加开发板默认配置
  • linux文件系统初始化过程(3)---加载initrd(上)

    一 目的 本文主要讲述linux3 10文件系统初始化过程的第二阶段 加载initrd initrd是一个临时文件系统 由bootload负责加载到内存中 里面包含了基本的可执行程序和驱动程序 在linux初始化的初级阶段 它提供了一个基本
  • uboot下内存操作mw和md命令详解

    mw简介 u boot 中的 mw 命令是用于向内存写入数据的命令 它有4种形式 mw b 写入 1 个字节 8 比特 的数据 mw w 写入 1 个字 2 字节 16 比特 的数据 mw l 写入 1 个长字 4 字节 32 比特 的数据
  • linux文件系统初始化过程(2)---挂载rootfs文件系统

    一 目的 本文主要讲述linux3 10文件系统初始化过程的第一阶段 挂载rootfs文件系统 rootfs是基于内存的文件系统 所有操作都在内存中完成 也没有实际的存储设备 所以不需要设备驱动程序的参与 基于以上原因 linux在启动阶段
  • uboot启动——lowlevel_init函数详解

    1 将lr寄存器中的值压栈 push lr lr寄存器保存的是函数返回地址 每个模式下只有一个lr寄存器 如果涉及多重函数调用 则lr寄存器会被覆盖 导致返回地址丢失 在之前已经初始化栈 所以这里可以将lr寄存器压栈 将来函数返回的时候再弹
  • 2.移植uboot-添加2440单板,并实现NOR、NAND启动

    1 首先在uboot里新建单板2440 1 1将2410的单板文件夹拷贝成2440 cd board samsung cp smdk2410 smdk2440 rf 拷贝文件夹 然后将smdk2440下的smdk2410 c改为smdk24
  • uboot 中内存测试,内存检测方法

    DDR内存子系统常见硬件错误及Uboot中检测流程 在 U Boot中 Denx U Boot的开发商 针对常见的DDR内存故障进行了严格的检测处理 下图描述了该检测处理过程的三个步骤 检测数据线 地址线和DDR物理存储部件 主要涉及这三个
  • linux的进程1:rootfs与linuxrc

    在内核启动的最后阶段启动了三个进程 进程0 进程0其实就是刚才讲过的idle进程 叫空闲进程 也就是死循环 进程1 kernel init函数就是进程1 这个进程被称为init进程 进程2 kthreadd函数就是进程2 这个进程是linu
  • 虚拟文件系统

    VFS的层次 文件系统实现与用户进程 或C库 之间 文件系统分类 基于磁盘的文件系统 ext2 3 fat iso9660 虚拟文件系统 proc 网络文件系统 nfs 通用文件模型 VFS提供一种结构模型 包含了一个强大的文件系统所应具备
  • NXP imx6ull uboot-imx-rel_imx_4.1.15无法从SD卡加载内核

    我imx6ull使用的是正点原子的alpha开发板 我将我的SD卡分成了两个分区 第一个分区格式化为fat 用来存放zImage和dtb 第二个分区格式化为EXT4格式 这个分区作为根文件系统 遇到的问题是 我编译好kernel后 尝试通过
  • 【uboot内核适配学习】uboot 修改默认ip

    1 修改默认ip作用 设备出场的时候都需要默认的ip 2 修改措施 找到uboot芯片配置文件 不同芯片厂家适配的文件必定是不一样的 位置也可能不一样 define CONFIG ETHADDR 00 40 5c 26 0a 5b MAC地
  • 图像与 zImage 与 uImage

    它们之间有什么区别 我知道u boot需要uImage格式的内核 我使用的系统首先从第一阶段加载程序启动 然后调用 u boot 我想放弃 u boot 并直接从第一阶段加载程序启动 我必须使用哪种类型的内核映像 它们之间有什么区别 Ima
  • Linux编译 |入口点无效

    我正在编译一个linux内核使用 mipsel 工具链 一切工作正常 除了最后一点指出无效的入口点 sh 0 Can t open arch mips boot tools entry rm f arch mips boot vmlinux
  • 如何从 U-Boot 启动裸板二进制文件?

    我们如何从 U Boot 启动独立的裸板二进制文件 不是使用 U Boot 环境运行的独立二进制文件 而不是 Linux 内核 我的要求是使用我的二进制文件重新初始化主板和驱动程序 我可以用我的二进制文件替换启动介质 此处为 NOR 闪存
  • 实现自定义 u-boot 命令

    我想添加自定义命令命令u boot可以是一个简单的 hello world 命令 搜索后我发现了这个链接Yocto u boot 自定义命令它说看的地方timer命令输入cmd misc c作为起点 我怎么带这个timer命令到我的 u b
  • 为什么补丁找不到这个文件?

    我想对 u boot 源代码应用补丁 但是 Linux 不允许我这么做 我拥有的 reg ubuntu NextGen trunk FW thirdparty u boot patch p1 lt u boot u boot 2013 01
  • Yocto 添加自定义 UBoot 环境变量

    我正在尝试通过 Yocto 构建过程添加两个新的 u boot 环境变量 My file u boot imx 2021 04 bbappend包含 FILESEXTRAPATHS prepend THISDIR PN SRC URI fi

随机推荐

  • 两个 int 相乘得到负数

    我目前正在编写一个小下载管理器 当我尝试以百分比计算下载进度时 我得到了一个有趣的输出 这就是我用来计算的 int progress byte counter 100 size System out println byte counter
  • 调用共享WebMethod时出现未知Web方法异常

    我正在尝试在我的网站上实施视图跟踪网络服务 我使用 JavaScript 是因为我想从我的跟踪视图中排除任何搜索机器人 问题是当我尝试使用 jQuery 发布到我创建的 Web 服务时 出现 未知的 Web 方法 错误 document r
  • 在 PHP 中显示更多数字

    假设我有 echo 1 3 它只打印出 0 33333333333333 我可以得到更多的数字吗 Can use bcdiv echo bcdiv 1 3 20 第三个论点 用于设置结果中小数点后的位数 您还可以使用 bcscale 设置所
  • Android 语音 - 如何在 Android 中阅读文本?

    如何在 Android 中读取数据 即将简单的文本字符串转换为语音 语音 有没有一个API可以让我做这样的事情 TextToVoice speaker new TextToVoice speaker Speak Hello World 使用
  • 如何在powershell中获取下一个工作日

    我有以下测试代码 基本上我正在检查文件夹中何时创建新文件 我需要知道如果文件是在下午 4 点之后创建的 则会在下一个工作日显示 目前我的代码显示第二天 但我需要显示下一个工作日 任何帮助 将不胜感激 formatteddate 0 h mm
  • 如何使用 jQuery 找到最高的 z-index

    我有许多具有不同 z 索引的 div 元素 我想找到这些 div 中最高的 z index 我怎样才能实现它 CSS layer 1 z index 1 layer 2 z index 2 layer 3 z index 3 layer 4
  • EXTjs gridfilter:如何在不重新加载存储的情况下清除过滤器?

    在 extjs GridFilters 中 有没有办法在不重新加载存储的情况下清除过滤器 这是要求 网格下面有一个网格 1 和另一个网格 2 grid 1 有一个 id 列表 当单击某个特定 id 时 grid 2 就会填充属于该 id 的
  • 错误:TCP 提供程序:错误代码 0x2746。在Linux中通过终端进行Sql设置期间

    我正在尝试按照文档在我的 Linux 中设置 ms sql 服务器https learn microsoft com pl pl sql linux quickstart install connect ubuntu view sql se
  • SAP .Net Connector 3.0 - 如何从非 SAP 系统发送 IDoc?

    我正在尝试使用 NET 连接器将数据发送到 SAP 系统 我已经能够非常轻松地发送对 RFC 功能模块的调用 但似乎没有任何方法可以直接发送标准 IDoc 这很奇怪 因为 IDocs 应该是与 SAP 对话的标准通信工具 有没有人发现是否
  • 如何在运行时获取和设置 Robot Framework(Ride) 中的默认输出目录

    我想将所有输出文件移动到自定义位置 即基于运行时日期时间创建的运行目录 在 TestSetup 中按日期时间创建输出文件夹 我有函数 Process Output files 它将文件移动到运行文件夹 Run1 Run2 Run3 文件夹
  • 使用输入变量时 Postgres 的运行速度要慢得多

    我在 Postgres 8 3 5 中有一个函数 可以从多个表中选择数据并将结果转储到单个表中 create or replace function test function 2 startdate timestamp enddate t
  • 使用 ImageMagick 和 Rails 进行像素 RGB

    我目前正在使用 PaperClip 和 ImageMagick 上传图像 我想获得图像的平均颜色 所以我这样做 使用 before create 挂钩 def get average color img Magick Image read
  • 使用 Office 365 API 的日历或用户时区

    是否可以通过 Office 365 或 Graph API 获取用户或其日历的时区 我知道您可以从特定事件获取开始和结束时区 但这对我没有帮助 抱歉 我们尚不通过 Office 365 或 Graph REST API 支持此功能 这是我们
  • 如何在 PowerShell 复制脚本中正确过滤多个字符串

    我正在使用来自的 PowerShell 脚本这个答案进行文件复制 当我想使用过滤器包含多种文件类型时 就会出现问题 Get ChildItem originalPath filter htm foreach targetFile htmPa
  • JavaScript XML 解析

    有没有一种方法可以在 JavaScript 中循环遍历 XML 节点的直接子节点 而不使用 jquery 或类似的库 我尝试使用 childNodes 但由于某种原因它无法正常工作 childNodes length 返回一个数字 该数字通
  • 环境变量中的 Watson Conversation_Error

    我正在尝试从 GitHub 复制 Watson对话简单节点 js 应用程序 https github com watson developer cloud conversation simple 并在我的本地运行 我已经创建了服务密钥和设置
  • 在 Python 脚本中获取当前的 git 哈希值

    我想在 Python 脚本的输出中包含当前的 git 哈希 作为版本号生成该输出的代码 如何在 Python 脚本中访问当前的 git 哈希值 无需绕过从git命令自己 GitPython是一个非常好的方法来做到这一点和许多其他git东西
  • 如何创建一个仅引导用户在 Google Play 上下载完整版本的存根应用程序?

    只是想创建一个存根应用程序 该应用程序启动后除了引导用户在 Google Play 上下载完整版本之外什么也不做 我假设存根 apk 显然需要相同的包名称 使用相同的证书签名 但版本代码较低 一直只指向 Google Play 产品页面 这
  • ReportNG不提供任何报告

    我听说 ReportNG 创建的报告比 TestNG 的正常报告更好 我尝试创建 ReportNG 报告 但失败了 我正在使用 Eclipse 我已经下载了 ReportNG 并将reportng 1 1 3 jar 和velocity d
  • 如何从 U-Boot 启动裸板二进制文件?

    我们如何从 U Boot 启动独立的裸板二进制文件 不是使用 U Boot 环境运行的独立二进制文件 而不是 Linux 内核 我的要求是使用我的二进制文件重新初始化主板和驱动程序 我可以用我的二进制文件替换启动介质 此处为 NOR 闪存