一直以来我都以为串口这个速率无法传输文件,在与嵌入式通信的时候都是nfs,telnet之类的,这几个月我的USB转网口的模块还坏了,我一直在用sd卡传输文件,不堪其扰。这段时间才看到可以使用串口传输文件,总算是解放了。
rz(resive z-modem)和sz(send z-modem)是比较古老的工具,而且速率较慢,自己测试传输的时候速率只有20 kBPS,只能传输小文件,这个应该是跟波特率有关,能使用nfs的话还是用nfs好一点。
参考资料韦东山老师的rz/sz教程
编译如果在开发板中没有rz/sz(lrz/lsz)工具,那需要自己编译一个放进开发板中。
12345# download source codewget https://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz# decompress tar -zxvf lrzsz-0.12.20.tar.gz进入解压出来的文件夹中,输入./configure --prefix=$PWD/__install --host=aarch64-linux-gnu,根据你的交叉编译工具链修改--host后面的内容
然后执行make && make install即可在./__install/bin目录下看到编译好的工具,将他们放入开发板中即可。
rz : PC向开发板发送文件一般PC端的的串口软件都是支持rz发送文件给开发板的,我使用的MobaXterm。
通过串口连接开发板进入Linux系统之后,输入rz,开发板会等待PC端发送文件。
12[root@/]$ rz▒z waiting to receive.**B0100000023be50这个时候对着MobaXterm的终端界面右键(或者ctrl+shift+右键)就可以打开选择框,选择Send file using Z-modem就可以调用资源管理器向开发板传输文件了。
我的MobaXterm右键是粘贴内容,所以需要ctrl+shift+右键才能打开选择框
sz : 从开发板下载文件到PC在终端输入sz 之后就会进入发送模式等待PC接收文件。
12[root@/]$ sz /root/algo/result.jpg▒*B00000000000000这时候按照上面的方法打开MobaXterm的选择框,选择Receive file using Z-modem即可选择文件保存位置。
总结这个方法只适用于小文件,大文件动辄20多分钟,谨慎使用
最后还是很少用串口传文件,太慢了,目前在使用adb,之后有机会出一篇博客。