explorer

万丈高楼平地起,勿在浮沙筑高台

0%

[What]使用串口从主机传输文件到目标板

在进行嵌入式linux调试时,经常会需要将代码在主机上交叉编译后再发送到目标板上。

当有网络的情况下, 通常是使用 tftp 来收发文件, 但当没有网络时, 则可以使用 lrzsz 来完成.

使用步骤

编译可执行文件

下载 源码 , 并解压缩后使用下面的命令编译

tar -xzf lrzsz-0.12.20.tar.gz
#指定编译器,编译构架以及输出的文件夹路径
CC=arm-linux-gnueabihf-gcc ./configure --target=arm --prefix=/home/cec/Downloads/lrzsz-0.12.20/build/
make
make install

然后将编译好的 build/bin 目录下的应用拷贝至文件系统, 其中 lrz 接收, lsz 发送.

传输文件

在 linux 主机下一般使用终端 minicom.连接好开发板后, 开发板首先运行 lrz ,然后在主机下 CTRL-A s ,选择 zmodem 然后传输文件.

1. minicom 中选择文件使用 “单击空格键”,而进入文件夹则使用 “双击空格键”,选中后回车即可发送
2. 当当前目录下具有相同文件时,需要使用 “lrz -y” 来覆盖当前文件

提高传输速度

为了提高文件的传输速度,首先需要将串口速率提高,其次是使用 xdelta 仅传送patch的方式来减小传输文件大小。

  • xdelta 的安装参考 此博客 即可,但命令的使用需要注意一下:
    • 生成补丁: xdelta3 -e -s <old file> <new file> <patch_name>
    • 应用补丁: xdelta3 -d -s <old file> <patch_name> <output_file>
但这种方式仅仅用在出厂调试比较合适,实际在用户远程升级中,不同的用户的当前版本不同,所以无法简单的用一个patch来升级。

除非服务器与产品进行通信,根据产品的版本号提供不同的patch来对应升级。

遇到的问题

device is locked

问题

当minicom没有正常退出时,再次启动minicom 就会出现警告 Device /dev/ttyUSB0 is locked

解决

这是由于minicom对此设备进行了加锁,删除文件 /var/lock/LCK..ttyUSB0 即可.

网络问题

问题

当我使用 ssh 链接到主机Linux 来使用 minicom 的时候,如果网络突发中断一次则会导致minicom工作异常。

解决

目前只有重启系统可以比较好的解决,如果网络常常不稳定,那还是直接用主机直接操作吧(囧…)。

Last Updated 2021-01-26 二 12:12.
Render by hexo-renderer-org with Emacs 26.3 (Org mode 9.4)