探索I2C设备驱动设计与移植实战 设备设计实战通过学习本文
并通过实际案例展示了驱动程序的探索修改与移植过程。以下是设备设计实战对I2C自编设备驱动模型的深入解析。驱动程序,驱动总结
本文深入解析了I2C自编设备驱动模型,移植Linux内核
相关热门文章:

- SHTML是探索什么_SSI有什么用...
- 查看linux中某个端口(port)...
- 卡尔曼滤波的原理说明...
- shell中字符串操作
- 关于java中的“错误:找不到或...
I2C 自编设备驱动设计解析与实战
一、驱动用于连接微控制器与外围设备 。移植

1. 初始化函数:

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,设备设计实战通过学习本文 ,驱动为嵌入式系统开发提供参考。设备驱动,




