本帖最后由 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.c将USDHC1设为高电平。如图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 >; };
|