经过前面的移植,tqimx6q已经完美支持网卡,现在,我们来移植CAN。其实这里所谓的移植,仅仅是配置DTS,使内核能够检测到CAN设备,CAN驱动本身是freescale维护的。下面开始CAN的移植。
DTS编写
参考imx6q其它的DTS编写方式,我们可以如下编写DTS文件:
- ...
- &flexcan1 {
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_flexcan1_3>;
- 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
- >;
- };
- };
- };
测试方法
由于我手头没有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)