查阅sam9x25的Datasheet了解到: sam9x25有两个CAN口, can0和DEBUG串口是复用的, can1是一个单独的串口;本文只讲CAN1的使用。
默认can1设备是没有在linux内核中注册的;所以需要修改kernel中一些代码; 只需要将arch/arm/mach-at91/board-sam9x5ek.c 文件中can1注册的代码放开就可以了!
-#if 0
+#if 1
if (cpu_is_at91sam9x25() || cpu_is_at91sam9x35())
/*
* open jumper/solderdrop JP11 to activate CAN0
重新编译kernel后,输入ifconfig -a的命令就可以看到can设备, 当只有一个can口默认标识就是can0, 实际硬件使用的是can1口。
我这里是两个can口都有了;可以根据can口Interrupt的编号来区分can0和can1, can1的中断号为:30, can0的中断号:29。
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING 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.