嵌入式linux系统与主机通过串口传输文件

2019-07-12 17:02发布

转自:http://www.happylivelife.com/r/?p=20&id=350 文中所说超级终端,用Securecrt即可 1. 常见串口问题解决 1) 乱码解决方案 选项-波特率 改为 115200 2) 不响应按键解决方案 选项-串行-流控 取消所有选择 2. 串口传文件 我想如果要从PC机下载东西到开发板的嵌入式linux系统里面,很多人首先会想到用tftp sftp等网络工具从网口下载。但如果网络用不了,只能通过串口下载怎么办呢?这个时候有两个工具能帮到你:一个是zmrx、zmtx,另外一个是lsz、lrz。个人觉得zmrx/zmtx没有lsz/lrz稳定,建议还是用后者。下面介绍一下lsz/lrz的使用方法。 一、编译lrzsz并下载到开发板上 http://download.chinaunix.net/download/0007000/6293.shtml 我编译的是mips板子,而mips-linux-gnu-gcc 默认编译的是大端MSB程序所以在configure的时候 :./configure --build=i686 --host=mips-linux-gnu 'CFLAGS= -EL' 在CFLAGS 中添加 -EL 用于设置编译的是小端程序 如果要编译大端程序可以改成 -EB (在arm系统中 是 -mbig-endian -mlittle-endian),如果添加在CFLAGS 中不起作用,可以添加在CC中 ./configure CC="mips-linux-gnu-gcc -EL" 我这边就编译ok了。 下一个lrzsz的tar包,解压缩后输入./configure,然后进入了src文件夹中,修改了src文件夹中的Makefile文件,配置为与手机对应的交叉编译器,运行make,OK! 得到两个可执行文件sz,rz(或者 lsz,lrz),把它们下载到开发板linux系统的/bin目录下。 二、情况1: PC机用windows操作系统 如果PC机用的是windows操作系统,串口通信工具可以用系统自带的超级终端。下面介绍一下传输文件的方法。 1、开发板-->PC机 在开发板上输入 sz filename。 在PC机上点击超级终端的菜单“传送”-> “接收文件”,选择下载的位置和Zmodem 与崩溃恢复协议,点击接收即可。 2、PC机-->开发板 在开发板上先进入/tmp 目录,然后输入 rz。 在PC机上点击超级终端的菜单“传送”-> “发送文件”,选择目标文件和Zmodem 与崩溃恢复协议,点击发送即可。 三、情况2: PC机用 linux 操作系统 如果PC机用的是 linux 操作系统,串口通信工具可以用minicom。下面介绍一下传输文件的方法。 1、如果是第一次使用minicom,需要进行minicom的设置: # minicom -s 出现这样的配置界面: ┌───── [configuration]──────┐ │ Filenames and paths │ │ File transfer protocols │ │ Serial port setup │ │ Modem and dialing │ │ Screen and keyboard │ │ Save setup as dfl │ │ Save setup as.. │ │ Exit │ │ Exit from Minicom │ └───────────────────┘ 选择Serial port setup, 会看到这样的选项: A — Serial Device : /dev/ttyS0 B — lockfile Location : /var/lock C — Calling Program : D — Callout Program: E — Bps/par/Bits : 115200 8N1 F — Hardware Flow Control : NO G — Software Flow Control : NO Change with setting? 输入前面对应的字母即可进入相应的选项。将选项A的值设置为/dev/ttyS0 表示是串口1,将选项E的值设置为115200,将选项F设置为NO(请根据实际情况配置). 初始化设置中可以设置默认上传/下载的目录,传输协议参数,串口波特率等.设置完成后,选择”Save setup as dfl”,保存为默认设置.然后选择“Exit”,按Ctrl-A,再按z,即可进入Minicom的主界面: Welco┌─────────────────────────────────┐ │ Minicom Command Summary │OPTIO│ │Compi│ Commands can be called by CTRL-A │ │ │Press│ Main Functions Other Functions │ │ │ │ Dialing directory..D run script (Go)....G | Clear Screen.......C │ │ Send files.........S Receive files......R | cOnfigure Minicom..O │ │ comm Parameters....P Add linefeed.......A | Suspend minicom....J │ │ Capture on/off.....L Hangup.............H | eXit and reset.....X │ │ send break.........F initialize Modem...M | Quit with no reset.Q │ │ Terminal settings..T run Kermit.........K | Cursor key mode....I │ │ lineWrap on/off....W local Echo on/off..E | Help screen........Z │ │ | scroll Back........B │ │ │ │ Select function or press Enter for none. │ │ │ │ Written by Miquel van Smoorenburg 1991-1995 │ │ Some additions by Jukka Lahtinen 1997-2000 │ │ i18n by Arnaldo Carvalho de Melo 1998 │ └──────────────────────────────────┘ CTRL-A Z for help | 38400 8N1 | NOR | Minicom 2.00.0 | VT102 | Offline 2、开发板-->PC机 在开发板上输入 sz filename,然后会出现一个传输界面,传输完成后可以在你设置的默认下载目录里找到这个文件。 3、PC机-->开发板 在开发板上先进入/tmp 目录,然后输入 rz。 按Ctrl-A,再按s,会出现一个选择文件的界面,选择你要传输的文件,回车后出现一个传输界面,传输完成后便可以在开发板的/tmp目录下找到这个文件了。 目标板与主机pc传输文件问题,可以使用linux的工具lrzsz 工具,交叉编译后把 lrz lsz 传输到目标版的bin目录下,然后在想要接受文件的目录下运行lrz :比如 cd /tmp 在tmp目录下运行lrz 则接受到的文件就放在tmp下。 我的串口传输用kermit 所以需要在运行先设置一下kermit的配置 在/home/richard/.kermit 文件中写道: set line /dev/ttyUSB0 set speed 115200 set carrier-watch off set handshake none set flow-control none robust set file type bin set file name lit set rec pack 1024 set send pack 1024 set window 5 set protocol zmodem 主要是最后的 zmodem 是用于传输串口文件的。 当在串口中运行lrz后 按ctrl+ 然后按c 返回pc目录 然后cd到想要传输的文件路径 然后send libicon.so 这样就把libicon.so传输到目标版上了。