4 CAN总线驱动程序的方案设计与实现
设备驱动程序是介于硬件和Linux内核之间的软件接口,是一种低级的、专用于某一硬件的软件组件。设备驱动也可以理解为操作系统的一部分,对于一个特定的硬件设备来说,其对应的设备驱动程序是不同的,比如网卡、键盘、鼠标、显卡、电位器、电机等。操作系统本身没有对各种硬件设备提供持久不变的“驱动设备”,没有驱动,操作系统就控制不了底层的设备,对于操作系统来说,挂接的设备越多,需要的设备驱动程序也越多。
在Linux操作系统中,把所有外设都当成文件看待,使用操作文件的方法来操作设备,通过驱动程序,Linux操作系统才能以文件夹的方式来管理设备。因此驱动程序的编写开发具有十分重要的地位。Linux设备驱动程序运行在Linux内核空间,是Linux内核中联系硬件设备和应用程序的桥梁。Linux系统硬件、设备驱动和应用程序的关系如图4所示[7]。
MagicARM270实验箱采用SJA1000 CAN控制器扩展了1路CAN接口,SJA1000是PHILIPS公司经典的CAN控制器,支持CAN 2.0 A、B协议。结合应用程序、驱动程序、内核程序,CAN驱动流程图如图5所示。
5 测试结果与验证
选取广州致远电子有限公司生产的Magic ARM270实验箱进行仿真[2]。通过
CAN总线实现汽车上各种信息的采集和测量,并将采集的结果送到ARM进行处理,最后通过TFT显示出来,设置CAN总线传输速度波特率为125 KB/s,图6所示为捕捉的一个界面。
随着信息技术的快速发展,现场总线技术在汽车上得到了越来越多的应用。本文在测试系统下采用CAN总线接口提取车速、发动机转速、机油压力、油量、水温、传动箱压力及其他车况等信息。实验表明采用虚拟仪表技术完全能够满足车辆运行参数和状态显示的要求,可扩充性好,配置方便。