基于串口的连接
串口连接
当需要进行 SylixOS 系统启动固化、Shell 交互以及调试信息确认时,需要通过调试串口连接开发板进行交互及信息获取,因此我们在交互、开发、调试时首先需要调试串口来进行信息获取。
使用串口优势:
- 有些硬件平台不具备网络功能,而几乎所有硬件平台都具备串口功能,这时通过串口进行Shell 操作和文件传输就是唯一的方式了。
- 串口硬件实现简单,几乎所有硬件平台都具备串口功能,串口连接廉价且易实现。
- 在网卡驱动调通之前,网络不可用,想要进行Shell 操作和文件传输也只能用串口方式。
- 对于一个具备网络功能的系统,可能并不知道其IP地址,或没有进行正确网络配置,也是无法通过网络访问的。此时就需要先通过串口命令行来查看或配置网络后才可转为使用网络连接。
- 在串口命令行下进行文件传输,不需要切换其他软件,直接用 x/ymodem 命令即可,对于传输一些小文件比较方便。
串口说明
串行接口简称串口,也称串行通信接口(通常指COM 接口),是采用串行通信方式的扩展接口。串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
常用的调试串口采用 RS232(公头、母头)或 TTL,因此在连接这些调试串口就需要确认当前串口是 RS232(公头、母头)还是 TTL,然后选择对应的 USB 转串口线或者杜邦线进行连接,最后使用串口调试工具配置相应的波特率等参数进行连接。
注意:
因为 TTL 电平与 RS232 串口并不一致,RS232 串口线连接 TTL 可能会导致电路烧毁,因此在串口线连接板卡是一定要确认板卡的调试串口对应的标准!
RS232 说明
RS232 符合电子工业联盟(EIA)建立的串行数据通信接口标准。原始编号是 EIA-RS-232。它广泛用于计算机串行接口外设连接,连接电缆以及机械、电气、信号和传输过程。
而板载的串口通常分为两种:公头、母头。且公头/母头的 2、3、5 号引脚分别代表 RX、TX、GND,当我们通过串口线进行连接时主要用到这三个引脚。
串口作为一种古老低速率的通信接口,已在大部分台式机和所有笔记本电脑上取消,而嵌入式目标板一般又都需要串口作为 Boot 和系统的基础命令行,所以就需要一种 USB 串口线/模块来通过 USB 接口来扩展出标准串口,扩展出标准串口和原生串口没有区别。
USB 串口线一端为 USB2.0 TypeA 口,一端为串口,串口可能是 DB9 形式的 RS232 标准也可是插针形式的 TTL 标准,要根据目标板的串口标准来选择匹配的 USB 串口线进行连接。
USB 串口线是指将板载调试串口连接上位机 USB 口的连接线,实现上位机能够发现并且连接板载调试串口进行数据交互的调试线。USB 串口线同样分为公头、母头两种,与板卡连接时只需要两两匹配或通过杜邦线连接即可。
TTL 说明
TTL:TTL 指双极型三极管逻辑电路(transistor transistor logic),市面上很多“USB 转 TTL”模块,实际上是“USB 转 TTL 电平的串口”模块。这种信号 0 对应 0V,1 对应 3.3V 或 5V。与单片机、SOC 的IO电平兼容。不过实际也不一定是 TTL 电平,因为现在大部分数字逻辑都是 CMOS 工艺做的,只是沿用了 TTL 的说法。我们进行串口通信的时候从单片机直接出来的基本是都是 TTL 电平。
部分板卡如 FTE2000 采用的就是 TTL,需要确认板载 TTL 的引脚位置,并且通过杜邦线将板载引脚与 TTL 转 USB 模块的引脚进行连接即可使用。
串口连接命令行
PuTTY 使用
打开串口调试工具 PuTTY。找到 PuTTY 工具路径,然后双击 PuTTY.EXE。
通过 Windows 电脑的 设备管理器 ,查看串口的端口号。如下图所示, 串口号 为 COM3 。如果无法识别串口,可能是没有安装此串口的驱动程序,需要下载并安装驱动。
配置连接。在 Session 页面,设置串口端口和波特率等参数,参数要和目标机串口参数一致。
选择 Serial ,配置串口 Flow control 参数为 None 。
单击 Open ,能够进入串口调试界面,并获取 SylixOS 后台信息打印。
通过串口传输文件
文件传输是数据交换的主要形式。在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议。这个协议包括了文件的识别、传送的起止时间、错误的判断与纠正等内容。Xmodem、Ymodem协议是最常用的通信协议。
Xmodem
协议介绍
Xmodem 是一种简单而古老的串行通信协议,用于在计算机之间或计算机与外设之间进行数据传输。它是由 Ward Christensen 和 Randy Suess 开发的,最初用于 BBS(电子公告板系统)之间的文件传输,后来被广泛应用于微机领域中,特别是在 DOS 和 CP/M 系统中。
Xmodem 协议的基本特点是:分组传输、错误校验、确认应答和重传机制。它将要传输的数据分成称为“数据包”的小块,每个数据包包含 128 字节的数据、一个校验和和一些控制字符。当接收方接收到一个数据包后,它会进行数据校验,如果发现错误,就会发送一个否定的确认应答(NAK),要求发送方重传该数据包。如果数据校验没有发现错误,接收方就会发送一个肯定的确认应答(ACK),告诉发送方可以继续发送下一个数据包。
Xmodem 协议后期进行了扩展,增加了 1024 数据帧长和 CRC 校验方式,1024 相比于 128 数据帧长能大部分提升传输速度,而 CRC 校验相较于 SUM 校验能大幅提高校验强度。即目前 Xmodem 实际传输帧可能存在四种类型:128_SUM,128_CRC,1024_SUM,1024_CRC。
注意:
Xmodem 以固定帧长(数据域为 128 字节或 1024 字节)进行数据传输,尾帧不足整帧时使用 0x1a 进行填充,这就导致接收到的文件可能比实际文件要大一些。
协议使用
SylixOS 内置 xmodemr(xmodem 协议接收)和 xmodems(xmodem 协议发送)两个命令来实现 xmodem 功能。
[root@sylixos:/root]# help xmodemr
receive a file use xmodem protocol.
xmodemr file
xmodemr file path
[root@sylixos:/root]# help xmodems
send a file use xmodem protocol.
xmodems file 1k
xmodems file path [1k]
注意:
SylixOS 内核 V3.2.1 版本开始支持 Xmodem 所有四种帧模式,之前只支持 128_SUM 模式,和某些客户端交互时可能存在问题。
xmodemr 接收文件
此命令使用 xmodem 协议从远程接收一个文件,file 表示文件名称,path 表示文件存储路径。
[root@sylixos:/root]# xmodemr xmodemtestfile
Starting xmodem transfer. Press Ctrl+C to cancel.
Transferring xmodetestfile...
100% 16 bytes 16 bytes/sec 00:00:01 0 Errors
[root@sylixos:/root]# cat xmodemtestfile
Hello SylixOS!
[root@sylixos:/root]#
xmodems 发送文件
发送时可选“1k”参数来指定使用 1024 数据帧长发送以提高速度,无该参数时使用默认的 128 长度。
[root@sylixos:/root]#
[root@sylixos:/root]# xmodems /apps/test
已经开始 xmodem 的传输. 按 Ctrl+C 进行取消.
正在传输 D:\tmp\t1...
20 KB 2 KB/秒 00:00:08 0 错误
[root@sylixos:/root]#
[root@sylixos:/root]# xmodems /apps/test 1k
已经开始 xmodem 的传输. 按 Ctrl+C 进行取消.
正在传输 D:\tmp\t2...
21 KB 21 KB/秒 00:00:01 0 错误
[root@sylixos:/root]#
如上,同一文件发送,使用 1k 模式会大幅提升传输速度。
Zmodem
协议介绍
Zmodem 协议是一种流行的文件传输协议,它是从 Xmodem 和 Ymodem 协议中发展而来的。与 Xmodem 和 Ymodem 相比,Zmodem 协议具有更高的可靠性和更快的传输速度。
Zmodem 协议使用了多种技术来实现文件传输的可靠性和高效性。其中包括:
- 数据压缩:Zmodem 协议使用了 Lempel-Ziv-Welch (LZW)算法对数据进行压缩,从而减少传输的数据量。
- 数据校验:Zmodem 协议使用了 CRC 校验和来验证数据的完整性,从而确保传输的数据没有被损坏或篡改。
- 数据窗口:Zmodem 协议使用了可变大小的数据窗口来控制传输速度,从而避免网络拥塞和数据丢失。
- 自动重传:Zmodem 协议会在传输过程中检测到任何数据错误或丢失,并自动重传这些数据,从而确保数据的可靠性。
Zmodem 协议通常用于通过串口传输文件,但也可以用于其他类型的网络传输。它已经成为许多操作系统中标准的文件传输协议之一。
协议使用
在 base 工程中选择 libxmodem 库,并进行编译。
将编译生成的 rz、sz 程序通过FTP部署到 SylixOS 文件系统内。
在 SylixOS 系统下直接执行 rz
命令,会弹出 zmodem 传输界面,选择传输文件目录,并双击需要选择的文件,当下方弹出文件路径后,点击 ok 键即可实现从宿主机获取文件。
传输完成后,可以看到当前目录下获取到的文件。
[root@sylixos:/root]# rz
rz ready. Type "sz file ..." to your modem program
Starting zmodem transfer. Press Ctrl+C to cancel.
Transferring xmodetestfile...
100% 16 bytes 16 bytes/sec 00:00:01 0 Errors
tarting zmodem transfer. Press Ctrl+C to cancel.
rz 3.48 01-27-98 finished.
[root@sylixos:/root]# ls
rz xmodetestfile
[root@sylixos:/root]# cat xmodetestfile
Hello SylixOS!
[root@sylixos:/root]#