立即学习:https://edu.youkuaiyun.com/course/play/1197/140744?utm_source=blogtoedu
分配设置i2c_driver//
static int _devint at_pro()
{
printk():
}
static const struct i2c_device_id ={};//设备匹配信息
static i2c_driver atxx_drv={
.driver={};
.probe
.id_table
};
static int at24cxx_drv_init(void)
{
注册i2c driver
i2c_add_driver(..);
return 0;
}
static int at24cxx_drv_exit(void)
{
i2c_del_driver(..);
return 0;
}
、、、、、、
Dev
static stuct i2c_board_info atxx_info={
//name需要和drvname一样,address
I2C_BOARD_INFO("at",50)
};
static int i2c_client *atxx_client;
static int at_dev_inti(void)
{
struct i2c_adapter *i2c_adap;
i2c_adap=i2c_get_adapter(0);//get adapter{ID}//
atxx_client=i2c_new_device(i2c_adap,&atxx_info);
//new_device 强制认为设备肯定存在的。
//i2c_new_probed_device 能识别(比较成功才会调用pro)的才会”new “
I2c_put_adapter(i2c_adap);
}
..exit(void){
i2c_unregister_device();
}
/1111操作:
obj-m +=atxxdev.o
obj-m +=atxxdrv.o
insmod atxxdev.ko
insmod atxxdrv.ko
///printf...
rmmod *ko