打印
[嵌入式Linux]

I.MX6UL主板TF卡启动Linux的实现(三)-LINUX的软件修改(DTS)

[复制链接]
3370|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 szembed 于 2021-6-1 16:00 编辑

软件支持
   要把板子跑起来,无非就是包括U-boot、dtb、Kernel和跟文件系统均写入正确,此次TF启动只修改U-boot和dtb的部分代码。
3.1 U-boot
u-boot如果要支持TF卡启动,则启用USDHC1,注释USDHC2。修改uboot-imx/include/configs/mx6ul_arm2.h,修改后如下图3-1。

然后,修改uboot-imx/board/freescale/mx6ul_14x14_ddr3_arm2/mx6ul_14x14_ddr3_arm2.cUSDHC1设为高电平。如图3-2所示。


3.2 内核
EVB-P6UL采用3.14.38版本的Linux内核,驱动描述使用dts。因存储媒质及应用接口不同,对应的dtb也不同,EVB-P6UL评估板主要有5路UART(双网络)和8路UART(单网络)两种,另外有使能CAMERA接口产品等,为了便于管理这些dtb文件,我们采用关键字区别法来区别。例如:“CSI”、“UART”、“RES”、“CAP”来判定应该烧写那个dtb,命名规则举例说明:
l evbp6ul-m256f512-res-8uarts.dtb:
m256,即memory 256MB;f512,即Nand Flash 512MB;res,电阻式触摸屏;8uarts,8路UART(单网络)。
l evbp6ul-m256s64-res-5uarts.dtb:
m256,即memory 256MB;s64表示QSPI Nor Flash为64M;res表示电容式触摸屏;5uarts表示5路UART(双网络)。
l evbp6ul-m256e2g-cap-5uarts.dtb:
m256,即memory 256MB;e2g表示emmc Flash为2G;cap表示电容式触摸屏;5uarts表示5路UART(双网络)。
说明:选择正确的dtb才能使板子正常工作,具体可看/fsl-release-bsp/Makefile,然后选择对应的dtb编译。
        确认dts中usdhc1(EVB-P6UL硬件设计usdhc1为TF卡)的驱动描述,如下图3-3、图3-4、图3-5所示。
代码清单如下:
&usdhc1 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc1>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
cd-gpios = <&gpio1 19 0>;
keep-power-in-suspend;
enable-sdio-wakeup;
vmmc-supply = <®_sd1_vmmc>;
status = "okay";
};
代码清单如下:
代码清单如下:
reg_sd1_vmmc: regulator@1 {
                compatible = "regulator-fixed";
regulator-name = "VSD_3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
代码清单如下:
pinctrl_usdhc1: usdhc1grp {
fsl,pins = <
                MX6UL_PAD_SD1_CMD__USDHC1_CMD     0x17059
                MX6UL_PAD_SD1_CLK__USDHC1_CLK     0x10071
                MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059
                MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059
                MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059
                MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059
>;
};
pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
                fsl,pins = <
                                MX6UL_PAD_SD1_CMD__USDHC1_CMD     0x170b9
                                MX6UL_PAD_SD1_CLK__USDHC1_CLK     0x100b9
                                MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170b9
                                MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170b9
                                MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170b9
                                MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170b9
                >;
};
pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
                fsl,pins = <
                                MX6UL_PAD_SD1_CMD__USDHC1_CMD     0x170f9
                                MX6UL_PAD_SD1_CLK__USDHC1_CLK     0x100f9
                                MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170f9
                                MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170f9
                                MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170f9
                                MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170f9
                >;
};

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

267

帖子

0

粉丝