当前位置:首页 » 操作系统 » xmodem源码

xmodem源码

发布时间: 2023-09-07 19:46:40

A. linux minicom需要安装的库怎么安装

1. minicom需要ncurses库的支持,否则安装会有问题。
A. 下载ncurses。我选择是ncurses-5.6.tar.gz
下载地址:directory.fsf.org/project/ncurses/
B. 解压缩到/opt/ncurses目录下。# tar zxvf ncurses-5.5.tar.gz –C /opt/ncurses
C. 到ncurses目录下,配置编译ncurses。
源码安装的三个步骤(configure、make、make install)
2. 编译安装minicom
A. 下载地址(minicom-2.7.tar.gz)
alioth.debian.org/projects/minicom/
B. 解压到/opt/minicom目录下。tar zxvf minicom-2.1.tar.gz –C /opt/minicom/
C. 到minicom-2.7目录下,配置编译minicom。
在make阶段会出现错误,具体解决方法见注1。
3. Minicom的配置和使用
命令minicom是进入串口超级终端画面,而minicom -s为配置minicom。
打开终端输入minicom后,初始化进入minicom的欢迎界面,这里提示按"Ctrl+A",再按"Z"键进入主配置目录 按下"O"键,并选择串口配置选项进行配置。接下来的配置是一样的。解析一下minicom命令摘要,命令将被执行当你按下Ctrl+D ,Key是对应的"字母"键。
“D”键:拨号目录
“S”键:发送文件,上传文件有几种方式:zmodem、ymodem、xmodem、kermit、ascii
“P”键:通信参数。对波特率进行设置。
“L”键:捕捉开关。
“F”键:发送中断。
“T”键:终端设置。
“W”键:换行开关
“G”键:运行脚本
“R”键:接收文件
“A”键:添加一个换行符
“H”键:挂断
“M”键:初始化调制解调器
“K”键:运行kermit进行刷屏
“E”键:切换本地回显开关
“C”键:清除屏幕
“O”键:配置minicom
“J”键:暂停minicom
“X”键:退出和复位
“Q”键:退出没有复位
“I”键:光标模式
“Z”键:帮助屏幕
“B”键:滚动返回
注1:minicom编译安装错误解决方法.
1. 在window.c中修改 static const char *CR, *NL;
为: static const char *BC,*CR, *NL;
2. 在src下面的Makefile中添加ncurses库的名称。
即:LIB = /opt/ncurses/lib/libncurses.a
注2:
A PC使用的USB转串口,虚拟机的设置要添加“USB控制器”。
需要查看/dev目录下是否存在ttyUSB0文件,如果没有,手动创建一个
# mknod /dev/ttyUSB0 c 188 0
默认情况下,linux已经安装了USB转串口的驱动(PL2303)
# lsmod | grep usbserial
如果有usbserial, 则系统支持USB转串口
B. PC使用串口。Serial Device要配置为/dev/ttyS0。
虚拟机的设置参见下面链接的“Minicom串行端口的设置”

B. 各位高手,请问xmodem/ymodem/zmodem有什么区别

:XMODEM协议的控制字符
上表中各个缩写也是标准ASCII码的一个字符,在XMODEM协议中需要使用这些字符来表达协议的状态。而其基本含义如表中所述。

2.2 数据帧格式与文件分解
XMODEM协议每次传送的数据帧长度为132字节,其中文件数据占128字节,其他4个字节分别为开始标志,块序号,块序号的补码和校验字节。其中开始标志,块序号,块序号的补码位于数据块开始, 校验字节位于数据块结尾,如:

偏移 字节数 名称 描述 说明
名称 数值(HEX)
0 1 SOH 01 起始字节标志
1 1 Seq 1~FFh 块序号
2 1 cmpl FFH-seq 块序号的补码
3 128 data ? 文件内容数据
131 1 csum ? 垂直累加和校验 1:XMODEM协议允许使用2种校验码。2:校验码只从128字节的数据进行计算后得出,头部3个字节不参加校验和运算。
2 CRC ? 16位循环冗余校验
图表 3:XMODEM协议的数据帧格式
如果文件长度不是128字节的整数倍,最后一个数据块的有效内容必然小于帧长,剩下部分需要用其他数据来填充,XMODEM建议使用“CTRL-Z”(=26(01aH)),这种情况下,接收方如何区别该帧中属于文件的内容和填充的内容呢?
如果传送的文件是只包含字母、数字和可显示符号的文本文件(例如C程序源代码文件),那么根据内容本身接收方是可以区分的(“26”不是字母或者数字的ASCII码),如果传送的是任意数值的二进制文件(如程序目标码),则接收方是无法区分文件内容和填充内容。
重要提示:XMODEM协议不能保证接收方接收的文件长度和发送方完全一致,接收方所接收的文件数据长度总是128字节的整数倍,比发送文件的实际长度要大1到127字节。多出的内容位于文件结尾处。
XMODEM协议的这种缺点对于用于嵌入式系统的程序代码下装没有实际影响,处理器不会将填充内容当作代码执行,只要程序存储器的容量足够,能存储接收的所有数据就可以了。如果将XMODEM协议用于数据库下装,应当考虑多余内容的影响,一般标准数据库文件中均有表示数据库尺寸、字段数、记录数等数据库结构参数,所以也不会把填充内容当作数据库的记录本身。
同样,对于汉字库这种数据库,使用XMODEM协议来下载也不会产生问题。

2.3 校验算法
校验码是对发送数据进行某种计算得到的编码,为了防止数据在发送途中某些位发生错误,各种数据通信协议规定发送方除了发送应用数据外,还要发送校验码,而数据接收方则根据同样算法从收到的应用数据中计算出校验码,并和发送方发送的校验码比较,如相等,才认为收到了正确的数据。
在XMODEM协议中,可使用垂直累加和或者CRC校验,使用CRC校验的通信软件可以自动从CRC校验自动切换到累加和校验模式。在本应用中,我们使用垂直累加和校验。
累加和校验码是将所有发送数据的和按字节累加,保留其最低字节作为校验码,例如,发送的3个字节数据分别为255(FFh),5(05h),6(06h), 则:
1 1 1 1 1 1 1 1 FFH
0 0 0 0 0 1 0 1 05H
0 0 0 0 0 1 1 0 06H

1 0 0 0 0 1 0 1 0 -> 0000 1010
将高位丢弃后,得到累加和校验码为0Ah(10)。在上例中,如果原来数据在途中发生了变化,如FFH变为FEH,06H变为07H, 05H未变,则接收方所计算的校验码为:
接收 发送
1 1 1 1 1 1 1 0 FEH <- FFH
0 0 0 0 0 1 0 1 05H < - 05H
0 0 0 0 0 1 1 1 07H <- 06H

1 0 0 0 0 1 0 1 0 -> 0000 1010
校验码也为0AH。可见,在数据中有2位改变时,接收方所计算的校验码仍然与发送方一致,这种校验方式不能检测偶数位的误码。
XMODEM协议的校验码只对数据帧中的128字节数据进行计算后得出,头部3个字节不参加校验和运算。

2.4 XMODEM协议的启动
XMODEM协议开始是文件接收方发出“NAK”字节,文件发送方在收到该信号后发送数据帧,双方开始正常通信过程。而文件发送方进入XMODEN协议后,等待对方发送”NAK”,如果等待时间超过60秒,则退出本次通信。
接收方发出“NAK”后,如果10秒后对方还没有发送第一个数据帧,则重复发送“NAK”,这种重复次数最多允许10次,仍然没有收到第一个数据块,则退出本次通信。

(A):发送方软件延迟100秒以上工作导致不能启动协议

(B):接收方软件延迟60秒发送”NAK”信号导致不能启动协议

图表 4 XMODEM协议不能启动的2种情况
在嵌入式系统通过PC机来下载软件的应用中,嵌入式系统软件是文件接收方,PC机超级终端软件是文件发送方。按照协议规定,嵌入式系统 的通信软件进入XMODEM协议状态后,PC机软件必须在100秒内进入协议状态(即执行超级终端的XMODEM文件传输功能),反之,后者先进入协议状态,前者必须在60秒内进入协议状态,显然,通过人工来操作,这种时间差有些紧张。解决办法只有加长嵌入式系统加载软件的启动等待时间,这种修改不会引起协议理解的歧义。

重要提示:为了发送和接收方能够更容易启动XMODEM协议,在设计中,将延长嵌入式系统下载软件的启动延时时间,在以下的代码中,将这种延时时间改为600秒(10分钟)。或者将等待时间设置为无限长,一致发出”NAK”信号,直到PC机上的超级终端软件运行为止。

2.5 XMODEM的正常传输过程
中给出了一次正常的XMODEM通信中收发双方的通信过程。

图 5:没有差错的文件传输过程
文件接收方每收到一个数据帧后,如没有校验差错、序号差错等情况,均发送一个“ACK”字符作为应答,发送方在收到应答后才开始发送下一个字符,如此反复,直到文件内容传送完毕,发送方传送“EOT”字符表示传送完成,发送方收到后再次以“ACK”回应,至此,整个文件传输过程就结束了。

2.6 XMODEM协议的中止
在通信进行过程中,双方中的任意一方如果希望中止本次通信,可以发送“CAN”字符给对方,现在很多XMODEM协议软件要求发送2个”CAN”字符来实现,
协议软件的主动中止通信一般是人为发起的,例如按下超级终端软件的“取消”按钮。或者通过拔码开关来控制嵌入式系统的下载软件退出通信。

2.7 XMODEM协议的异常处理
在通信过程中,总是要出现各种异常情况,比如通信线路的突然中断,一方机器停电而导致软件中止执行等;通信软件必须能够检测这些错误,并作出合理的处理。在前面的协议启动一节中已经涉及到了错误检测的问题,XMODEM对错误的规定很详细,共计有8种情况,协议文本没有说明是如何引起的,中给出了可能原因,
在嵌入式系统中,考虑到下载软件一般均有人操作的,也可不考虑错误处理,这样实现实现代码会减小。在本文中,考虑到协议的完整性,考虑了各种错误的处理。

2.8 CRC校验与累加和校验方式的切换
XMODEM协议要求支持CRC校验的通信软件也能支持累加和校验,这样就可以和那些只支持累加和校验的软件进行通信,如果文件接收方只支持累加和,而发送方可支持CRC,接收方发送启动信号为“NAK”,发送方收到后自动按累加和方式发送数据帧;如果相反,接收方支持CRC,而发送方支持累加和,接收方首先发出字母“C”来作为启动信号,这时接收方应不理睬此信号,发送方在3秒后继续发送信号“C”,共三次未收到应答后,改为发送“NAK”信号,表示使用累加和方式进行通信了。
如果通信双方均采用CRC校验,上述通信握手信号“NAK”用字母“C来代替,其他过程同上。
因为PC机超级终端软件支持CRC模式,嵌入式系统作为文件接收方,只要发送“NAK”信号就能使对方自动按照校验和方式通信了。

3 协议分层与层间接口
3.1 协议分层
我们将协议代码分成3层:物理层,链路层和协议应用层。物理层用于控制UART器件,链路层处理XMODEM协议,应用层负责将收到的单个128字节数据块组合成一个完成的数据块,并写入程序存储器缓冲区。这种分层,在程序移植时只要修改和硬件相关的物理层、应用层代码,无需修改实现XMODEM协议的链路层代码。
层与层之间通过消息来通信,XMODEM协议没有规定分层结构和层间消息格式,这里将链路层与应用层之间、链路层和物理层之间的消息格式统一规定如下:
typedef struct {
int len; /* 消息内容长度,即Message中的内容字节数 */
char mType; /* 层间消息类型, */
char Message[MAX_ MESSAGE_LEN]; /* 消息内容, 由发送进程填写 */
} MessageOfLayer;
考虑到XMODEM数据帧为132字节,定义常量“MAX_MESSAGE_LEN”为132字节,按OSI标准,层间消息原语有数据请求、数据指示、响应、证实4种类型。给出了A方发送数据,B方接收数据时的层间消息类型图 6: 单向数据传送的层间消息顺序:①②③④
消息1,2是承载实际数据的数据帧,消息3,4是传送过程中的应答帧,表明数据已经正确传送,必须说明的是,在发送数据的证实消息3不是从对方发出的,物理层在发送出数据后,立即向上一层发出证实消息。
在实际应用中,处理正常的数据传送所需要的消息外,也需要定义一些控制管理消息,下面具体说明层间消息类型和作用。

3.2 链路层和物理层间的接口
n 数据请求:该消息用于向物理层发送XMODEM帧数据,包括132字节的文件数据帧和NAK,ACK,CAN单字节信号帧等,下载软件只是接收文件,不需要发送132字节的文件数据帧。
n 数据证实:物理层收到链路层的数据请求帧后,送到UART的缓冲器中,等发送缓冲器为空后,表明该字节数据发送完成,向链路层发送证实消息,链路层接收到此消息后,就可以发送下一个字节,实际上物理层传送是一个无连接,证实消息不是由接收方产生的,不能表明对方已经正确接收到数据,而只表明已经发出数据。物理层协议一般也不提供有应答的传输机制。
n 数据指示:物理层在接收缓冲器满后,将数据发送给链路层。
除了以上3个消息外,物理层和应用层之间还有以下2个消息:
n 启动电路:由链路层向物理层发出,物理层在收到该协议后将串口进行初始化。
n 电路出错:由物理层向链路层发出,用于报告物理层在数据传送过程中的错误。
“数据响应”消息在本应用中不使用。

3.3 链路层和应用层间的接口
链路层和应用层之间的数据传输消息有二个:
n 数据块指示:由链路层收到一个XMODEM协议帧(128字节)后向应用层发出,应用层收到数据帧后写入flash memory(PC版本写入文件)。
n 数据块块响应:应用层收到XMODEM数据帧后,并写入flash memory(PC版本写入文件)后向链路层发出的响应信号。链路层收到响应后,向文件发送方发出“ACK”信号。
其他管理控制消息定义了3个:
n 协议启动:应用层通知链路层启动XMODEM协议。
n 通信结束:链路层在收到对方的EOT信号后向应用层发出,应用层收到此消息后,可以转入应用程序入口,从而执行应用程序。
n 通信中止:链路层因为各种情况无法继续进行XMODEM传输时向应用层传送该消息,应用层收到此消息后,丢弃已经收到的数据,发出通信错误指示。

4 分层协议实现
4.1 协议的OS平台
为了实现分层协议,使用中的非抢先式操作系统作为软件平台,各层分别作为一个进程。

4.2 应用层软件实现
嵌入式系统下载软件只接收代码文件,对于协议中作为文件发送方的处理代码可不编写,应用层的任务是接收链路层的数据包,根据收到数据包的先后次序写入程序存储器,在PC机上模拟实现时,我们将数据存放在一个缓冲区内,完成后写入文件中,使用windiff软件和发送文件进行比较,以判断代码的是否正确。
应用层的进程初始化代码的作用是:
n 擦除程序存储器所使用的FLASH MEMORY(在本例中按29F010来编写代码)。
n 启动一个10秒定时器,10秒后通知链路层启动XMODEM协议。
n

C. ARM S3C2440 CPU 工作原理 及片内地址详细解释!谢谢

嵌入式ARM工控板 -- SBC2440-ISamsung S3C2440 单板计算机,支持触摸屏,2USB,2网卡,SD卡,摄像头 产品特点:
ARM9 S3C2440 CPU,最高400MHz 板载2MB Nor Flash,64MB Nand Flash 板载64MB Sdram 支持1 x 10/100M 网卡,1 x 10M网卡 支持5 x RS232串口 支持2 x USB,1 x USB Device 支持触摸屏LCD显示 支持百万像素摄像头 支持音频接口 支持SD卡存储 支持实时钟和看门狗 产品规格简介[229KB ]快速安装指南[245KB ]高分辨率图片[109KB JPG] 规格说明:系统 CPUSamsung S3C2440 (ARM920T, 400MHz)存储 板载 2MB Nor Flash,64MB Nand Flash内存 板载 64MB Sdram看门狗 Watch Dog TimerRTC支持实时时钟,带后备电池 I/O和通讯 USB2 x USB 1.1 Host,1 x USB 1.1 Device 串口 5 x RS232串口 (1 标准 DB9 串口和 2 x 3线串口,2个扩展串口TTL输出)网口 1 x 10/100M 以太网口, 1 x 10M 以太网口扩展总线 I2C,SPI,PC104,4 x PWMGPIO16 x 通用I/O显示 显示接口 支持彩色STN/TFT液晶屏 分辨率 320 x 240,640 x 480尺寸 标配3.5寸(320 x 240),选配8.4寸(640 x 480)触摸屏 4线电阻式触摸屏 存储 Flash64MB Nand FlashSD卡 板上提供1个SD/MMC卡座 声卡 芯片 UDA1341 音频接口 支持麦克风音频输入和音频输出 视频视频输入 支持1路CMOS Sensor接口,可接百万像素CMOS摄像头 软件功能:软件.6sbc_vivi

Xmodem支持 Xmodem 传输协议 USB(不提供源代码)vivi增加 USB 下载功能, 支持USB下载/上传镜像功能Kernel 参数支持 kernel 参数设定 硬盘分区支持硬盘分区设定etc.其他Kernel 版本Linux kernel 2.6.13File 系统ROM/CRAM/EXT2/FAT32/NFS/YAFFSDriver中断&定时器 支持系统中断&定时器串口5个串口,提供原代码10M 以太网 CS890010M/100M 以太网DM9000USB Host 支持USB 鼠标, USB 键盘, U盘RTC提供源代码ADCLinux2.6不支持 ADC 驱动AudioUDA1341LEDs Buttons用户自定义按钮Language支持多种语言选择帧缓冲支持帧缓冲SD/MMC提供源代码LCD支持分辨率为240x320, 640x480, 480x272, 800x480 (提供源代码)IDE不支持源代码Network protoco& applicationlTCP/IPTCP/IP 协议File 传输(FTPclient/server)远程登陆Telnet 协议Embedded GUI Qt/Embedded WinCE
4.2/5.0 Driver sbc_vivi
(不提供源代码)vivi增加 USB 下载功能, 支持USB下载/上传镜像功能Eboot Ethernet bootloader for wince 串口 5个串口提供驱动 内存 提供Nand Flash 驱动 10M 以太网 CS8900 USB Host 支持USB键盘、鼠标 USB device LED RTC EINT LCD支持 240x320, 640x480分辨率Audio UDA1341(提供源代码)SD/MMC card(提供源代码)

热点内容
javades加密工具 发布:2025-01-31 07:54:04 浏览:243
电话如何配置ip 发布:2025-01-31 07:48:48 浏览:299
2021奔驰e300l哪个配置性价比高 发布:2025-01-31 07:47:14 浏览:655
sqlserver2008光盘 发布:2025-01-31 07:32:13 浏览:577
sql查询小时 发布:2025-01-31 07:23:00 浏览:422
新车鉴别时怎么查看汽车配置 发布:2025-01-31 07:19:37 浏览:880
linux驱动程序开发 发布:2025-01-31 06:56:03 浏览:770
nlms算法 发布:2025-01-31 06:55:56 浏览:899
结束服务器怎么操作 发布:2025-01-31 06:54:17 浏览:393
android开源github 发布:2025-01-31 06:39:48 浏览:760