uboot-uart.bin 和 uboot.bin 的区别?

Posted

技术标签:

【中文标题】uboot-uart.bin 和 uboot.bin 的区别?【英文标题】:Difference between uboot-uart.bin and uboot.bin? 【发布时间】:2014-05-02 21:36:10 【问题描述】:

我正在尝试使用 Teraterm(xmodem/ymodem/zmodem) 将第一个 u-boot 二进制文件 (uboot.bin) 闪存到具有 marvel 370 soc(ARM) 的全新空白板的空白 NOR 闪存中

当我编译 uboot 时,我得到两个二进制文件,如 uboot-uart.bin 和 uboot.bin。

两个二进制文件有什么区别?

我被指示进行一些 DIP 开关更改,然后首先将 uboot-uart.bin 加载到原型板中。

从手册中我了解到,dip 开关设置是将“从 Uart 引导”设置为引导源列表。

我是嵌入式新手,想从 u-boot 的角度了解更多信息。我在哪里可以了解这方面的信息?

还想知道这些 xmodem,ymodem,zmodem 是什么吗?

还想了解如何使用 marvel 370 soc(ARM) 为定制板定制 u-boot?

如果有人能指出好的资源,我会很高兴。

【问题讨论】:

【参考方案1】:

XModem 本身是一个非常简单的协议,旨在通过串行链接发送文件,详细解释 here。

过去几年中,大多数 Marvell ARM 芯片都可以使用 XModem 协议通过 UART 上传二进制文件。有两种方法可以做到这一点。

    通过在启动期间向芯片发送特殊序列(无需更改引导选项即可完成)。 通过相应地设置引导选项(在您的情况下通过 DIP 开关)

在这两种情况下,芯片都会启动 Xmodem 下载。 TeraTerm 应该可以选择通过 xmodem 协议上传文件。 IIRC 在 File/Transfer/XModem/Send 下可用。

如果您知道,只需将“uboot-uart.bin”文件发送到 Armada 370(这需要一些时间)。 SoC 现在将启动文件,就像从 NAND 或任何其他来源加载文件一样。

uboot-uart.bin 和 uboot.bin 之间的唯一区别很可能是必须放在实际 uboot-binary 前面的特殊标头,它包含映像的引导设备类型,地址在应该加载图像的内存中以及许多特定于板的设置中。 Marvell 非常出色的数据表通常解释了确切的结构和内容。

对于自定义 uboot,我只能建议深入研究 Marvell 提供的代码,根据自己的板子进行更改。您可以在 board/Marvell 下找到特定于开发板的文件。

【讨论】:

感谢 Masta79。更多的查询。 uboot-uart.bin 是否加载到 RAM 中并从那里执行?如果是,它如何知道RAM的地址(要加载uboot-uart.bin的地址)? 是的,它被加载到 RAM 中,RAM 也是通过图像标题中的信息设置的,并且图像的地址也来自那里。我已更新我的答案以包含此信息。 谢谢玛斯塔。您能否分享如何检查 uboot 二进制文件?我希望看到像使用 readelf 和 objdump 为 elf 完成的标题 我不知道 Armada370 中使用的确切标头。正如您所说的“原型板上的 DIP 开关更改”。我怀疑您正在与 Marvell 或他们的一位分销商联系,并收到了官方开发套件之一。您应该要求他们访问数据表,通常他们很好地解释了标题。

以上是关于uboot-uart.bin 和 uboot.bin 的区别?的主要内容,如果未能解决你的问题,请参考以下文章

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理