- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式Linux中Interlnk实现技术研究
嵌入式Linux中Interlnk实现技术研究
【摘要】针对在基于AT91SAM9263和Linux的便携式检测设备与发动机电子控制器之间的文件传输的问题,对电子控制使用的Interlnk/Intersvr软件及其通信协议进行了分析研究。采用在实验室搭建协议分析环境和源码分析的方法,理清了Interlnk/Intersvr通信协议的报文格式、通信流程,并研究了DOS文件系统的结构及访问方法,最后在检测设备软件中的实现了文件传输功能。实验结果表明,项目研究达到了预期的目标。
【关键词】嵌入式系统;驱动器映射;波特率协商;文件数据簇
1.引言
Interlnk/Intersvr是高版本DOS提供的用于两台计算机之间进行文件拷贝的支持软件,支持异步串口和并行口两种连接方式。目前,采用x86核心板的许多嵌入式应用均采用该软件进行文件下载和上传。例如某型号发动机电子控制器,采用了PC104结构的x86核心板,发动机运行的记录信息保存在核心板的电???盘上,需要采用Interlnk/Intersvr下载这些信息并对发动机的工作状态进行分析。传统的作法是在实验室工控PC平台上完成对电子控制器的参数设置,但此方法时效性差,为了提高检测效率,实现发动机运行状态的就地分析,亟需设计外场便携式检测设备。根据项目技术规范书的要求,便携式检测设备采用AT91SAM9263作为CPU,嵌入式Linux作为操作系统,但由于电子控制器是定型产品,其运行软件不允许修改,因此需要在便携式检测设备上设计实现Interlnk软件。但由于Interlnk/Intersvr属于Sewell公司早期开发产品,其通信协议并没有对外公布,要在其他平台上实现Interlnk功能必须首先分析其通信协议,才能在通信协议基础上实现文件传输的功能。本文在分析该协议报文格式和通信流程的基础上,深入研究了其文件访问机制,并在便携式检测设备上实现了该功能。
2.Interlnk/Intersvr协议分析
Interlnk/Intersvr采用企业内部制定的通信协议,并没有协议文本,必须对其通信协议进行分析,才能理清报文格式和通信流程。因此,本文实验设计采用3台计算机进行报文跟踪,并分析每条报文功能,其中一台运行Intersvr,一台运行Interlnk,另一台运行支持双端口的协议分析和报文捕获软件X-Mon,计算机之间采用异步串口进行通信连接。实验环境如图1所示。实验环境搭建好之后,采用先启动Intersvr和X-Mon、再启动Interlnk的方法,便可以在X-Mon的视窗中捕获到Interlnk/Intersvr之间的通信报文。需要说明是,由于Interlnk/Intersvr使用了变波特率机制,最初的报文是乱码,而之后的报文是其真实的通信报文。
由于Interlnk/Intersvr通信信息流量很大,分析起来比较困难。本文分析从网上下载MSDOS 6.0源代码来解决此问题,该代码中有Interlnk/Intersvr的实现源码,其中,Interlnk是采用MASM汇编语言实现的常驻内存的块设备驱动程序,Intersvr是汇编和C语言混合编程的应用程序。通过阅读源代码,可以基本分析出其报文格式和通信流程,再借助图1所示的协议分析环境,逐项对其功能流程进行验证,从而弄清了Interlnk/Intersvr的工作机制和实现方法,为后期的软件设计奠定了基础。
2.1 建立通信连接
在Interlnk启动之前,必须先运行Inter-svr。Interlnk启动时先以缺省的启动波特率与Intersvr通信,最初的通信内容是在二者之间交换一组同步字节串,同步字节串是Interlnk/Intersvr约定的固定字节码,Interlnk侧为0xAA,0x55,0x5A,Intersvr侧为0x00,0xFF,0x11,Interlnk每发送一个字节,Intersvr按顺序响应对应的字节,这样就完成了同步字节串的交互。接下来需要测试服务器与客户机之间是否存在正常的通信连接。如果存在正常的通信连接,Interlnk则向Intersvr发送服务器信息请求(server_info_r),获取服务器标识码,确定最大报文长度、校验码格式等通信参数。紧接着发送初始化请求(init_packet_r),获取服务器版本信息和存储设备的配置状况和访问属性。值得注意的是,在每次报文通信之前,需要检测当前波特率是否为用户指定或允许的最大通信速率,如果不是则启动波特率协商机制,协商确定当前条件下可以达到的最大波特率。上述建立通信连接的过程如图2所示。
2.2 报文格式
Interlnk/Intersvr之间的报文通信格式相对比较简单,由帧长、帧体、CRC校验码三
文档评论(0)