㈠ 西门子PLC中数据块储存和中间储存有什么不同
中间储存M:就是储存逻辑运算结果的M,掉电数据将丢失。
数据块DB:数据块可以包含很多的数据,掉电对数据不影响。
可编程逻辑控制器(PLC),它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。以德国西门子、日本三菱为代表。
㈡ xmodem ymodem 主要区别
内容提要:本文描述了使用XMOMDEM文件传输协议的通信程序设计,该设计为具有FLASH 存储器的嵌入式系统提供了和PC机上超级终端软件之间的文件传输功能,在PC机上不安装专用通信软件情况下,实现程序在板升级、数据在板定制等,给现场调试和维护带来方便。另外,本文也描述了基于状态矩阵的通信软件编程方法。
关 键 字: XMODEM 文件下载 FSM 状态矩阵
1 设计目的与用途
2 XMODEM协议介绍
3 协议分层与层间接口
3.1 协议分层
3.2 链路层和物理层间的接口
3.3 链路层和应用层间的接口
4 分层协议实现
4.1 协议的OS平台
4.2 应用层软件实现
4.3 链路层软件实现
4.4 物理层软件实现
5 软件移植
6 软件调试方法
参考文献
附录1:XMODEM协议通信的异常情况列表
附录2:XMODEM协议的状态转移表
附录3:源代码文件列表
附录4:完整源代码
1 设计目的与用途
嵌入式系统的程序代码一般存放在FLASH存储器或者OTP存储器中,后者实际上是一种一次性可编程的EPROM,成本低,适合于批量大的产品使用,但程序写入后不能修改,使用FLASH的优点是程序可以随时在板更换,这种特点给现场调试和软件升级、修改带来极大方便。
对印制板上FLASH编程有几种方法,原始的方法是使用编程器,由于要将芯片取下,十分不便,也有一些厂家生产的处理器通过JTAG接口或者串口连接到PC机上(如PHILIPS公司的P89C51RD),可以实现处理器内部FLASH的在板编程,但需要专用下载编程软件(一般由芯片生产厂商提供),无法对处理器外部的FLASH进行编程。
使用XMODEM协议进行程序下载是目前很多产品通用的做法,比如CISCO公司的路由器产品,HUAWEI公司的ISDN终端产品,这种方法使用WINDOWS自带的超级终端软件来传送文件,无需安装专用软件。只要在目标板上增加一断实现XMODEM协议的代码,就可以方便地实现程序或者数据文件的下载了。在下文中,就叙述XMODEM协议程序的实现方法。
图表 1:目标板程序由二部分组成:下载程序和应用程序
2 XMODEM协议介绍
XMODEM协议是最早出现的2台计算机间通过RS232异步串口进行文件传输的通信协议标准,相对于YMODEM,ZMODEM等其他文件传送协议来说,XMODEM协议实现简单,适合于那些存储器有限的场合。
XMODEM文件发送方将文件分解成128字节的定长数据块,每发送一个数据块,等待对方应答后才发送下一个数据块,数据校验采用垂直累加和校验,也可以采用16位的CRC校验。属于简单ARQ(自动请求重发)协议,所以也适合于2线制的半双工的RS485网络中使用。
2.1 术语
在具体叙述XMODEM协议的具体内容前,我们先给出协议用到的术语缩写。
术语 数值 含义 备注
十进制 十六进制
SOH 1 01H 数据块开始
EOT 4 04H 发送结束
ACK 6 06H 认可响应
NAK 21 15H 不认可响应 对于CRC校验的协议软件,本信号用字母“C”(43H)代替。
DLE 16 10H 中止数据连接
X-on 17 11H 数据传送启动 当通信双方的速度不一致时,可采用该字符来调节通信速度,比如接收方速度太慢而导致接收缓冲器满时,发送“X-off”给发送方,使发送方暂停发送数据。相当于RS232接口的DSR,CTS等信号。
X-off 19 13H 数据传送停止
SYN 22 16H 同步
CAN 24 18H 撤销传送
图表 2: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
㈢ 如何使用Xmodem传输交换机系统文件
内容提要:本文描述了使用XMOMDEM文件传输协议的通信程序设计,该设计为具有FLASH存储器的嵌入式系统提供了和PC机上超级终端软件之间的文件传输功能,在PC机上不安装专用通信软件情况下,实现程序在板升级、数据在板定制等,给现场调试和维护带来方便。另外,本文也描述了基于状态矩阵的通信软件编程方法。关键字:XMODEM文件下载FSM状态矩阵1设计目的与用途2XMODEM协议介绍3协议分层与层间接口3.1协议分层3.2链路层和物理层间的接口3.3链路层和应用层间的接口4分层协议实现4.1协议的OS平台4.2应用层软件实现4.3链路层软件实现4.4物理层软件实现5软件移植6软件调试方法参考文献附录1:XMODEM协议通信的异常情况列表附录2:XMODEM协议的状态转移表附录3:源代码文件列表附录4:完整源代码1设计目的与用途嵌入式系统的程序代码一般存放在FLASH存储器或者OTP存储器中,后者实际上是一种一次性可编程的EPROM,成本低,适合于批量大的产品使用,但程序写入后不能修改,使用FLASH的优点是程序可以随时在板更换,这种特点给现场调试和软件升级、修改带来极大方便。对印制板上FLASH编程有几种方法,原始的方法是使用编程器,由于要将芯片取下,十分不便,也有一些厂家生产的处理器通过JTAG接口或者串口连接到PC机上(如PHILIPS公司的P89C51RD),可以实现处理器内部FLASH的在板编程,但需要专用下载编程软件(一般由芯片生产厂商提供),无法对处理器外部的FLASH进行编程。使用XMODEM协议进行程序下载是目前很多产品通用的做法,比如CISCO公司的路由器产品,HUAWEI公司的ISDN终端产品,这种方法使用WINDOWS自带的超级终端软件来传送文件,无需安装专用软件。只要在目标板上增加一断实现XMODEM协议的代码,就可以方便地实现程序或者数据文件的下载了。在下文中,就叙述XMODEM协议程序的实现方法。图表1:目标板程序由二部分组成:下载程序和应用程序2XMODEM协议介绍XMODEM协议是最早出现的2台计算机间通过RS232异步串口进行文件传输的通信协议标准,相对于YMODEM,ZMODEM等其他文件传送协议来说,XMODEM协议实现简单,适合于那些存储器有限的场合。XMODEM文件发送方将文件分解成128字节的定长数据块,每发送一个数据块,等待对方应答后才发送下一个数据块,数据校验采用垂直累加和校验,也可以采用16位的CRC校验。属于简单ARQ(自动请求重发)协议,所以也适合于2线制的半双工的RS485网络中使用。2.1术语在具体叙述XMODEM协议的具体内容前,我们先给出协议用到的术语缩写。术语数值含义备注十进制十六进制SOH101H数据块开始EOT404H发送结束ACK606H认可响应NAK2115H不认可响应对于CRC校验的协议软件,本信号用字母“C”(43H)代替。DLE1610H中止数据连接X-on1711H数据传送启动当通信双方的速度不一致时,可采用该字符来调节通信速度,比如接收方速度太慢而导致接收缓冲器满时,发送“X-off”给发送方,使发送方暂停发送数据。相当于RS232接口的DSR,CTS等信号。X-off1913H数据传送停止SYN2216H同步CAN2418H撤销传送图表2:XMODEM协议的控制字符上表中各个缩写也是标准ASCII码的一个字符,在XMODEM协议中需要使用这些字符来表达协议的状态。而其基本含义如表中所述。2.2数据帧格式与文件分解XMODEM协议每次传送的数据帧长度为132字节,其中文件数据占128字节,其他4个字节分别为开始标志,块序号,块序号的补码和校验字节。其中开始标志,块序号,块序号的补码位于数据块开始,校验字节位于数据块结尾,如:偏移字节数名称描述说明名称数值(HEX)01SOH01起始字节标志11Seq1~FFh块序号21cmplFFH-seq块序号的补码3128data?文件内容数据1311csum?垂直累加和校验1:XMODEM协议允许使用2种校验码。2:校验码只从128字节的数据进行计算后得出,头部3个字节不参加校验和运算。2CRC?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),则:->00001010将高位丢弃后,得到累加和校验码为0Ah(10)。在上例中,如果原来数据在途中发生了变化,如FFH变为FEH,06H变为07H,05H未变,则接收方所计算的校验码为:接收发送11111110FEH00001010校验码也为0AH。可见,在数据中有2位改变时,接收方所计算的校验码仍然与发送方一致,这种校验方式不能检测偶数位的误码。XMODEM协议的校验码只对数据帧中的128字节数据进行计算后得出,头部3个字节不参加校验和运算。2.4XMODEM协议的启动XMODEM协议开始是文件接收方发出“NAK”字节,文件发送方在收到该信号后发送数据帧,双方开始正常通信过程。而文件发送方进入XMODEN协议后,等待对方发送”NAK”,如果等待时间超过60秒,则退出本次通信。接收方发出“NAK”后,如果10秒后对方还没有发送第一个数据帧,则重复发送“NAK”,这种重复次数最多允许10次,仍然没有收到第一个数据块,则退出本次通信。(A):发送方软件延迟100秒以上工作导致不能启动协议(B):接收方软件延迟60秒发送”NAK”信号导致不能启动协议图表4XMODEM协议不能启动的2种情况在嵌入式系统通过PC机来下载软件的应用中,嵌入式系统软件是文件接收方,PC机超级终端软件是文件发送方。按照协议规定,嵌入式系统的通信软件进入XMODEM协议状态后,PC机软件必须在100秒内进入协议状态(即执行超级终端的XMODEM文件传输功能),反之,后者先进入协议状态,前者必须在60秒内进入协议状态,显然,通过人工来操作,这种时间差有些紧张。解决法只有加长嵌入式系统加载软件的启动等待时间,这种修改不会引起协议理解的歧义。重要提示:为了发送和接收方能够更容易启动XMODEM协议,在设计中,将延长嵌入式系统下载软件的启动延时时间,在以下的代码中,将这种延时时间改为600秒(10分钟)。或者将等待时间设置为无限长,一致发出”NAK”信号,直到PC机上的超级终端软件运行为止。2.5XMODEM的正常传输过程中给出了一次正常的XMODEM通信中收发双方的通信过程。图5:没有差错的文件传输过程文件接收方每收到一个数据帧后,如没有校验差错、序号差错等情况,均发送一个“ACK”字符作为应答,发送方在收到应答后才开始发送下一个字符,如此反复,直到文件内容传送完毕,发送方传送“EOT”字符表示传送完成,发送方收到后再次以“ACK”回应,至此,整个文件传输过程就结束了。2.6XMODEM协议的中止在通信进行过程中,双方中的任意一方如果希望中止本次通信,可以发送“CAN”字符给对方,现在很多XMODEM协议软件要求发送2个”CAN”字符来实现,协议软件的主动中止通信一般是人为发起的,例如按下超级终端软件的“取消”按钮。或者通过拔码开关来控制嵌入式系统的下载软件退出通信。2.7XMODEM协议的异常处理在通信过程中,总是要出现各种异常情况,比如通信线路的突然中断,一方机器停电而导致软件中止执行等;通信软件必须能够检测这些错误,并作出合理的处理。在前面的协议启动一节中已经涉及到了错误检测的问题,XMODEM对错误的规定很详细,共计有8种情况,协议文本没有说明是如何引起的,中给出了可能原因,在嵌入式系统中,考虑到下载软件一般均有人操作的,也可不考虑错误处理,这样实现实现代码会减小。在本文中,考虑到协议的完整性,考虑了各种错误的处理。2.8CRC校验与累加和校验方式的切换XMODEM协议要求支持CRC校验的通信软件也能支持累加和校验,这样就可以和那些只支持累加和校验的软件进行通信,如果文件接收方只支持累加和,而发送方可支持CRC,接收方发送启动信号为“NAK”,发送方收到后自动按累加和方式发送数据帧;如果相反,接收方支持CRC,而发送方支持累加和,接收方首先发出字母“C”来作为启动信号,这时接收方应不理睬此信号,发送方在3秒后继续发送信号“C”,共三次未收到应答后,改为发送“NAK”信号,表示使用累加和方式进行通信了。如果通信双方均采用CRC校验,上述通信握手信号“NAK”用字母“C来代替,其他过程同上。因为PC机超级终端软件支持CRC模式,嵌入式系统作为文件接收方,只要发送“NAK”信号就能使对方自动按照校验和方式通信了。3协议分层与层间接口3.1协议分层我们将协议代码分成3层:物理层,链路层和协议应用层。物理层用于控制UART器件,链路层处理XMODEM协议,应用层负责将收到的单个128字节数据块组合成一个完成的数据块,并写入程序存储器缓冲区。这种分层,在程序移植时只要修改和硬件相关的物理层、应用层代码,无需修改实现XMODEM协议的链路层代码。层与层之间通过消息来通信,XMODEM协议没有规定分层结构和层间消息格式,这里将链路层与应用层之间、链路层和物理层之间的消息格式统一规定如下:typedefstruct{intlen;/*消息内容长度,即Message中的内容字节数*/charmType;/*层间消息类型,*/charMessage[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字节)后向应用层发出,应用层收到数据帧后写入flashmemory(PC版本写入文件)。n数据块块响应:应用层收到XMODEM数据帧后,并写入flashmemory(PC版本写入文件)后向链路层发出的响应信号。链路层收到响应后,向文件发送方发出“ACK”信号。其他管理控制消息定义了3个:n协议启动:应用层通知链路层启动XMODEM协议。n通信结束:链路层在收到对方的EOT信号后向应用层发出,应用层收到此消息后,可以转入应用程序入口,从而执行应用程序。n通信中止:链路层因为各种情况无法继续进行XMODEM传输时向应用层传送该消息,应用层收到此消息后,丢弃已经收到的数据,发出通信错误指示。4分层协议实现4.1协议的OS平台为了实现分层协议,使用中的非抢先式操作系统作为软件平台,各层分别作为一个进程。4.2应用层软件实现嵌入式系统下载软件只接收代码文件,对于协议中作为文件发送方的处理代码可不编写,应用层的任务是接收链路层的数据包,根据收到数据包的先后次序写入程序存储器,在PC机上模拟实现时,我们将数据存放在一个缓冲区内,完成后写入文件中,使用windiff软件和发送文件进行比较,以判断代码的是否正确。应用层的进程初始化代码的作用是:n擦除程序存储器所使用的FLASHMEMORY(在本例中按29F010来编写代码)。n启动一个10秒定时器,10秒后通知链路层启动XMODEM协议。n
㈣ 简述SRAM,DRAM型存储器的工作原理
个人电脑的主要结构:
显示器
主机板
CPU
(微处理器)
主要储存器
(记忆体)
扩充卡
电源供应器
光盘机
次要储存器
(硬盘)
键盘
鼠标
尽管计算机技术自20世纪40年代第一台电子通用计算机诞生以来以来有了令人目眩的飞速发展,但是今天计算机仍然基本上采用的是存储程序结构,即冯·诺伊曼结构。这个结构实现了实用化的通用计算机。
存储程序结构间将一台计算机描述成四个主要部分:算术逻辑单元(ALU),控制电路,存储器,以及输入输出设备(I/O)。这些部件通过一组一组的排线连接(特别地,当一组线被用于多种不同意图的数据传输时又被称为总线),并且由一个时钟来驱动(当然某些其他事件也可能驱动控制电路)。
概念上讲,一部计算机的存储器可以被视为一组“细胞”单元。每一个“细胞”都有一个编号,称为地址;又都可以存储一个较小的定长信息。这个信息既可以是指令(告诉计算机去做什么),也可以是数据(指令的处理对象)。原则上,每一个“细胞”都是可以存储二者之任一的。
算术逻辑单元(ALU)可以被称作计算机的大脑。它可以做两类运算:第一类是算术运算,比如对两个数字进行加减法。算术运算部件的功能在ALU中是十分有限的,事实上,一些ALU根本不支持电路级的乘法和除法运算(由是使用者只能通过编程进行乘除法运算)。第二类是比较运算,即给定两个数,ALU对其进行比较以确定哪个更大一些。
输入输出系统是计算机从外部世界接收信息和向外部世界反馈运算结果的手段。对于一台标准的个人电脑,输入设备主要有键盘和鼠标,输出设备则是显示器,打印机以及其他许多后文将要讨论的可连接到计算机上的I/O设备。
控制系统将以上计算机各部分联系起来。它的功能是从存储器和输入输出设备中读取指令和数据,对指令进行解码,并向ALU交付符合指令要求的正确输入,告知ALU对这些数据做那些运算并将结果数据返回到何处。控制系统中一个重要组件就是一个用来保持跟踪当前指令所在地址的计数器。通常这个计数器随着指令的执行而累加,但有时如果指令指示进行跳转则不依此规则。
20世纪80年代以来ALU和控制单元(二者合成中央处理器,CPU)逐渐被整合到一块集成电路上,称作微处理器。这类计算机的工作模式十分直观:在一个时钟周期内,计算机先从存储器中获取指令和数据,然后执行指令,存储数据,再获取下一条指令。这个过程被反复执行,直至得到一个终止指令。
由控制器解释,运算器执行的指令集是一个精心定义的数目十分有限的简单指令集合。一般可以分为四类:1)、数据移动(如:将一个数值从存储单元A拷贝到存储单元B)2)、数逻运算(如:计算存储单元A与存储单元B之和,结果返回存储单元C)3)、条件验证(如:如果存储单元A内数值为100,则下一条指令地址为存储单元F)4)、指令序列改易(如:下一条指令地址为存储单元F)
指令如同数据一样在计算机内部是以二进制来表示的。比如说,10110000就是一条Intel
x86系列微处理器的拷贝指令代码。某一个计算机所支持的指令集就是该计算机的机器语言。因此,使用流行的机器语言将会使既成软件在一台新计算机上运行得更加容易。所以对于那些机型商业化软件开发的人来说,它们通常只会关注一种或几种不同的机器语言。
更加强大的小型计算机,大型计算机和服务器可能会与上述计算机有所不同。它们通常将任务分担给不同的CPU来执行。今天,微处理器和多核个人电脑也在朝这个方向发展。
超级计算机通常有着与基本的存储程序计算机显着区别的体系结构。它们通常由者数以千计的CPU,不过这些设计似乎只对特定任务有用。在各种计算机中,还有一些微控制器采用令程序和数据分离的哈佛架构(Harvard
architecture)。
㈤ 急!!!cache和虚拟存储器在原理和功能上有什么相同和不同。
正确答案:
相同处是都利用了程序局部性原理,把程序划分为许多信息块,运行时能自动地把信息块从慢速存储器向快速存储器调度,信息块调度都采用一定的替换策略以提高继续运行时的命中率。它们采用的地址变换、地址映象方式和替换算法是相同的。
不同处是CACHE用于弥补主存与CPU之间的速度差异,而虚存用于弥补主存容量的不足;CACHE每次传送的信息块是定长的,只有几十个字节。虚存的信息块可定长(页)的,也可是不定长的(段),长度也比较大;CPU可直接访问CACHE,但不能直接访问辅存;CACHE的信息交换过程全由硬件实现,主辅存间的信息交换则通过辅助硬件与存储管理软件来完成。
2、答:一次重叠把一条指令解释的过程分解成两个过程,而流水则把指令的解释分解为更多的过程;一次重叠可同时解释两条指令,而流水则可解释多条命令;一次重叠是流水的特征。
3、答:由三部分组成:(1)外部设备:是围绕主机而设置的各种信息媒体转换的传递的设备。(2)设备控制器与接口:控制主机与外部设备之间的信息格式转换、交换过程及外部设备运行状态的硬、软件,也叫设备适配器,它与外部设备的特性有关。(3)I/O总线:是主机与外部设备之间的信息传送通路。
从使用角度,可分成人-机交互设备,如键盘、打印机、显示器等;机-机通信设备,如MODEM等;计算机信息的驻在设备,如磁盘、光盘、磁带等。
㈥ 定长记录和变长记录各有什么特点在sql server中,数据记录的存储有什么特点
定长的,就是不管存储多少内容,长度都是这么长,以空格填充。比如定义char(40),如果你的内容只有“123”,那么,实际存储就是“123 (37个空格) ”
变长的,就是内容多少,就存储多长。
一般来说,定长的效率会好一些。变长的需要处理一下。但这个效率应该不会影响到应用。
㈦ 存储器的分类
计算机中的存储器按用途存储器可分为主存储器和辅助存储器,也有分为外部存储器和内部存储器的分类方法。
㈧ 谁来帮忙解答下计算机组成原理的几道考题
运算器、存储器、控制器、输入/输出设备
运算器:用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。
存储器:用来存放数据和程序。
控制器:用来控制、指挥程序和数据的输入、运行以及处理运算结果。
输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等。
输出设备可将机器运算结果转换为人们熟悉的信息形式,如打印机、显示器输出等。
4、四组每组2片
㈨ 【数据结构】串的定长顺序储存,如何初始化
如果是用字符来存储,那用length指向它的长度, 存储如下 data[length++] = ch;