经过前面的移植,tqimx6q已经完美支持网卡,现在,我们来移植CAN。其实这里所谓的移植,仅仅是配置DTS,使内核能够检测到CAN设备,CAN驱动本身是freescale维护的。下面开始CAN的移植。
DTS编写
参考imx6q其它的DTS编写方式,我们可以如下编写DTS文件:
...
&flexcan1 {
pinctrl-names = "default";
pinctrl-0 = ;
status = "okay";
};
&iomuxc {
...
flexcan1 {
pinctrl_flexcan1_3: flexcan1grp-3 {
fsl,pins = <
MX6QDL_PAD_GPIO_7__FLEXCAN1_TX 0x80000000
MX6QDL_PAD_GPIO_8__FLEXCAN1_RX 0x80000000
>;
};
};
};
因为imx6qdl.dtsi中没有适合tqimx6q的pinctrl配置,因此,需要在我们的DTS文件中添加,然后将相关配置添加到flexcan1定义中即可。将以上内容追加到DTS后重新编写并烧写,用新的DTB启动开发板后通过ifconfig可以查看到CAN设备。
测试方法
由于我手头没有USB转CAN设备,暂时没有办法测试CAN是否已经正常工作,仅能通过指令查看到内核已经识别到了CAN设备,从经验上看,应该没有什么问题。指令查看CAN设备的方法与查看网卡设备的方法类似,执行指令:
ifconfig -a
执行效果如下:
@tqimx6q #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:142
eth0 Link encap:Ethernet HWaddr 42:75:18:94:C8:11
BROADCAST MULTICAST MTU:1500 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:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
LOOPBACK MTU:65536 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:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 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:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
其中,can0就是tqimx6q的CAN设备。至此,CAN设备的移植工作就完成了,之后搞个CAN调试工具再来补充完整的测试方法。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』