现在嵌入式车载网络体系一般选用LINUX嵌入式操作体系,以ARM7s3c44Bo为微操控器,SJAl000为CAN操控器的解决计划,完成LINUX下的CAN通讯.在WINCE渠道下,CAN卡的研讨已经有许多。也取得了不错的运用作用,但以ARM9s3c2440为嵌入式体系硬件中心,外围扩展CAN操控器SJA1000,嵌入式操作体系选用WINCE的运用计划几乎没有,所以值得研讨.
1 嵌入式车载网络的构成
嵌人式车载网络由若干个子节点操控器和主操控单元组成,其间主控单元对子节点进行监督与操控,完成不同的CAN数据总线体系问的数据交换,网络的拓朴结构如图1所示.
图1体系网络拓扑结构
2体系选用的驱动模型
现在依据WINCE的两种驱动模型是本机设备驱动程序和流接口驱动程序,不同的驱动模型只能经过它们支撑的软件接口来差异.
本体系选用的是流接口驱动程序,图2给出了流接口驱动的作业结构.流接口驱动模型由设备办理器一致加载、办理和卸载,运用程序经过文件体系的API函数调用流接口函数,然后由流接口驱动程序调用本机驱动或许经过设备办理器与体系内核或外围设备进行信息沟通。
图2流接口作业结构
3车载网络主控单元硬件渠道完成
本车载网络主控单元的硬件渠道选用的是嵌入式处理器ARM9s3c2440,CAN操控器SJAlooO,CAN总线收发器82C250,人机界面选用触摸屏.体系的硬件组成结构如图3所示.
图3体系硬件组成结构
车载网络主操控单元一起跨接在两个CAN网络之间,完成对高速、低速CAN网络的监控和数据的同享,相当于一个CAN的HUB.ARM9s3c2440和SJA1000之间的部分硬件原理下面将简略描绘.
本体系选用的XC95144是xILINX公司的杂乱可编程逻辑器材(CPLD).因为体系还要供给许多其他接盯,如USB和PCM%&&&&&%A,为了更高效运用ARM9s3c2440的体系资源,特别是中止资源,在体系硬件的规划中选用了CPLD.CAN操控器SJAl000的中止引脚衔接到CPLD,经过编制CPLD的一些逻辑操控程序,发生SJA1000的片选信号与中止信号,若CAN-INT中止,则触发ARM处理器的EINT0引脚,EINT0的硬件中止后,ARM捕捉到此中止信号.82C250是CAN总线收发器,在本体系的规划中82C250与SJA1000间选用了光耦器材来进行衔接.
4流接口驱动相关函数的完成
4.1 WINCE下拜访SJAl000寄存器的完成
依据硬件渠道,得到ARM9s3c2440与SJA1000衔接的硬件地址,即SJA1000的物理基地址,再结合SJA1000各寄存器与基地址的偏移联系.能够得到寄存器的一切物理地址.
在WINCE下,因为有MMU办理单元,因而不能运用物理地址,而只能选用虚拟地址(VA)来拜访该寄存器.调用WINCE的体系函数VirtualAlloc,VirtualCopy把物理地址转化为程序能够拜访的虚拟地址,然后经过SJA1000的虚拟地址来设置SJA1000的作业状况.SJA1000的根本作业流程如图4所示.