论文部分内容阅读
随着IPv6的诞生以及物联网的飞速发展,越来越多的物都将拥有自己独立的IPv6地址,并且通过网络相互连接,形成一个物与物相连的互联网络。作为物联网的一个典型应用范例,车载系统中的电气节点都会成为物连网络中的节点单元。而由于以太网的普及,通过互联网来获取各节点信息的要求也越加迫切。为了解决这一需求,车载网关的设计和开发就显得尤为重要。本模型就通过CAN节点在车载网关中的虚拟化设计,屏蔽和统一了各CAN节点的访问方式,设计和实现了具有较高吞吐量和较高可维护性的车载网关。由于我国汽车中的电子产业水平还属于较低水平,至今还没有实现车上网络与远程主机相连的服务。本车载网关的实施将填补我国在这一领域的空白。而在现有的CAN总线与以太网通信的网关中,有些网关在设计中要对硬件接口进行改变,这就增加了设计的难度和实现的成本;而有些网关的实现并不能达到双向通路的工作模式。以在Linux操作系统下工作为例,由于原有的CAN总线驱动是通过串口设备的访问方式与操作系统进行交互,所以当CAN总线上的数据帧传入操作系统内核后,操作系统只是将该数据帧拷贝到用户空间,然后等待用户空间某进程调度后再封装成IP数据报发送。这样不仅增加了操作系统的负担,也会使数据的传输发生延迟,在大数据报转发时将产生不可预知的错误。为了解决互联网中的远程主机和车载系统网络互连的问题,设计并实现了一种IPv6-CAN双协议转换的车载网关。通过在车载网关中对CAN节点设备的虚拟化,并为每个虚拟化的CAN节点分配IPv6地址,以使远程主机可对CAN节点进行操控。由于IPv6的使用,也统一了远程主机对CAN节点的访问方式。并通过对CAN总线访问方式的改变,将传统的以文件读写方式访问的CAN设备驱动改写成为网络设备驱动程序,极大的提升了此类网关的性能。最后以实例证明了该方法的可行性。通过对CAN节点的虚拟化设计,使得每个CAN节点都拥有自己独立的IPv6地址,这些地址由网关进行管理与维护。Linux虚拟设备不仅能有效的模拟部分真实设备的工作效果,同时也屏蔽了许多底层细节,为应用层提供了统一的访问接口。在本模型的设计与实现中,网关中为每个CAN节点都维护了一个IPv6地址,这样对于外界访问来说,CAN总线上的每一个结点都可以通过IPv6地址访问。车载网关与远程主机之间通过CDMA网络进行互联,在车载网关中被CDMA接收装置接收的数据报被首先放入Linux内核协议栈中,后被Packet模块所截获,Packet模块运行于Linux网络体系架构中网络层和数据链路层之间,它实现了路由数据报的功能,当发现传来的IP数据报是发送给虚拟CAN节点时,就将该数据报传给CAN_MODULE模块。CAN_MODULE模块是本车载网关的核心部分之一,它即包括对CAN总线的初始化、软件复位、注册CAN控制器中断等功能,还通过模拟以太网卡设备驱动,拥有自己独立的接收和发送数据报函数,并且能对数据报进行特殊的处理。通过对虚拟CAN节点的管理,将CAN总线上的实际节点和虚拟CAN节点相对应。虚拟CAN节点有效的模拟部分真实设备的工作效果,并将真实设备的部分信息保存在网关中,屏蔽了对不同真实设备访问的差异。由于对真实设备部分属性的保存,也使得CAN帧可在网关中进行有针对性的封装,从而实现了CAN节点到远程主机的访问。