在beaglebone中开发DCAN驱动,内核编译是参考文档“Sitara Linux Software Developer’s Guide”,
内核用的是linux-3.1.0-psp04.06.00.03.sdk,
D_CAN驱动的编译是参考processors.wiki.ti.com/.../DCAN_Driver_Guide
驱动程序用的就是内核自带的,没有进行任何改动。
编译命令如下:
(1)make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi- distclean
(2)make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi- tisdk_am335x-evm_defconfig
(3)make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi- menuconfig(配置dcan)
(4)make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi- uImage
(5)make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi- modules
最后将uImage,d_can.ko和d_can_platform.ko文件放进SD卡
将d_can.ko和d_can_platform.ko先放在opt/下,执行insmod,出现如下信息:
root@am335x-evm:/opt# insmod d_can.ko
root@am335x-evm:/opt# insmod d_can_platform.ko
应该是加载成功了,但执行命令出错
root@am335x-evm:/opt# canconfig can0 start
Cannot find device "can0"
can0: failed to start
root@am335x-evm:/opt# canconfig can1 start
Cannot find device "can1"
can1: failed to start
root@am335x-evm:/opt# ip link set can0 up
用lsmod查看有DCAN模块
root@am335x-evm:/# lsmod
Module Size Used by
d_can_platform 1942 0
d_can 7995 1 d_can_platform
bufferclass_ti 4304 0
omaplfb 10734 0
pvrsrvkm 145014 2 bufferclass_ti,omaplfb
用cat命令查没有找到can
root@am335x-evm:/# cat /proc/devices
Character devices:中没有can
说明:1)把模块放在lib/mudules/kernel下也试了,modprobe也可以加载成功,但执行命令还是找不到can
2)在DCAN Driver Guide中要装iproute2,是因为只有iproute2可以对can进行操作吗?我看了仙子阿用的ip link help也可以对can进行操作,所以没有安装iproute2
3)我现在用的beaglebone只是核心板,只有AM3359集成的can控制器,没有外接CAN收发器,这个有影响吗?
跪求解答,谢谢!