将文件从emmc通过uboot复制到tftp-server

问题描述 投票:0回答:2

我遇到的问题是设备无法启动进入linux。它仅适用于“启动内核......”。

为了更好地掌握出错的原因,我认为从linux访问日志会很好。

我可以通过“ls”从uboot访问userland:

Zynq> ls mmc 0:2 
ostree/deploy/poky/deploy/9d325972b955e6584d3fad0a7ff1bf1a8.0/etc
<DIR>       2048 .
<DIR>       1024 ..
<DIR>       1024 modprobe.d
            0 motd
<DIR>       1024 xdg
<DIR>       1024 logrotate.d
          58 rpcbind.conf
        1633 inputrc
         828 mke2fs.conf
          15 timestamp
       10929 login.defs
         324 issue
<DIR>       1024 sudoers.d
etc ...

现在我正在寻找一种方法将文件从用户空间复制到另一个设备(远程PC)。

我了解了uboot中提供的“tftpput”。我的问题是“tftpput”需要一个保存地址和大小。但我不知道如何获取这些信息。

tftpput - TFTP put command, for uploading files to a server

Usage:
tftpput Address Size [[hostIPaddr:]filename]

我无法找到关于“tftpput”的好文档。也许某人有链接给我或给我一个小“如何”这个?

提前致谢

u-boot tftp
2个回答
0
投票

要回答具体问题,您需要在另一台计算机上使用tftp服务器。然后当你使用'load'将文件带入内存时,你现在将拥有该地址,现在将为你设置$ filesize(对于size参数),你设置tftp服务器的机器是命令的最后一部分。

也就是说,如果你只看到“正在启动内核”而没有别的东西,很可能Linux内核没有达到挂载rootfs的程度,用户运行并且你将看到日志文件。没有更多的信息,很难说你需要做什么,但你的bootargs是第一个确保正确的地方。


0
投票

要分析内核无法启动的原因,您可以启用早期控制台。

对于ARM 64位系统,早期控制台通过内核命令行参数启用。 U-Boot从环境变量bootargs获取这些。

earlycon的论据取决于你的董事会,例如:对于Odroid C2:

setenv bootargs earlycon=meson,0xc81004c0

对于32位ARM系统上的早期控制台,您必须使用适当的配置选项编译内核,例如:香蕉皮:

CONFIG_DEBUG_LL=y
CONFIG_DEBUG_SUNXI_UART0=y
CONFIG_EARLY_PRINTK=y
© www.soinside.com 2019 - 2024. All rights reserved.