一. 简介
上一篇文章通过查看 CAN硬件原理图知道了 CAN1接口对应的IO。文章地址如下:
ALPHA开发板中CAN硬件图-CSDN博客
通过ALPHA开发板上的 CAN接口的硬件原理图知道,CAN1_TX 和 CAN1_RX 是 I.MX6ULL的 FlexCAN1 的发送和接收引脚,分别对应 I.MX6ULL 的 UART3_CTS 和 UART3_RTS 这两个引脚。
二. ALPHA开发板修改CAN的设备树节点信息
1. FlexCAN1 引脚节点信息
注意:这里开发板使用的 Nand-Flash版ALPHA开发板。所以,对应的设备树文件为 imx6ull-alientek-nand.dts,而 imx6ull-alientek-nand.dts调用了imx6ull-14x14-evk.dts设备树文件。
pinctrl_flexcan1: flexcan1grp{fsl,pins = <MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX 0x1b020MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX 0x1b020>;};
2. FlexCAN1 控制器节点信息
flexcan1: can@02090000 {compatible = "fsl,imx6ul-flexcan", "fsl,imx6q-flexcan";reg = <0x02090000 0x4000>;interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;clocks = <&clks IMX6UL_CLK_CAN1_IPG>,<&clks IMX6UL_CLK_CAN1_SERIAL>;clock-names = "ipg", "per";stop-mode = <&gpr 0x10 1 0x10 17>;status = "disabled";};
&flexcan1 {pinctrl-names = "default";pinctrl-0 = <&pinctrl_flexcan1>;xceiver-supply = <®_can_3v3>;status = "okay";
};
3. 关闭 FlexCAN2 相关节点
I.MX6ULL 带有两个 CAN 控制器:FlexCAN1 和 FlexCAN2,NXP 官方的 EVK 开发板这两个 CAN 接口都用到了,因此,NXP 官方的设备树将这两个 CAN 接口都使能了。
但是,正点 原子的 I.MX6U-ALPHA 开发板将 FlexCAN2 的 IO 分配给了 ECSPI3,所以正点原子的 I.MX6ULL-ALPHA 开发板就不能使用 CAN2,否则的话, ECSPI3 外设就无法使用。
所以,关闭 FlexCAN2 节点很简单,在 imx6ull-14x14-evk.dts 文件中找到名为 “flexcan2” 的节点,然后将其屏蔽掉即可。 如下:
/*
&flexcan2 {pinctrl-names = "default";pinctrl-0 = <&pinctrl_flexcan2>;xceiver-supply = <®_can_3v3>;status = "okay";
};
*/
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ make dtbsCHK include/config/kernel.releaseCHK include/generated/uapi/linux/version.hCHK include/generated/utsrelease.h
make[1]: “include/generated/mach-types.h”已是最新。CHK include/generated/bounds.hCHK include/generated/asm-offsets.hCALL scripts/checksyscalls.shDTC arch/arm/boot/dts/imx6ull-14x14-evk.dtbDTC arch/arm/boot/dts/imx6ull-14x14-evk-btwifi.dtbDTC arch/arm/boot/dts/imx6ull-14x14-evk-emmc.dtbDTC arch/arm/boot/dts/imx6ull-14x14-evk-gpmi-weim.dtbDTC arch/arm/boot/dts/imx6ull-alientek-nand.dtbDTC arch/arm/boot/dts/imx6ull-14x14-evk-usb-certi.dtb
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$
可以看出,设备树文件 imx6ull-alientek-nand.dtb重新编译并生成。接下来将开发板上电后加载设备树文件。