串列埠傳輸檔案來啟動系統
原文:http://www.cnblogs.com/lidabo/p/4780866.html
假設有一種開發環境,一塊板子,除了串列埠,沒有任何外部出入輸出裝置,沒有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--獲取原始碼
獲取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檔案傳送資料