分享一段自己写的Linux 驱动调试寄存器的代码
头文件:
int mma_proc_read( char *page, char **start, off_t off, int count, int *eof, void *data ){int len = 0;int reg_index, reg_data;printk(KERN_INFO "--MMA_PROC---%s----\n",__func__);if(off > 0) {*eof = 1;return 0;}//if(strcmp(proc_cmd, "dump") == 0){//reg_index = simple_strtol(proc_reg, NULL, 16);//printk("reg1: %x\n",i2c_smbus_read_byte_data(client, MMA8451_CTRL_REG1));//printk("reg2: %x\n",i2c_smbus_read_byte_data(client, MMA8451_CTRL_REG2));//printk("reg3: %x\n",i2c_smbus_read_byte_data(client, MMA8451_CTRL_REG3));//printk("reg4: %x\n",i2c_smbus_read_byte_data(client, MMA8451_CTRL_REG4));//printk("reg5: %x\n",i2c_smbus_read_byte_data(client, MMA8451_CTRL_REG5));len = sprintf(page, "==========MMA REG==========\n");reg_data = i2c_smbus_read_byte_data(proc_client, MMA8451_CTRL_REG1);len += sprintf(page + len, "REG1: 0x%x\n", reg_data);reg_data = i2c_smbus_read_byte_data(proc_client, MMA8451_CTRL_REG2);len += sprintf(page + len, "REG2: 0x%x\n", reg_data);reg_data = i2c_smbus_read_byte_data(proc_client, MMA8451_CTRL_REG3);len += sprintf(page + len, "REG3: 0x%x\n", reg_data);reg_data = i2c_smbus_read_byte_data(proc_client, MMA8451_CTRL_REG4);len += sprintf(page + len, "REG4: 0x%x\n", reg_data);reg_data = i2c_smbus_read_byte_data(proc_client, MMA8451_CTRL_REG5);len += sprintf(page + len, "REG5: 0x%x\n", reg_data);reg_data = i2c_smbus_read_byte_data(proc_client, 0x0c);len += sprintf(page + len, "INT RESOURCE: 0x%x\n", reg_data);}return len;}#endif结束语:
在mma8451,加速度传感器芯片上测试通过,这是一个通用的方法,在调试芯片寄存器的时候比较有用。