I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之CAN移植

经过前面的移植,tqimx6q已经完美支持网卡,现在,我们来移植CAN。其实这里所谓的移植,仅仅是配置DTS,使内核能够检测到CAN设备,CAN驱动本身是freescale维护的。下面开始CAN的移植。

DTS编写

参考imx6q其它的DTS编写方式,我们可以如下编写DTS文件:

[cpp] view plain copy
  1. ...  
  2.   
  3. &flexcan1 {  
  4.     pinctrl-names = "default";  
  5.     pinctrl-0 = <&pinctrl_flexcan1_3>;  
  6.     status = "okay";  
  7. };  
  8.   
  9. &iomuxc {  
  10.   
  11.     ...  
  12.   
  13.     flexcan1 {  
  14.         pinctrl_flexcan1_3: flexcan1grp-3 {  
  15.             fsl,pins = <  
  16.                 MX6QDL_PAD_GPIO_7__FLEXCAN1_TX 0x80000000  
  17.                 MX6QDL_PAD_GPIO_8__FLEXCAN1_RX 0x80000000  
  18.             >;  
  19.         };  
  20.     };  
  21. };  
因为imx6qdl.dtsi中没有适合tqimx6q的pinctrl配置,因此,需要在我们的DTS文件中添加,然后将相关配置添加到flexcan1定义中即可。将以上内容追加到DTS后重新编写并烧写,用新的DTB启动开发板后通过ifconfig可以查看到CAN设备。

测试方法

由于我手头没有USB转CAN设备,暂时没有办法测试CAN是否已经正常工作,仅能通过指令查看到内核已经识别到了CAN设备,从经验上看,应该没有什么问题。指令查看CAN设备的方法与查看网卡设备的方法类似,执行指令:

[cpp] view plain copy
  1. ifconfig -a  
执行效果如下:
[cpp] view plain copy
  1. @tqimx6q #ifconfig -a  
  2. can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00    
  3.           NOARP  MTU:16  Metric:1  
  4.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
  5.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
  6.           collisions:0 txqueuelen:10   
  7.           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  
  8.           Interrupt:142   
  9.   
  10. eth0      Link encap:Ethernet  HWaddr 42:75:18:94:C8:11    
  11.           BROADCAST MULTICAST  MTU:1500  Metric:1  
  12.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
  13.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
  14.           collisions:0 txqueuelen:1000   
  15.           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  
  16.   
  17. lo        Link encap:Local Loopback    
  18.           LOOPBACK  MTU:65536  Metric:1  
  19.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
  20.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
  21.           collisions:0 txqueuelen:0   
  22.           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  
  23.   
  24. sit0      Link encap:IPv6-in-IPv4    
  25.           NOARP  MTU:1480  Metric:1  
  26.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
  27.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
  28.           collisions:0 txqueuelen:0   
  29.           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  
其中,can0就是tqimx6q的CAN设备。至此,CAN设备的移植工作就完成了,之后搞个CAN调试工具再来补充完整的测试方法。以上移植如有问题,请帮忙指出,有任何疑问欢迎留言讨论。

你可能感兴趣的:(飞思卡尔,I.MX6Q)