i2c-dev和spi-dev
2016-06-30 19:47
176 查看
i2c-dev.c
i2c_dev_init()
{
注册字符设备 i2cdev_fops
创造i2c_dev_class 用来创造设备 device_create
创建总线事件提醒 i2cdev_notifier -> i2cdev_notifier_call -> i2cdev_attach_adapter
链接已经存在的适配器
}
i2cdev_open()
{
获取子设备号
从子设备号获取 i2c_dev
从i2c_dev获取adapter
创建client
把client塞到 file->private_data 中去 以后 read write ioctl 都从这里面取client
}
i2cdev_read()
{
从file->private_data取出client
创建数据缓存
调用i2c_master_recv读数据
把缓存copy到用户空间内存
}
i2cdev_write()
{
从file->private_data取出client
创建数据缓存
把用户空间内存copy到缓存
调用i2c_master_send发送数据
}
i2cdev_attach_adapter()
{
获取adapter
获取i2c_dev
get_free_i2c_dev()
{
把adapter加一层i2c_dev的壳
把i2c_dev挂到i2c_dev_list链表上
}
创建设备和设备文件
}
spi_dev.c
spidev_init()
{
注册字符设备 spidev_fops
创建spidev_class
注册一个spidev_spi_driver spidev_probe
}
spidev_open()
{
遍历device_list找设备号
把spidev_data塞到filp->private_data
}
spidev_probe()
{
创建一个spidev_data
初始化锁和链表
找一个子设备号
创建设备
塞到device_list链表
}
i2c_dev_init()
{
注册字符设备 i2cdev_fops
创造i2c_dev_class 用来创造设备 device_create
创建总线事件提醒 i2cdev_notifier -> i2cdev_notifier_call -> i2cdev_attach_adapter
链接已经存在的适配器
}
i2cdev_open()
{
获取子设备号
从子设备号获取 i2c_dev
从i2c_dev获取adapter
创建client
把client塞到 file->private_data 中去 以后 read write ioctl 都从这里面取client
}
i2cdev_read()
{
从file->private_data取出client
创建数据缓存
调用i2c_master_recv读数据
把缓存copy到用户空间内存
}
i2cdev_write()
{
从file->private_data取出client
创建数据缓存
把用户空间内存copy到缓存
调用i2c_master_send发送数据
}
i2cdev_attach_adapter()
{
获取adapter
获取i2c_dev
get_free_i2c_dev()
{
把adapter加一层i2c_dev的壳
把i2c_dev挂到i2c_dev_list链表上
}
创建设备和设备文件
}
spi_dev.c
spidev_init()
{
注册字符设备 spidev_fops
创建spidev_class
注册一个spidev_spi_driver spidev_probe
}
spidev_open()
{
遍历device_list找设备号
把spidev_data塞到filp->private_data
}
spidev_probe()
{
创建一个spidev_data
初始化锁和链表
找一个子设备号
创建设备
塞到device_list链表
}
相关文章推荐
- i2c-dev和spi-dev
- i2c-dev和spi-dev
- 强大的矩阵奇异值分解(SVD)及其应用
- HRESULT解析
- zTree && blockUI(2016-6-30)
- 接收详情
- 关于对linux环境变量的理解
- test_latex_coding
- 微信查一下就可以知道录取通知书到哪了
- 监听视图树 ViewTreeObserver 获取View的宽高
- Mysql5.7源码安装
- Spring源码深度解析(八)解析及注册BeanDefinitions
- oracle表碎片整理
- 第三方登陆跳转传递图片和名字
- Kafka使用心得(2)—kafka介绍
- 一位软件工程师的6年总结
- Codeforces Round #360 (Div. 2) A. Opponents 水题
- 使用 Charles 获取 https 的数据
- 开源框架下载地址
- 注解开发--高级