Part Number:TDA4VM
客户:我正在使用 TDA4VM,而且从 SD 卡进行引导。我想沿用这种方式,但有时也想在无需移除 SD 卡的情况下更新电路板上的 FW。
我知道在开发期间可以使用 NFS,但该电路板将发送至远程位置,我希望开发一种方法,能够通过网络连接(不一定是 NFS)对 FW 进行一次更新,然后一直使用该更新从 SD 卡引导。
基本上有 2 种情形:
1.正常从 SD 卡引导
2.更新 FW 后,以某种方式通过网络更新 SD 卡内容。然后返回到正常操作。
是否有任何可用的方法?
答:我尝试过一种方法,该方法应该是可行的。如果有网络,则可以一直使用 tftpboot。
如果没有网络,则可以使用 UART 将更改后的引导加载程序二进制文件加载到 RAM 中。
例如:
引导至 u-boot 提示符。然后在 U-boot 提示符下输入命令 loady。您将看到如下所示的内容:
然后在 Tera Term 中使用 YMODEM 接口传输新的二进制文件:
您应该选择二进制文件并发送:
经过一段时间后该过程会完成。
## Ready for binary (ymodem) download to 0x82000000 at 115200 bps…
CCxyzModem – CRC mode, 1(SOH)/1029(STX)/0(CAN) packets, 5 retries
## Total Size = 0x00101378 = 1053560 Bytes
二进制文件将被加载到 ${loadaddr}。
您只需执行以下命令即可进行验证:
md ${loadaddr}
现在,我们在 RAM 中的位置 ${loadaddr} 处有了新的 u-boot.img,需要使用以下命令将文件写入 FAT(即 SD 卡的引导分区):
fatwrite mmc 1 ${loadaddr} u-boot.img 101378
请注意,大小应始终以十六进制格式表示。U-boot 以十六进制格式表示大小,因此我使用十六进制的 101378,而不是十进制的 1053560。
可以使用类似的方法来更新 SD 卡上的任何二进制文件。
客户:这似乎很有用。尽管我刚刚意识到我持续更新的唯一部分是 Vision Apps 输出。
现在,为了实现更新,我编译 Vision Apps,然后执行“make linux_fs_install_sd”。在我看来,它似乎主要是将编译后的输出复制到 SD 文件系统中。
这是否通过 ssh/scp 就可以完成?
在哪里可以查看“make linux_fs_install_sd”正在执行的操作?
答:David Dominguez Moises说:
这是否通过 ssh/scp就可以完成?
是的。这可以通过网络完成。
David Dominguez Moises说:
在哪里可以查看“make linux_fs_install_sd”正在执行的操作?
$PSDKRA_PATH/vision_apps
文件:makerules/makefile_linux_arm.mak
客户:谢谢,我修改了 makefile_linux_arm.mak 以执行与“make linux_fs_install_sd”相同的步骤,但直接从 EVM 通过 SSH 将文件系统安装到已挂载的文件系统上。
速度有点慢,但可以满足我们的需求。
Cherry Zhou:
我们建议您在发布新问题之前先搜索 E2E支持论坛,E2E支持论坛已经拥有数十万个已得到解答的话题。 这通常是解决问题的最快方法。