时时笔记丨驱动丨迅为4412开发板-mmc升级驱动修改篇

本文详细指导了如何在mmc升级后,针对iTOP系列开发板如4412/4418/6818及MX6Q/D/UL等,通过修改mmc驱动和uboot配置,避免因版本判断导致的启动失败。重点在于禁用mmc驱动的版本检查并提供替代修改方法。
摘要由CSDN通过智能技术生成

mmc 升级之后,用户如果使用老的镜像(201805 月之前的代码),会打印 mmc 的错误,并无法启动。这是因为在默认的 mmc 驱动源码中有几行判断 mmc 版本的代码,随着时间流逝,mmc 硬件版本一直在升级,导致超出了预留的 mmc 版本号,其实 mmc 硬件驱动是一模一样的,只需要注释掉 mmc 驱动中版本判断的代码即可。
本文档适用于 iTOP-4412 精英版/全能版,iTOP-4418/6818 全能版,iTOPIMX6Q/D/UL 全能版。
1、mmc 驱动修改
mmc 驱动要修改的文件为内核源码“/drivers/mmc/core/”下的 mmc.c 驱动文件。
在该驱动文件下找到函数“mmc_read_ext_csd”,如下图所示。


在“mmc_read_ext_csd”函数中的判断 mmc 硬件版本代码部分如下图所示。


请注意,可能在部分开发板中已经简单修改,但是还是存在 mmc 升级之后可能无法使用
的情况,这里可以直接将其中的版本报错返回的代码注释掉。将

err = -EINVAL;

goto out;

复制代码

直接注释掉重新编译是最简单的修改方法。
也可以如下所示修改,这部分判断版本范围直接修改为打印版本号。

#if 0

printk(KERN_ERR "%s: unrecognised EXT_CSD revision %d\n",

mmc_hostname(card->host), card->ext_csd.rev);

err = -EINVAL;

goto out;

#else

printk(KERN_ERR "%s: EXT_CSD revision %d\n",

mmc_hostname(card->host), card->ext_csd.rev);

#endif


2、4412 的 uboot 修改
mmc 硬件升级之后,uboot 部分,除了 4412 开发板需要简单修改,其它开发板不影响。
将 4412 的 uboot 源码下的 drivers/mmc 目录下的 mmc.c 文件替换为压缩包中
4412uboot 文件夹下的 mmc.c 文件即可。
请注意,其它开发板不需要修改,这个驱动文件是 4412 的源码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值