主题 : 运行光盘中i2c测试程序出错 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 1970
精华: 0
发帖: 34
金钱: 175 两
威望: 43 点
综合积分: 68 分
注册时间: 2008-10-15
最后登录: 2019-10-25
楼主  发表于: 2010-12-03 09:36

 运行光盘中i2c测试程序出错

我在FC9的系统中按手册编译光盘中的:\linux示例代码\examples\i2c,然后在终端运行,具体情况如下:

[root@FriendlyARM i2c]# ./i2c
I2C-24C08(256 bytes) Read/Write Program, ONLY FOR TEST!
FriendlyARM Computer Tech. 2009

[line 84]
[root@FriendlyARM i2c]#


可以看到只打印一些信息就跳出了程序,请问题这个程序执行出错了吗?

我的开发板是MIN2440  存储是1G的
级别: 新手上路
UID: 1970
精华: 0
发帖: 34
金钱: 175 两
威望: 43 点
综合积分: 68 分
注册时间: 2008-10-15
最后登录: 2019-10-25
1楼  发表于: 2010-12-03 09:55

 Re:运行光盘中i2c测试程序出错(问题补充)

我在程序里设置了打印信息:

int main(int argc, char** argv)
{
    struct eeprom e;
    int op;

    op = 0;
      printf("\n#########1################\n");
    usage_if(argc != 2 || argv[1][0] != '-' || argv[1][2] != '\0');
printf("\n########555############\n");
    op = argv[1][1];
printf("\n########666############\n");
    fprintf(stderr, "Open /dev/i2c/0 with 8bit mode\n");
    die_if(eeprom_open("/dev/i2c/0", 0x50, EEPROM_TYPE_8BIT_ADDR, &e) < 0,
            "unable to open eeprom device file "
            "(check that the file exists and that it's readable)");

只打印出了:
#########1################
I2C-24C08(256 bytes) Read/Write Program, ONLY FOR TEST!
FriendlyARM Computer Tech. 2009

[line 84]

也就是说程序出错在 :
usage_if(argc != 2 || argv[1][0] != '-' || argv[1][2] != '\0');
里。
而这个函数的定义为:

#define usage_if(a) do { do_usage_if( a , __LINE__); } while(0);
void do_usage_if(int b, int line)
{
    const static char *eeprog_usage =
        "I2C-24C08(256 bytes) Read/Write Program, ONLY FOR TEST!\n"
        "FriendlyARM Computer Tech. 2009\n";
    if(!b)
        return;
    fprintf(stderr, "%s\n[line %d]\n", eeprog_usage, line);
    exit(1);
}

所以打印出了line  84

这个问题究竟是什么原因造成的?怎么解决?
级别: 新手上路
UID: 34676
精华: 0
发帖: 22
金钱: 120 两
威望: 24 点
综合积分: 44 分
注册时间: 2010-12-19
最后登录: 2012-02-09
2楼  发表于: 2011-07-12 10:26
这段执行的应用程序是要带参数的 usage_if(argc != 2 || argv[1][0] != '-' || argv[1][2] != '\0');后面还有switch