ez-m28 용 커널에 i2c가 포팅되 있어서 그걸 사용하려고 아래와 같이 코딩 했
습니다.
그런데 에러가 발생하는군요.
조언 부탁드립니다.


#include
#include
#include
#include
#include

#define CHIP_ID 0x1C

int main(void)
{
int file;
int addr = CHIP_ID; // The I2C address
__s32 res;
char buf[10];
int adapter_nr = 0;
char filename[20];
struct i2c_rdwr_ioctl_data rdwr_arg;

sprintf(filename,"/dev/i2c-%d",adapter_nr);
if ((file = open(filename,O_RDWR)) < 0) {
/* ERROR HANDLING; you can check errno to see what went wrong */
printf("Error al abrir el dispositivo
");
exit(1);
}

if (ioctl(file,I2C_SLAVE,addr) < 0) {
/* ERROR HANDLING; you can check errno to see what went wrong */
printf("Error al n");
exit(1);
}
rdwr_arg.nmsgs = 3;
rdwr_arg.msgs[0].addr = 7;
rdwr_arg.msgs[0].flags = 0;
rdwr_arg.msgs[0].len = 1;
rdwr_arg.msgs[0].buf = &buf;
buf[0]= 0xAA;

res = ioctl(file, I2C_RDWR,&rdwr_arg);
if (res < 0) {
/* ERROR HANDLING: i2c transaction failed */
printf("i2c transaction failed
");
}
close (file);
}

/////////////////////////////////////////////////////////////
# ./i2c_test
pc : [<020004ec>] lr : [<020004c0>] Not tainted
sp : bffffdb4 ip : 400b54c0 fp : bffffdf0
r10: 40104f28 r9 : 02000600 r8 : 020002e4
r7 : 4001dfa0 r6 : 00000001 r5 : 00000000 r4 : 00000003
r3 : 00000007 r2 : bfffdb4 r1 : 00000703 r0 : 00000001
Flags: nZCv IRQs on FIQs on Mode USER_32 Segment user
Control: Cooo317f Table: 098A4000 DAC: 00000015
Segmentation fault