目录
一、修改设备树,注意设备地址的计算
这款时钟芯片是I2C接口,驱动源码由厂家提供。
注意:在大部分情况下,i2c的DATA和CLK均要接上拉电阻,我们接的是4.7K。
在设备树对应的I2C总线下,添加ins5699s节点。
设备地址0x32,请从芯片手册中查找:
8 bit,高7位代表设备地址,即二进制:0011 0010,高位补零。
驱动安装模块的方式编译。
在更换设备树后,使用I2Ctools工具查看I2C总线情况。
二、大致的调试步骤
1、检查i2c适配器是否加载成功
i2cdetect:用于扫描 i2c 总线上的设备
如果i2c2打开了,i2cdetect -l便能看到,说明i2c2适配器是OK的,如果没有,不忙着加载ins5699驱动,先排查适配器问题。我在此处没有任何回显,才发现设备树中i2c2的status是“okey”,而不是“okay”,导致i2c2总线没有使能!
i2cget -f -y 2 0x32 0x00:读取i2c2总线上地址为0x32的设备,该设备0x00的寄存器数据
如果回显“Error: Read failed”,也说明i2c适配器有问题。我在此处报错了,才发现i2c2的DATA和CLK引脚没有接上拉电阻!
2、加载设备驱动,看能否检测到设备
insmod rtc-ins5699.ko
然后
./i2cdetect -r -y 2:扫描i2c2总线上的所有地址。
其回显中,– 表示该地址被检测,但是没有芯片应答,UU 表示该地址被当前内核驱动使用。
此处如果0x32地址处不是显示UU,而是显示-,说明总线和5699通信正常。
在/dev/下面应该能看到rtc的设备节点了。
之后,再执行5699的测试程序。
最后的最后,hwclock命令便可正常设置时间了。