我已经使用linuxon
ARM eewiki页面上的beaglebone black的说明构建了一个u-boot.bin文件。
我正在尝试使用tftp从现有的beaglebone black上的u-boot加载并运行它,并使用以下命令:
tftp 0x80800000 u-boot.bin
去0x80800000
tftp成功,但在打印后运行新的u-boot会挂起:
##在0x80800000处启动应用程序
在没有0002-U-Boot-BeagleBone-Cape-Manager.patch的情况下构建u-boot是有效的,所以我认为这个问题不在构建环境中。
关于为什么这不起作用或如何解决它的任何想法?
更长的故事:
我正在开发一种嵌入了beaglebone的产品,但micro-SD卡无法访问(访问它需要物理拆除整个产品)。
我们希望通过以太网端口使用tftp更新emmc上的操作系统(包括u-boot,内核和根文件系统)。
从高层次来看,这需要:
编写可以在现有操作系统中运行的应用程序来覆盖emmc中的当前u-boot映像,以便下次设备启动时将使用tftp检索新的操作系统组件
当设备重新启动时,u-boot使用tftp检索新内核,设备树blob(?)和根文件系统(我的理解是它必须将这些图像加载到ram中,然后将ram的内容复制到emmc中,是
那是对的吗?)
启动新的操作系统,最好关闭u-boot功能以下载新的操作系统,同时保持在将来从用户空间重新启用它的能力
我想第一个问题是否合理?
我使用eewiki上的说明构建了u-boot。
另一篇博客(beyondlogic,BeagleBoneBlack_Upgrading_uBoot)描述了一种使用tftp启动并执行它来将u-boot加载到ram中的方法:
tftp 0x80800000 u-boot.bin
去0x80800000
当我使用从eewiki创建的u-boot映像尝试此操作时,tftp成功,但是当我尝试执行它时,该过程挂起在此行:
##在0x80800000处启动应用程序
如果我尝试使用从beyondlogic页面上的说明创建的u-boot映像,它可以工作。
该过程基本相同,但其说明仅适用于此补丁:
0001-am335x_evm-uEnv.txt-bootz正fixes.patch
而eewiki的说明也适用于此补丁:
技术-的U-Boot-BeagleBone普-Manager.patch
Cape Manager支持是从当前操作系统(ArchLinux)过渡到Debian的主要原因(Arch似乎不支持最新的开普管理和设备树覆盖功能。)
我已经找到了在u-boot中打开其他调试语句的方法,但到目前为止还没有找到任何有用的东西。
那么,那么:
关于为什么在tftp上加载和执行eewiki u-boot映像失败的想法,以及如何修复它?
我也试图找出如何将图像从ram写入emmc,但还没有找到任何例子。
以上来自于谷歌翻译
以下为原文
I have built a u-boot.bin file built using the instruc
tions for the beaglebone black on the linuxonarm eewiki page. I’m trying to load and run it using tftp from u-boot on an existing beaglebone black with the commands:
tftp 0x80800000 u-boot.bingo 0x80800000The tftp is successful, but running the new u-boot hangs after printing:
## Starting application at 0x80800000Building u-boot without the 0002-U-Boot-BeagleBone-Cape-Manager.patch works, so I don’t think the issue is in the build environment. Any ideas on why this doesn’t work or how to fix it?
Longer story:
I’m working on a product that has a beaglebone embedded within it, but the micro-SD card is inaccessible (accessing it requires physically dismantling the entire product). We are hoping to update the operating system (including u-boot, the kernel, and the root file system) on the emmc using tftp over the ethernet port. At a high level, this would require:
- writing an application that can run in the existing operating system to overwrite the current u-boot image in emmc so that the next time the device boots it will retrieve the new operating system components using tftp
- when the device reboots, u-boot retrieves the new kernel, device tree blob (?) and root filesystem using tftp (my understanding is that it would have to load these images into ram, then copy the contents of ram into the emmc, is that correct?)
- boot the new operating system, preferably turning off the u-boot feature to download a new os while maintaining the ability to turn that back on from userspace in the future
I guess the first question is does that seem reasonable?
I have built u-boot using the instructions on eewiki. Another blog (beyondlogic, BeagleBoneBlack_Upgrading_uBoot) describes a method for loading u-boot into ram using tftp boot and executing it:
tftp 0x80800000 u-boot.bingo 0x80800000When I try this with the u-boot image created from eewiki, the tftp is successful, but when I try to execute it the process hangs at this line:
## Starting application at 0x80800000If I try this with the u-boot image created from the instructions on the beyondlogic page, it works. The process is basically identical, but their instructions only apply this patch:
0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
while eewiki’s instructions also apply this patch:
0002-U-Boot-BeagleBone-Cape-Manager.patch
The Cape Manager support is the primary reason for transitioning from the current operating system (ArchLinux) to Debian (Arch does not appear to support the latest cape management and device tree overlay functionality.)
I have looked for ways to turn on additional debugging statements in u-boot, but so far haven’t found anything useful.
So, then:
- Any ideas on why loading and execute the eewiki u-boot image over tftp fails, and how to fix it?
- I’m also trying to figure out how to write images from ram into emmc, but haven’t found any examples yet.