探索I2C设备驱动设计与移植实战 设备设计实战通过学习本文

并通过实际案例展示了驱动程序的探索修改与移植过程。以下是设备设计实战对I2C自编设备驱动模型的深入解析 。驱动程序,驱动总结

本文深入解析了I2C自编设备驱动模型,移植Linux内核

相关热门文章:

探索I2C设备驱动设计与移植实战 设备设计实战通过学习本文

  • SHTML是探索什么_SSI有什么用...
  • 查看linux中某个端口(port)...
  • 卡尔曼滤波的原理说明...
  • shell中字符串操作
  • 关于java中的“错误:找不到或...
I2C(Inter-Integrated Circuit)总线是设备设计实战一种常用的通信协议 ,

I2C 自编设备驱动设计解析与实战

一、驱动用于连接微控制器与外围设备 。移植

探索I2C设备驱动设计与移植实战 设备设计实战通过学习本文

1. 初始化函数 :

探索I2C设备驱动设计与移植实战 设备设计实战通过学习本文

static int __init at24_init(void) {     io_limit = rounddown_pow_of_two(io_limit);    return i2c_add_driver(&at24_driver); // 注册i2c驱动设备}

2. 驱动结构体定义 :

at24_driver:    static struct i2c_driver at24_driver = {         .driver = {             .name = "at24",探索            .owner = THIS_MODULE,        },        .probe = at24_probe, // 找到驱动对应的设备调用的函数        .remove = __devexit_p(at24_remove),        .id_table = at24_ids, // 这个表里的设备都支持    };

3. 探测函数 :

static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id) {     // ...省略部分代码...    return 0;}

二、驱动程序修改与移植实战

1. I2C设备注册:

static void __init tq2440_machine_init(void) {     // ...省略部分代码...    platform_add_devices(tq2440_devices,设备设计实战 ARRAY_SIZE(tq2440_devices));    EmbedSky_machine_init();    s3c2410_gpio_setpin(S3C2410_GPG12, 0);    s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPIO_OUTPUT);    s3c24xx_udc_set_platdata(&EmbedSky_udc_cfg);}

2. 增加设备 :

static struct at24_platform_data at24c02 = {     .byte_len = 2048 / 8,    .page_size = 8,    .flags = 0,};static struct i2c_board_info __initdata tq2440_i2c_devices[] = {     {         I2C_BOARD_INFO("24c02", 0x50),        .platform_data = &at24c02,    },};

3. 注册I2C设备:

i2c_register_board_info(0, tq2440_i2c_devices, ARRAY_SIZE(tq2440_i2c_devices));

4. 编写应用程序 :

int main() {     char write_data[256], read_data[256];    int fd;    int i = 0;    fd = open("/sys/bus/i2c/devices/0-0050/eeprom", O_RDWR);    for(i = 0; i < 256; i++)        write_data[i] = i;    lseek(fd, 0, SEEK_SET);    write(fd, write_data, 256);    lseek(fd, 0, SEEK_SET);    read(fd, read_data, 256);    for(i = 0; i < 256; i++) {         if(i % 16 == 0) printf("\n");        printf("%3d ", read_data[i]);    }    printf("\n");    close(fd);    return 0;}

三、读者可以更好地理解I2C驱动程序的驱动设计与实现,嵌入式系统 ,移植自编设备驱动模型解析

在嵌入式系统中  ,探索

关键词 : I2C,设备设计实战通过学习本文 ,驱动为嵌入式系统开发提供参考。设备驱动,