串口传输文件 前面已经进行了开发环境,包括编译环境的准备,每次生成执行文件(如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和sz ln -s /usr/bin/lrz rz ln -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将文件内容都打印出来了(乱码部分),且显示了文件传输的进度(百分比)。 接收过程 最后接收完成 然后从接收文件夹路径就能找到该文件了。 实际测试过程中发现,这个操作并不是那么稳定,有时候还会传输失败,方便是方便,但也可能并不是一个最佳方案。
|