最近在调eeprom,使用的是mx6q,linux内核版本为3.0.35。eeprom使用的是24c64。我在系统驱动中找到了有at24.c文件,看代码是支持24c64的。于是在i2c_board_info mxc_i2c1_board_info 中增加了I2C_BOARD_INFO("24c64", 0x50),在menuconfig中选中了at24驱动,编译下载后,在/sys/bus/i2c/device/1-0050/中也找到了相应的eeprom二进制文件。但是在使用cat eeprom命令时,系统报错:Connection time out,不知道是什么问题。接下来我在系统启动的打印信息中找到以下内容:at24 1-0050: 8192 byte 24c64 EEPROM, writable, 1 bytes/write ,此部分是at24驱动中,probe函数中代码执行所显示,其中1byte为at24->write_max 变量,我想问下各位, 为很么是1 bytes呢。接下来我在probe函数最后增加了 at24_bin_write,at24_bin_read,然后打印write函数中buf1的内容,和read到buf2的数据,发现buf1打印结果正常,buf2为空,说明数据没有读出。接下来,我在测试文件中使用write函数想写数据进去,返回值为-1,没有写成功。所以我想问一下是各位,我整个过程有什么问题,为什么此部分工作不正常呢。 |