怎样做外贸网站建设,网站开发设计方案书,中英文自助网站建设,唐山网站专业制作一. 简介
上一篇文章通过查看 CAN硬件原理图知道了 CAN1接口对应的IO。文章地址如下#xff1a;
ALPHA开发板中CAN硬件图-CSDN博客
通过ALPHA开发板上的 CAN接口的硬件原理图知道#xff0c;CAN1_TX 和 CAN1_RX 是 I.MX6ULL的 FlexCAN1 的发送和接收引脚#xff0c;分别对…一. 简介
上一篇文章通过查看 CAN硬件原理图知道了 CAN1接口对应的IO。文章地址如下
ALPHA开发板中CAN硬件图-CSDN博客
通过ALPHA开发板上的 CAN接口的硬件原理图知道CAN1_TX 和 CAN1_RX 是 I.MX6ULL的 FlexCAN1 的发送和接收引脚分别对应 I.MX6ULL 的 UART3_CTS 和 UART3_RTS 这两个引脚。 二. ALPHA开发板修改CAN的设备树节点信息 NXP 原厂提供的设备树已经配置好了 FlexCAN 的节点信息 (FlexCAN1 和 FlexCAN2) 但是我们还是要来看一下如何配置 I.MX6ULL 的 CAN1 节点。 首先看一下 I.MX6ULL 的 FlexCAN 设备树绑定文档。 打开 Documentation/devicetree/bindings/net/can/ fsl-flexcan.txt 此文档描述了FlexCAN 节点下的相关属性信息这里就不做介绍了大家自行查阅。 1. FlexCAN1 引脚节点信息
注意这里开发板使用的 Nand-Flash版ALPHA开发板。所以对应的设备树文件为 imx6ull-alientek-nand.dts而 imx6ull-alientek-nand.dts调用了imx6ull-14x14-evk.dts设备树文件。 首先肯定是 CAN1 引脚配置信息打开 imx6ull-14x14-evk.dts 找到如下所示内容 pinctrl_flexcan1: flexcan1grp{fsl,pins MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX 0x1b020MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX 0x1b020;}; 第 3 和第 4 行将 UART3_RTS 和 UART3_CTS 这两个引脚分别复用为 FlexCAN1 的 RX 和 TX 电气属性都设置为 0x1b020 。 2. FlexCAN1 控制器节点信息 打开 imx6ull.dtsi 文件找到名为 “ flexcan1 ” 的节点内容如下 flexcan1: can02090000 {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 节点不需要我们修改这里只是告诉大家 FlexCAN1 完整节点信息。 根据第 2 行的 compatible 属性就可以找到 I.MX6ULL 的 FlexCAN 驱动源文件 驱动文名为 drivers/net/can/flexcan.c 。 第 9 行的 status 属性为 disabled 所以 FlexCAN1 默认关闭 的。 在 imx6ull-14x14-evk.dts 中添加使能 FlexCAN1 的相关操作这里 flexcan1的意思是在 flexcan1设备节点上进行添加信息的意思。找到如下所示代码 flexcan1 {pinctrl-names default;pinctrl-0 pinctrl_flexcan1;xceiver-supply reg_can_3v3;status okay;
}; 第 3 行指定 FlexCAN1 所使用的 pinctrl 节点为 pinctrl_flecan1也就是上面 pinctrl_flexcan1 这个引脚节点信息 pinctrl 节点。 第 4 行 xceiver-supply 属性指定 CAN 收发器的电压为 3.3V 。 第 5 行将 flexcan1 节点的 status 属性改为 “ okay ”也就是使能 FlexCAN1 。 3. 关闭 FlexCAN2 相关节点 I.MX6ULL 带有两个 CAN 控制器FlexCAN1 和 FlexCAN2NXP 官方的 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 reg_can_3v3;status okay;
};
*/ 重新编译设备树进入 kernel内核源码NXP官方的Kernel源码的根目录下运行如下命令 wangtianwangtian-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
wangtianwangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ 可以看出设备树文件 imx6ull-alientek-nand.dtb重新编译并生成。接下来将开发板上电后加载设备树文件。