本人从没写过真正的驱动,现在工作上要求写个驱动,是关于加密芯片at88sc0104c。想知道如何下手。看了芯片手册,明白个大概,但不知驱动里应该怎么操作,有哪些到底要自己实现,哪些可以调用内核的功能。真的很模糊。虽然在网上看到了很多有关linux i2c的驱动分析,可是就算通篇看完能理解,也不知道哪些该是自己要实现,何况现在是略懂而已。我不知道明白了i2c驱动架构对我写驱动有多大帮助,感觉没什么帮助,只是了解了一些结构和过程。现在只能模仿/drivers/i2c/chips/ 目录下已经存在的芯片驱动。但始终有个问题困扰着我,,i2c设备的从地址到底是怎么获取的??系统分配?硬件绑定?在芯片手册没发现哪里有交代地址是多少。模仿的驱动是采用probe方式,似乎还要自己填充i2c_board_info这个结构。
------解决方案--------------------
设备的从地址要根据你的从设备芯片的datasheet确认,有的芯片里写死的,有的是从芯片的外接电路有关系的。建议你根据/driver/i2c/chips/下面的一个芯片进行移植。
------解决方案--------------------
研究透i2c子系统对写i2c驱动帮助很大。
因为都是基于标准的驱动模型的。
------解决方案--------------------
"i2c设备的从地址到底是怎么获取的??"
从地址是国际上的I2C协议委员会规定的,每种器件的手册都会具体给出。例如E2PROM的基本地址就规定为A0。有些不同器件的地址还是重复的,此时需要靠器件上的引脚地址线来区分。好在同一个系统下的I2C器件数有限,不会引起冲突。
I2C驱动仅仅是提供了你访问某些常见器件的接口程序,有些器件还需要你自己来增补。
------解决方案--------------------
手册上没说是I2C,当然就不是I2C,也不能使用I2C驱动接口。按照手册时序,自己写模拟驱动程序吧。
------解决方案--------------------
------解决方案--------------------
以前我调试都是用LA(逻辑分析仪)。不知道你手上有这工具没有,这东西比较贵。