linux 系统移植(第十五期)---Linux 内核移植(4)-- 修改 EMMC 驱动--- Ubuntu20.04

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

[一、使能 8 线 EMMC 驱动](#一、使能 8 线 EMMC 驱动)

[二、关闭 EMMC 1.8V 供电选项](#二、关闭 EMMC 1.8V 供电选项)

总结


前言

上两期我们把主频设置好了,接下来我们得修改一下 EMMC 驱动,因为Linux 内核驱动里EMMC 默认是 4 线模式的,而我们用的I.MX6U-ALPHA 开发板是8线模式,所以得修改一下驱动。


一、使能 8 线 EMMC 驱动

I.MX6U-ALPHA 开发板C 采用的是 8位数据线,原理图如下图所示:

4 线模式肯定没有 8 线模式的速度快,所以本节我们将 EMMC 的驱动修改为 8 线模式。修改方法很简单,直接修改设备树即可,打开文件 imx6ull-alientek-emmc.dts,找到如下所示内容:

复制代码
&usdhc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc2>;
	non-removable;
	status = "okay";
};

改成下列代码:

复制代码
&usdhc2 {
	pinctrl-names = "default", "state_100mhz", "state_200mhz";
	pinctrl-0 = <&pinctrl_usdhc2_8bit>;
	pinctrl-1 = <&pinctrl_usdhc2_8bit_100mhz>;
	pinctrl-2 = <&pinctrl_usdhc2_8bit_200mhz>;
	bus-width = <8>;
	non-removable;
	status = "okay";
};

二、关闭 EMMC 1.8V 供电选项

从原理图中可以看出,此时 EMMC 工作电压是 3.3V 的,因此我们要在上一节提到的代码中的 usdhc2 设备树节点中添加"no-1-8-v"选项,也就是关闭 1.8V 这个功能选项。防止内核在运行的时候用 1.8V 去驱动 EMMC,导致 EMMC 驱动出现问题,修改后的 usdhc2 节点内容如下所示:

复制代码
&usdhc2 {
	pinctrl-names = "default", "state_100mhz", "state_200mhz";
	pinctrl-0 = <&pinctrl_usdhc2_8bit>;
	pinctrl-1 = <&pinctrl_usdhc2_8bit_100mhz>;
	pinctrl-2 = <&pinctrl_usdhc2_8bit_200mhz>;
	bus-width = <8>;
	non-removable;
	no-1-8-v;
	status = "okay";
};

修改完成以后保存一下 imx6ull-alientek-emmc.dts,然后使用命令"make dtbs"重新编译一

下设备树,编译完成以后使用新的设备树重启 Linux 系统即可。


总结

这一期我们主要把EMMC驱动修改了一下,改成了8线模式,适配我们自己使用的开发板。

相关推荐
Harm灬小海3 分钟前
【云计算学习之路】学习Centos7系统:Linux磁盘管理
linux·运维·服务器·学习·云计算
chushiyunen5 分钟前
python使用笔记(linux环境)
linux·笔记·python
艾莉丝努力练剑9 分钟前
【Linux网络】Linux 网络编程:HTTP(三)HTTP 协议原理
linux·运维·服务器·网络·c++·http
小皮蛋儿子10 分钟前
mac 微信双开
linux·服务器·apache
minji...10 分钟前
Linux 网络基础之网络IP层(十一)私有IP地址和公网IP地址,运营商和全球网络,理解公网
linux·服务器·网络·nat·内网·公网·运营商
Rabbit_QL11 分钟前
【find的用法】macOS/Linux 下高效查找文件
linux·macos
安生生申16 分钟前
uni-app 连接 JDY-31 蓝牙串口模块实践
c语言·前端·javascript·stm32·单片机·嵌入式硬件·uni-app
逆境不可逃16 分钟前
Hello-Agents 第二部分-第九章总结:上下文工程
linux·运维·服务器
spencer_tseng19 分钟前
HeapOOM && jvisualvm.exe
java·linux·jvisualvm.exe
小此方23 分钟前
Re:Linux系统篇(十九)进程篇·四:内核托底与生死交错 ,深度硬核剖析“僵尸”与“孤儿”进程
linux·运维·驱动开发