AM437x驱动移植篇2------emmc驱动移植
0.说明:
LINUX内核版本:4.14.79
平台:AM437x
1.查阅原理图和芯片手册
原理图如上图所示。
在芯片手册里查找对应管脚(以emmc_data0为例):
通过查找数据手册得知本例中的emmc连接到了emmc1。
根据gpmc_ad8,可以得到寄存器偏移地址为820h,当用于emmc1_data0时为模式2.
依次类推,可以得到全部引脚的偏移地址。
用到的手册文件的下载地址:
链接:https://pan.baidu.com/s/1YkTODlxbeiZVUC2SUgZQmw
提取码:cr53
2.设备树配置
找到emmc1相关节点的配置(设备树中emmc节点名字是从1开始的,数据手册里描述的是从0开始的):
根据注释可看到:要想使能emmc2需要失能nand并将SelEMMCorNAND设置为output-high
失能nand:
设置SelEMMCorNAND
根据先前查到的偏移地址配置emmc_pins(4.14.79版本的内核直接填写在手册中查到的偏移地址即可,在此之前的填写的是偏移地址-800h):
成功识别到emmc:
总结
移植emmc的关键是配置d0-d7以及clk、cmd、rst这几个引脚,需要注意的是配置完成后需要确定引脚没有被重复使用。