摘要
CAN是一种广泛用于自动控制、嵌入式设备和汽车领域的工业总线技术。Linux 操作系统对CAN总线提供良好支持,它为大部分CAN控制器提供了稳定的驱动,而这些驱动都采用的是SocketCAN子系统编写的。
一、SocketCAN概述
CAN是一种广泛用于自动控制、嵌入式设备和汽车领域的工业总线技术。Linux 操作系统对CAN总线提供良好支持,它为大部分CAN控制器提供了稳定的驱动,而这些驱动都采用的是SocketCAN子系统编写的。下文主要介绍Linux 操作系统SocketCAN的使用方法及注意事项。
1、什么是SocketCAN
SocketCAN是Linux系统为CAN驱动定义的一种网络子系统。 Linux下最早的CAN驱动是基于字符设备来实现的,而SocketCAN则是基于Linux网络协议栈来实现的,并使用了BSD Socket作为编程接口。SocketCAN的接口设计的尽量接近TCP/IP的协议,让那些熟悉网络编程的程序员能够比较容易的学习和使用。
2、查看SocketCAN设备
SocketCAN使用网络协议栈来实现CAN控制器驱动,因此CAN设备驱动成功加载后会为CAN控制器生成一个网络设备,网络设备采用“can+序号”的形式命名,第一个CAN设备的设备名为can0,这种命名方式与以太网接口类似。在Linux系统下使用ifconfig–a参看所有的网络设备,包括以太网及CAN等设备。
root@EPC-9200 ~]# ifconfig -a
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
NOARP MTU:16 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:52
eth0 Link encap:Ethernet HWaddr 68:C9:0B:E4:2E:8C
inet addr:192.168.1.151 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 drop