imx6ul evk板子 记录(5)通过底板sd卡即mmc 0 启动设备

mx6UL有两路sdio 其中核心板上一路 mmc 1  底板上一路 mmc0

现在 想要通过底板上的mmc 0启动设备

mfgtool 工具目录下面 有mfgtool2-yocto-mx-evk-sdcard-sd1.vbs 文件 可以烧录mmc 0 需要的系统

第一次烧录的时候 什么都不用管 跟sw601 sw602跟烧mmc 1 一样设置 

       烧完后 ,uboot启动完后 提示无法启动kernel ,因为从ucl2.xml 可以分析出来,mfgtool烧录mmc 0设备和烧录mmc 1设备用的是一样的uboot,而默认的Uboot是配置的mmc1的,也就是说env参数不对,uboot起来后可以通过printenv命令看到 mmcdev=1, fatload mmc也是1,这就使得uboot装载kernel的时候 找不到正确的mmc设备,导致系统无法正常启动,并且这个时候用saveenv命令修改环境变量也是无济于事的,因为就没有可以供env保存的mmc设备。Uboot在mmc init的时候都已经失败了。这就需要我们修改下uboot的代码。如下:

1:修改includ/configs/ 目录下面的 mx6ul_14x14_evk.h的 

#define CONFIG_SYS_MMC_ENV_DEV1   /* USDHC2 */
#define CONFIG_SYS_MMC_ENV_PART0/* user area */
#define CONFIG_MMCROOT"/dev/mmcblk1p2"  /* USDHC2 */

改为

#define CONFIG_SYS_MMC_ENV_DEV0 /* USDHC2 */
#define CONFIG_SYS_MMC_ENV_PART0/* user area */
#define CONFIG_MMCROOT"/dev/mmcblk0p2"  /* USDHC2 */

2:修改board/freescale/mx6ulmx6ul_14x14_evk/mx6ul_14x14_evk.c

int mmc_get_env_devno(void)
{
u32 soc_sbmr = readl(SRC_BASE_ADDR + 0x4);
int dev_no;
u32 bootsel;

bootsel = (soc_sbmr & 0x000000FF) >> 6 ;

/* If not boot from sd/mmc, use default value */
if (bootsel != 1)
return CONFIG_SYS_MMC_ENV_DEV;


/* BOOT_CFG2[3] and BOOT_CFG2[4] */
dev_no = (soc_sbmr & 0x00001800) >> 11;

return dev_no;
}

改为


int mmc_get_env_devno(void)
{
u32 soc_sbmr = readl(SRC_BASE_ADDR + 0x4);
int dev_no;
u32 bootsel;

bootsel = (soc_sbmr & 0x000000FF) >> 6 ;

/* If not boot from sd/mmc, use default value */
if (bootsel != 1)
return CONFIG_SYS_MMC_ENV_DEV;


/* BOOT_CFG2[3] and BOOT_CFG2[4] */
dev_no = (soc_sbmr & 0x00001800) >> 11;

return 0;
}


之后重启编译uboot,然后将生成的文件放到mfgtool工具下面相应的目录下,然后通过mfgtool2-yocto-mx-evk-sdcard-sd1.vbs重新烧录系统。但是这个时候会遇到另外一个问题,就是如果这个时候底板的sd卡是插入状态的话,就算sw602拨到串口下载模式,底板sd之前烧录的uboot还是会启动,这个问题目前我还没有解决,不过我采用了另外的方法,就是上电之前先把底板的sd卡给拔掉,然后上电,启动mfg工具,之后在将sd卡插入,这个时候,mfg工具就能正常下载了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值