在上一章介绍了i.MX6/i.MX7 EIM总线异步通信的时序。在了解了该总线传输过程时的时序变化后,这一章我们将介绍如果通过编码的方式来实现。
同样,我们先介绍我们一下我们的环境:
Linux版本:Linux3.14.52 Linux4.9.88 这两个版本都经过实际测试,确定传输是没有问题的。
硬件:i.MX6 (i.MX7也验证过,这里以i.MX6为实例进行介绍)
在Linux3.xx.xx以后的版本里面,引入了设备树的机制。该机制替代了以前驱动里面device的角色。我们这里的编码实现也是基于设备树机制实现的。
对于设备树不熟悉的朋友,我后期会拿一章简单介绍一下设备树的相关知识。
那么下面我们开始介绍实际的编码:
1、配置设备树:
在对应的设备树文件里面添加EIM相关信息的初始化,我这里修改的文件是:
arch/arm/boot/dts/imx6qdl-sabresd.dtsi
在如下节点里面添加如下信息:
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
imx6qdl-sabresd {
……//其他节点信息
pinctrl_weim_cs0_1:weim_cs0_1{
fsl,pins = <
//CS
MX6QDL_PAD_EIM_CS0__EIM_CS0_B 0xb0b1
>;
};
pinctrl_weim_fpga_1:weim_fpga_1{
fsl,pins = <
//RW-OE
MX6QDL_PAD_EIM_RW__EIM_RW 0xb0b1
MX6QDL_P