温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

i2c驱动(二) core分析

发布时间:2020-05-28 13:21:41 来源:网络 阅读:522 作者:毛散人 栏目:编程语言

设备和CPU连接方式

 1gpio连接设备 (LED按键)

 2ram-like  会使用到数据线,地址线,控制线

   nand DDRAM   DM9000

 3)协议类型接口

   i2c   spi  usb   uart    

 按照总线设备来完成AT24C02的驱动程序

1,总线i2c 总线也是设备 该设备也应该实现驱动程序 ,该驱动程序完成的功能就是按照   i2c协议的要求收发数据i2c_transfer...)??

i2c驱动怎么写的也就是怎么实现的啊)找到i2c控制器的驱动程序

make menuconfig  路径是driver/i2c/busses/  变量:CONFIG XX XXXX  Makefile中找变量在找.o然后对应他的.c文件  通过程序可看出i2c控制器(总线)是通过platform虚拟总线写的,   在找下自己写的i2c设备驱动的调用会用到它么?如i2c_transfer中怎么用msg的   

在函数中只有return=adap->algo->master_xferadapmsgsnum)  能发现它是s3c24xx_i2c_algorithm中的成员 .masrter_xfer = s324xx_i2c_xfer, 又因i2c->adap.algo = &s3c24xx_i2c_algorithm,可以怀疑以前我们找出来的是正确的,其中一个方法可以改改我们找到那个.c文件中的该函数中加点打印信息即可验证他是否我们的猜想一致。这样找到了CPUi2c控制器的驱动程序:i2c_s3c2410.c

 

 

  2.设备

   2.6.35内核中实例化i2c的设备有4种方式   i2c_new_device???

设备怎么添加进去的?

i2cclient怎么来的?

首先定义了下上次我们说的数组之后注册了下i2c_register_board_info内核怎么自动给我们添加i2c_client?   在2c_register_board_info中他放在devinfo->bard_info = *info然后

list_add_tail....&__i2c_board_list;   真正使用这链表的只有i2c_scan_static_board_info(。。)在干嘛呢??list_for_each_entry取出链表中的元素在i2c_new_device

哪块会调用2c_scan_static_board_info    i2x_register_adapter调用它了,这个函数是实例化,哪里会使用它?i2c_add_numbered_adapter

内核中实现i2c控制器驱动,想内核中注册了ada_

内核中注册adapter时,同时完成扫描静态链表,看是否有设备挂在该adapteri2c控制器)上,如果存在的话,会根据该设备的信息(“at24c02”,0x50)来完成i2c_client的实例化并注册,

   3.设备驱动(略)

    

 

如果我们自己写怎么写这个控制器??1)看CPU的芯片手册的i2c的章节  怎么操作I2CCON,I2CDAT,I2CDS寄存器


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI