AM437x驱动移植篇2------emmc驱动移植

0.说明:

LINUX内核版本:4.14.79

平台:AM437x

1.查阅原理图和芯片手册

AM437x驱动移植篇2------emmc驱动移植

原理图如上图所示。

在芯片手册里查找对应管脚(以emmc_data0为例):

AM437x驱动移植篇2------emmc驱动移植

通过查找数据手册得知本例中的emmc连接到了emmc1。

根据gpmc_ad8,可以得到寄存器偏移地址为820h,当用于emmc1_data0时为模式2.

AM437x驱动移植篇2------emmc驱动移植

依次类推,可以得到全部引脚的偏移地址。

用到的手册文件的下载地址:

链接:https://pan.baidu.com/s/1YkTODlxbeiZVUC2SUgZQmw 
提取码:cr53 

2.设备树配置

找到emmc1相关节点的配置(设备树中emmc节点名字是从1开始的,数据手册里描述的是从0开始的):

AM437x驱动移植篇2------emmc驱动移植

根据注释可看到:要想使能emmc2需要失能nand并将SelEMMCorNAND设置为output-high

失能nand:

AM437x驱动移植篇2------emmc驱动移植

设置SelEMMCorNAND

AM437x驱动移植篇2------emmc驱动移植

根据先前查到的偏移地址配置emmc_pins(4.14.79版本的内核直接填写在手册中查到的偏移地址即可,在此之前的填写的是偏移地址-800h):

AM437x驱动移植篇2------emmc驱动移植

成功识别到emmc:

AM437x驱动移植篇2------emmc驱动移植

 

总结

移植emmc的关键是配置d0-d7以及clk、cmd、rst这几个引脚,需要注意的是配置完成后需要确定引脚没有被重复使用。