1. 程式人生 > >串列埠傳輸檔案來啟動系統

串列埠傳輸檔案來啟動系統

原文: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檔案傳送資料