在【正点原子】I.MX6U 常见问题汇总V1.0.pdf 文档中的2.6.16中有对应的解决方法。
设备树修改:
pinctrl_enet1: enet1grp {
fsl,pins = <
MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN 0x1b0b0
MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x1b0b0
MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x1b0b0
MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b009
+ /*MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x10B0*/
>;
};
pinctrl_enet2: enet2grp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO07__ENET2_MDC 0x1b0b0
MX6UL_PAD_GPIO1_IO06__ENET2_MDIO 0x1b0b0
MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN 0x1b0b0
MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER 0x1b0b0
MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0
MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0
MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN 0x1b0b0
MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0
MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0
MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x4001b009
+ /*MX6ULL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x10B0*/
>;
};
&iomuxc_snvs {
pinctrl-names = "default_snvs";
pinctrl-0 = <&pinctrl_hog_2>;
imx6ul-evk {
pinctrl_hog_2: hoggrp-2 {
fsl,pins = <
MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00 0x80000000
+ MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x10B0
+ MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x10B0
>;
};
.............
};
};
-----------------------------------------------------------------------------------------------------------
LED灯不亮的原因分析:
(IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03)
Address: 20E_0000h base + 68h offset = 20E_0068h
(IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03)
Address: 20E_0000h base + 2F4h offset = 20E_02F4h
imx6ull-pinfunc-snvs.h中
#define MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x0024 0x0068 0x0000 0x5 0x0
#define MX6ULL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x0028 0x006C 0x0000 0x5 0x0
<mux_reg conf_reg input_reg mux_mode input_val>
mux寄存器地址 PAD寄存器地址
上述的非SNVS引脚基地址是20E_0000h(SNVS引脚基地址是229_0000H) ,因为
MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x0024 0x0068 0x0000 0x5 0x0中的PAD偏移地址是0x0068,
那么SNVS引脚放错到非SNVS时的地址就是20E_0000h base + 0x0068 offset = 20E_0068h 那么就会与LED使用的GPIO1_IO03的MUX寄存器的地址20E_0068h 一模一样,因此,就会引起冲突,导致设备树和驱动文件都编译没错,但是灯就是不亮的原因。
所以,就要把设备树的中 MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x10B0 这个语句,放到iomuxc_snvs节点里面,所有有关SNVS的引脚都需要放到iomuxc_snvs节点里面!!!
修改后就可以重新使led重新亮起来了。