基于MCP2515的Linux CAN总线驱动程序设计
1[*]Networking support->
et CAN的工具。这里介绍两个工具,分别是iproute2 和 canutils。
6.1 iproute2
(1)下载iproute2的最新源码http://www.kernel.org/pub/linux/utils/net/iproute2/ 。笔者下载的是iproute2 3.6.0。
(2)解压iproute2-3.6.0.tar.xz,修改Makefile第33行。
33 #CC = gcc
34 CC = arm-none-linux-gnueabi-gcc
(3)因为我们只需要iprout2的ip命令,所以修改Makefile的第42行。
42 #SUBDIRS=lib ip tc bridge misc netem genl man
43 SUBDIRS=lib ip
(4)修改完成执行make命令,生成ip命令,拷贝到开发板文件系统目录。
(5)使用ip命令。
ifconfig can0 down //关闭can0,以便配置
./ip link set can0 up type can bitrate 250000 //设置can0波特率
./ip -details link show can0//显示can0信息
图6 iproute 使用简介
6.2 canutils
Canutils是基于GNU GPLv2许可的开源代码,包括canconfig、canecho、cansend、candump、cansequence五个工具,用于检测和监控Socket CAN接口。
(1)下载canutils的最新源码http://www.pengutronix.de/software/socket-can/download/canutils 。笔者下载的是canutils 4.0.6。
(2)因为canutils编译需要libsocketcan库的支持,需要下载libsocketcan。 http://www.pengutronix.de/software/libsocketcan/download/ 笔者下载的是libsocketcan 0.0.9。
(3)解压libsocketcan-0.0.9.tar.bz2。执行configure命令。(其中--host是指定交叉工具链,--prefix是指定库的生成位置)
./configure --host=arm-none-linux-gnueabi --prefix=/home/linux/workdir/can/tools/libsocketcan
(4)执行make编译库;
(5)执行make install 生成库。至此,libsocketcan编译完毕。
(6)解压canutils-4.0.6.tar.bz2,执行configure命令。(其中--host是指定交叉工具链,-- prefix是指定库的生成位置,libsocketcan_LIBS是指定canconfig需要链接的库,LDFLAGS是指定外部库的路 径,CPPFLAGS是指定外部头文件的路径)
./configure --host=arm-none-linux-gnueabi --prefix=/home/linux/workdir/can/tools/canutils libsocketcan_LIBS=-lsocketcan LDFLAGS=-L/home/linux/workdir/can/tools/socketcan/lib CPPFLAGS=-I/home/linux/workdir/can/tools/socketcan/include
(7)修改完成执行make命令,生成四个目录,分别拷贝到开发板文件系统的相应目录。
(8)使用canutils工具。(可以使用[命令 + --help]的方式来查看命令的详细用法,下面只介绍一些常用的指令)
① 配置CAN的总线通讯波特率:
canconfig canX bitrate + 波特率
图7 使用canutils 工具设置CAN总线波特率
② 开启 / 重启 / 关闭CAN总线
canconfig canX start
canconfig canX restart
canconfig canX stop
图8 设置CAN总线状态
③ 查看CAN总线状态
canecho canX
图9 查看CAN总线状态
④ 发送信息
cansend canX –-identifier=ID + 数据
图10 CAN总线发送数据
⑤ 接收数据
candump canX
图11 CAN总线接收数据
⑥ 使用滤波器接收ID匹配的数据
candump canX –-filter=ID:mask
图12 CAN总线使用滤波器接收匹配数据
7.总结
至此,使用Socket方式的MCP2515 CAN总线驱动设计的就介绍完了,用户可以使用Socket套接字的方式,参照canutils的源码设计自己的应用程序。
MCP2515LinuxCAN总线驱动程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)