串口传输文件前面已经进行了开发环境,包括编译环境的准备,每次生成执行文件(如ko文件)后,需要通过以太网口,使用tftp的方式传给开发板,这个操作需要拉一根网线到路由器上,而路由器通常跟开发的电脑并不在一起,所以还是挺不方便,于是想到了是否可以通过串口进行数据的传输,通过学习,查找解决方案,发现了lrzsz这个神器,于是开始着手进行搭建这个工具。首先在wsl2上进入下载目录通过如下指令下载。wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
然后进行解压tar zxvf lrzsz-0.12.20.tar.gz
cd进入解压之后的lrzsz-0.12.20文件夹
执行如下两条命令CFLAGS=-O2 CC=arm-rockchip830-linux-uclibcgnueabihf-gcc ./configure其中:CFLAGS=-O2 // 编译选项CC=arm-rockchip830-linux-uclibcgnueabihf-gcc // 配置编译器为交叉编译器 加上CC参数表示即时生效
然后执行配置文件设置./configure //配置文件 前面两项必须放在./configure的前面 否则设置无效--prefix=/usr/local/lrzsz //表示具体安装到哪里 这个可以不要 我们知道交叉编译生成的lzr和lsr就可以了要特别注意arm-linux的gcc交叉编译确认成功,否则需要删除整个文件夹重新解压和配置
这时候使用ls命令就可以看到生成的Makefile文件了
此时执行make
最终完成编译
此后就可以在src文件夹看到lrz和lsz这两个 .o 可执行文件
其中lrz是开发板接收文件,lsz为开发板发送文件下面通过《sdk和开发环境部署》中提到的tftp的方式,将这两个文件发送到usr/bin文件夹下
接下来就使用两条命令创建软连接,并命名为 rz和szln -s /usr/bin/lrz rzln -s /usr/bin/lsz sz
此时就可以使用rz和sz进行文件上传和下载了,如果提示权限不足,则可以使用chmod命令更改sz和rz的权限。仍旧以之前生成的helloworld.ko文件为例先用串口链接板子,并在根目录查看并确认该路径没有这个文件
然后输入rz显示如下准备接收状态
在mobaxterm窗口右键点击send file using Z-modem
然后找到helloworld.ko文件点击打开
就开始发送,当发送完成,则提示如下
这时就可以在当前路径下找到helloworld.ko文件了
接下来测试从板子取刚才传进去的这个helloworld.ko文件,先确认接收路径下没有这个文件
然后输入sz helloworld.ko
然后就开始传输文件内容数据,可以看到mobaxterm显示开始接收数据,并且还能看到mobaxterm将文件内容都打印出来了(乱码部分),且显示了文件传输的进度(百分比)。
接收过程
最后接收完成
然后从接收文件夹路径就能找到该文件了。
实际测试过程中发现,这个操作并不是那么稳定,有时候还会传输失败,方便是方便,但也可能并不是一个最佳方案。