首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

I2c能否通过mmap读写解决方案

2012-02-20 
I2c能否通过mmap读写现在要做一个I2C的键盘的控制程序,我想直接在用户态写比较简单.C/C++ code#define I2C

I2c能否通过mmap读写
现在要做一个I2C的键盘的控制程序,我想直接在用户态写比较简单.

C/C++ code
#define I2C0_REG_BASE         (0x01C22000)m_nFd = open("/dev/mem", O_RDWR); m_pBaseAddr = (i2c_regs_t *)mmap(0, sizeof(i2c_regs_t), PROT_READ | PROT_WRITE, MAP_SHARED, m_nFd,        (0x00000000+I2C0_REG_BASE ) >>0 );在I2C 的读写函数中,总是死在红色的位置 // transmit data one byte at a time.      for (i = 0; i < in_length; i++)      {         i2c->ICDXR = src_buffer[i];          // wait for data to be copied to shift register.         cnt = 0;         do         {                         if (cnt++ > I2C_TIMEOUT)            {               // timed out waiting for data...reinit and return error.               //I2C_init(i2c, g_clock_rate);              // return (ERR_TIMEOUT);            }         } [color=#FF0000]while (!CHKBIT(i2c->ICSTR, ICXRDY));[/color]      }


我的内核是2.6.33.rc4 板子OMAPL138, arm-926ejs+DSP, DDR内存起始区域 0xc0000000. 键盘控制芯片TCA8418
这种方法可不可以,
如果可以0x00000000 是不是要换成0xc000000(也不行)
还有我看有人说显存的例子,offset写a00000, 我把地址>>12 或>>8也不行.



[解决办法]
都不支持你的设备,你有什么办法,你只能自己添加进去了。
[解决办法]
不过你竟然用了内存映射,就不应该在使用read()和write()来读写数据了.

热点排行