请问i2c的驱动如何进行读写操作?

i2c驱动程序在根目录下创建了设备/dev/i2c0,如何进行i2c接口的E2prom的读写操作?
能不能像串口那样访问?open read write?我试过不行.
我想对于i2c从设备的访问,是要进行地址定义的,同时e2prom内部的数据也是有地址的?

我手头没有环境,不过,一般不能直接open/read/write的话,那就一定会有一个库供你使用。找找看有没有 libi2c 什么的吧。

i2c读写必须通过devctl来完成.<hw/i2c.h>中有相关定义.

谢谢 大家跟帖!
我参照devctl 的 help进行 操作。得到一些奇怪的信息。
我用 devctl 进行总线速度设置为 400Kb ,devctl的返回值为0 正常 ,但是用devctl进行读写 时 其返回值为5 即EIO说明 从地址错误 或 总线速度不对 或 总线忙。 我的操作 基本按照 RTC的源码进行的。 同时我用sloginfo看,提示错误:从地址错误。
我采用devctl 读取驱动的 info 信息,里面 的两个信息 地址类型=3 总线速度=3 很奇怪, 正常情况下应该是 地址类型=1 (7位) 总线速度=2 (400K)
请大家帮忙分析。

补充 我调试的板卡是 Mpc 8313 RDB


今天调试进展:
基本实现了 读和写功能.
我写采用devctl(fd, DCMD_I2C_SEND , …)
我读采用devctlv(fd, DCMD_I2C_SENDRECV ,…)

但是速度很慢, 读写10个字节大约需要12秒,我在读写之前也设置了bus-speed 为I2C_SPEED_FAST .采用devctl (fd,DCMD_I2C_SET_BUS_SPEED… )进行设置.

不知问题出在那?
还请高手指点.


通过tracelog 查看,i2c-mpc5200 的中断1秒钟才产生一个,中断数与我发送的字节数相同.不知为何 中断需要1秒?
我再测试,我在启动i2c读写进程之前,我运行一个应用程序(50ms为周期printf “hello world!”), i2c读写速度明显变快.大约5秒能完成上面的读和写(原来需要25秒), 我用tracelog查看,发现此时i2c-mpc5200的中断时间间隔长短不一,有时100ms ,有时300ms 有时500ms 有时1000ms,不知是何原因造成的.

在调试过程中,sloginfo 发现还会出现 报错信息:master send ARBL.

想学学,不知道怎么弄,楼上的做出来了没