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

相关推荐
leisoo809736 分钟前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
青瓦梦滋2 小时前
传输层UDP/TCP协议
linux·网络·c++·网络协议·tcp/ip·udp
ltl2 小时前
机密计算:SGX、SEV-SNP、TDX 与 ARM CCA
linux
ltl2 小时前
互联与网络:NVLink、InfiniBand、RoCE 与国产替代
linux
码上上班2 小时前
tengine知识点
linux·服务器·centos
大爱编程♡3 小时前
GPIO-I2C
stm32·单片机·嵌入式硬件
振南的单片机世界4 小时前
PVD掉电中断——让单片机“咽气前”写完遗书
arm开发·stm32·单片机·嵌入式硬件
雾时之林5 小时前
Linux--软件管理、源码包安装
linux·服务器·数据库
续写烂尾7 小时前
SD NAND存储实测:正点原子STM32精英板SDIO读写验证全流程
stm32·单片机·嵌入式硬件
sxstj8 小时前
Ubuntu 完整安装并启用 Flatpak 教程
linux·运维·ubuntu