论文部分内容阅读
控制器局域网(CAN)总线己经成为全球范围内最重要的总线之一。根据国际标准化组织(ISO)定义的OSI模型,CAN协议定义了物理层与数据链路层规范。如果需要建立完善的通信系统,还需要在CAN的基础上选择合适的应用层协议。目前,J1939是卡车和客车中应用最广泛的高层协议,但其商业协议栈的价格十分昂贵,不利于J1939规范的推广。为了研究J1939协议通信网络的软硬件实现,本文基于高性能32位ARM9微处理器S3C2410设计J1939协议通信系统,主要成果如下:(1)以S3C2410为ARM微处理器、以嵌入式Linux为操作系统,搭建了Linux-ARM开发平台。阐述了适合本课题需求的U-boot、嵌入式Linux内核和根文件系统详细制作过程;描述了平台搭建过程中实现应用程序自启动的方法:首先在嵌入式Linux内核制作过程中,将CAN总线驱动程序静态编译到内核,然后在根文件系统制作中加入J1939协议栈和用户应用程序文件,最后修改系统初始化函数;(2)在深入分析CAN2.0B协议的基础上,使用USB虚拟示波器捕获Polo车CAN总线试验台的CAN数据帧,分析得出Polo车CAN总线的帧结构;(3)编写了基于单片机的CAN总线驱动程序,详细描述了驱动程序具体实现的过程。其中包括CAN总线通信波特率设置的具体实现、以图文和程序的方式描述驱动程序如何操作CAN控制器MCP2510的寄存器、实现驱动程序对CAN扩展帧的支持等;(4)在基于嵌入式Linux操作系统的CAN总线驱动程序编写中,添加了对100kbps波特率的支持和对CAN扩展帧的支持。描述了嵌入式Linux操作系统下驱动程序的具体调用过程和实现方法;(5)为稳步实现J1939通信网络,本文由简单到复杂,先实现了一个波特率为100kbps、自定义应用层协议、由ARM开发板、Polo车CAN总线试验台和监测节点组成的简单CAN总线通信网络。验证了该网络通信功能的正确性;(6)深入研究了J1939协议内容,编写了具有基本功能的J1939协议栈。该协议栈主要包括的内容有J1939协议数据链路层的实现和网络管理层的实现,能实现的功能有地址声明消息、请求地址声明消息、地址冲突处理、命令消息、广播消息、发动机数据请求消息、传输协议功能等;(7)搭建了一个波特率为250kpbs、依照J1939协议、由ARM开发板、虚拟节点和单片机节点组成的J1939通信网络。实验验证了本文设计的J1939协议栈具有的各项功能,实验过程中数据传输稳定、准确、可靠。