串口傳輸文件 lrzsz
假設有一種開發環境,一塊板子,除了串口,沒有任何外部出入輸出設備,沒有sd卡,沒有網線,這個時候如果你想跟這塊板子傳輸交互文件,要怎么辦?
根據modem所采用的文件傳輸協議:xmodem,ymodem,zmodem將其分類
xmodem:簡單通用,傳輸信息單位是“包=128B”,傳輸速度慢,適合電話線路質量差的情況下用
ymodem:由XMODEM演變來,效率可靠性高,包=128*8B;一次傳輸可發送或接受幾個文件
zmodem:于上兩種不同,已連續的數據流發送數據,效率更高
在ubuntu主機中可以直接使用rz或者sz命令與secureCRT交互文件
在開發板中busybox提供rx命令可直接Xmodem下載文件到開發板,但是沒有找到上傳命令
命令:
rz 下載Zmodem
xz 上傳Zmodem
rx 下載Zmodem
如果想在開發板中上傳文件的話可以移植完整版的lrzsz到開發板,完整使用其功能
一,移植lrzsz到開發板中
lrzsz工具在配合secureCRT相當實用,現把其移植到arm-linux下
交代下環境:
pc ubuntu12.4
cross-compile arm-linux-gcc
--1--獲取源碼
http://www.ohse.de/uwe/software/lrzsz.html
獲取lrzsz-0.12.20.tar.gz
--2--解壓源碼
tar -xzf lrzsz-0.12.20.tar.gz
--3--生成cache文件
./configure --host=arm-linux --cache-file=./arm-linux.cache
這個時候目錄中應該生成了./arm-linux.cache文件
--4--修改配置
vi arm-linux.cache
將
ac_cv_prog_CC=${ac_cv_prog_CC='gcc'}
改成
ac_cv_prog_CC=${ac_cv_prog_CC='arm-linux-gcc'}
--5--使用cache文件配置源碼
./configure --host=arm-linux --cache-file=./arm-linux.cache
--6--編譯源碼
make
注:可能出現的問題:zglobal.h:188:22: error: libintl.h: No such file or directory
注:可能出現的問題:warning: incompatible implicit declaration of built-in function 'gettext'
解決方法:
vi config.h
修改/* Define to 1 if NLS is requested. */
#define ENABLE_NLS 1
為
#define ENABLE_NLS 0
--6--得到工具
在src/文件夾下的lrz和lsz工具即是交叉編譯成功的lrzsz工具了
--7--實用
將lrz和lsz復制到板子/bin下,即可使用,當然要配合secureCRT
一,利用lrzsz通過串口與secureCRT傳輸文件
--1--secureCRT設置,在串口的情況下需要打開XON/XOFF流控機制
會話選項->串行->流控->XON/XOFF 打鉤,然后重啟會話
會話選項->終端->X/Y/Zmodem->目錄 選擇要存放的目錄(我選擇的是桌面)
--2--上傳文件
終端輸入lrz命令后自動彈出選擇文件對話框,選擇之后開始傳輸
$ ./lrz
--2--下載文件
終端中輸入lsz+文件名
$ ./lsz <文件名>
--3--通過BusyBox中的rx簡單下載文件
如果根本完全沒有任何外部接口,連lrzsz都灌不進去。或者只想下載傳輸文件,不需要上傳的情況,可以使用Busybox中的rx命令簡單下載文件
終端中輸入rx+要保存的名稱,比如$rx redmin.txt
然后在終端中發送文件 菜單->傳輸->發送Xmodem->選擇redmin.txt文件發送數據
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成