发布网友
共1个回答
热心网友
ynq7000的I2C控制器是cadence公司的IP,做一个驱动如果从阅读数据手册开始,效率会很低,因此首先找到了其Linux的I2C驱动文件i2c_cadence.c,话一部分时间阅读两遍后,会了解Zynq7000的I2C控制器工作流程和操作方法。
开始是基于Linux的驱动进行移植的,进展不是很顺利,主要是Linux驱动中的数据收发均是在中断中完成,并加入了Linux自身的驱动框架。为了方便的调试驱动,先调试无中断情况下的功能,然后在将中断、FIFO等加入以提高效率是一个比较不错的方法。为了快速的调试通过I2C驱动,这里考虑了其Uboot中的驱动文件。
Zynq7000的I2C控制器Uboot下的驱动文件是zynq_i2c.c,此文件设计非常容易理解,文件中一共有7个函数,其中有用的是如下5个函数,通过阅读以下五个函数,可以很容易了解I2C的操作过程,而且可以直接在驱动中使用**read、**write函数进行测试。