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

相关推荐
礼拜天没时间.2 小时前
《Docker实战入门与部署指南:从核心概念到网络与数据管理》:初识Docker——概念与优势
linux·运维·网络·docker·容器·centos
阿钱真强道2 小时前
05 thingsboard-4.3-ubuntu20-rk3588-部署
linux·运维·服务器·鸿蒙
夜颂春秋2 小时前
重温Linux命令
linux·运维·职场和发展·单元测试
weixin_462446232 小时前
Hive 4.0.1 自动安装脚本详解:一键部署 + 环境变量配置(适用于 Linux)
linux·hive·hadoop
Sheep Shaun2 小时前
Linux 环境搭建终极指南(Ubuntu 版):2026 最新版,适配 Ubuntu 24.04 LTS
linux·运维·服务器·ubuntu
松涛和鸣2 小时前
62、IIC通信解析
服务器·arm开发·单片机·嵌入式硬件·html
2501_927773072 小时前
嵌入式——I.MX6ULL裸机环境配置
c语言·嵌入式硬件
yuan199972 小时前
STM32F103CBT6驱动AW9523B实现呼吸灯实例
stm32·单片机·嵌入式硬件
三伏5222 小时前
Cortex-M3权威指南Cn第八章——笔记
笔记·单片机·嵌入式硬件·cortex-m3