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线模式,适配我们自己使用的开发板。

相关推荐
哈基咪怎么可能是AI1 小时前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行18 小时前
Linux和window共享文件夹
linux
木心月转码ing1 天前
WSL+Cpp开发环境配置
linux
崔小汤呀2 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应2 天前
vi编辑器使用
linux·后端·操作系统
何中应2 天前
Linux进程无法被kill
linux·后端·操作系统
何中应2 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应2 天前
Linux常用命令
linux·操作系统
葛立国2 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux
哇哈哈20213 天前
信号量和信号
linux·c++