上一篇文章中,描述了在用户态下通过“ioctl”接口访问24系列i2c接口的EEPROM,本文描述调用EEPROM驱动接口实现访问。linux内核提供了完整的24系列EEPROM驱动,位于“kernel/drivers/misc”目录下(at24.c),可以直接使用。
编译系统:Ubuntu16.04
ARM硬件:firefly RK3399
ARM系统:firefly Ubuntu16.04(SDK)
连接i2c:i2c4
EEPROM:AT24C02
1. EEPROM驱动分析
24系列EEPROM是以i2c为接口的,不同厂家的芯片是可以相互兼容的,如atmel、st、microchip以及一些小众品牌。内核提供的源码是基于atmel的EEPROM(at24cxx)。
1.1 私有数据
struct at24_data {
struct at24_platform_data chip