嵌入式驱动开发
文章平均质量分 53
KELLY_F2018
这个作者很懒,什么都没留下…
展开
-
构建一个简单的bus驱动框架
首先我们要了解bus驱动框架是由三部分组成的:Device(硬件相关),Bus(中间媒介),Driver(软件)为了实现高内聚,低耦合,解决重复代码过多,对整个驱动进行了分层。硬件相关的部分被抽象成Device部分,纯软件部分抽象成Driver部分,为了将这两部分匹配起来就创建了bus这一中间媒介。接下来搭建一个基础的框架(一)Bus的构建1 先来看看bus中的bus_type...原创 2018-07-28 22:33:26 · 643 阅读 · 0 评论 -
一步一步教你构建一个MPU6050(I2C类)驱动(一)
1 i2c基本协议和时序i2c基础的知识这里就不提了,直接从时序开始,直接来看看i2c的波形2 i2c子系统软件框架先来看看i2c总线的分层思想:在分层图中我们可以看到,driver和device在核心层中分别成为了2条链表,核心层会按一定的规则匹配两条链表中的元素。查看内核源码 i2c-core.c ,找到了匹配的函数如下:static int i2c_de...原创 2018-07-29 22:32:22 · 2937 阅读 · 0 评论 -
字符设备驱动初始化和销毁部分
每个字符设备的驱动都要包含对这个字符设备的初始化,而这个初始化其实是一个非常固定的步骤,接着我们就来看看这个初始化怎么写。1 申请注册一个设备(char 字符设备)static inline int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops)...原创 2018-08-03 22:03:47 · 448 阅读 · 0 评论 -
关于i2c驱动配对时匹配的数据结构源码追踪
先来看看i2c驱动的数据结构struct i2c_driver { unsigned int class; /* Notifies the driver that a new bus has appeared. You should avoid * using this, it will be removed in a near future. */ int (*attach...原创 2018-07-30 21:26:52 · 316 阅读 · 0 评论 -
i2c驱动注册与匹配设备的源码追踪与分析
先是我们都熟悉的一条语句int i2c_register_driver(struct module *owner, struct i2c_driver *driver);进入到 i2c-core.h 文件中得到 i2c_register_driver 函数的完整内容int i2c_register_driver(struct module *owner, struct i2c_dr...原创 2018-07-31 21:36:24 · 294 阅读 · 0 评论 -
怎么写一个i2c设备的设备树
在上一次的博客中我们在设备树文件中写入了Mpu6050的设备信息,那么这个设备是信息是怎样来的呢,现在先来补充一下怎样从数据手册得到我们需要的数据。首先看看内核源码中已经写好的别的i2c设备树是怎么写,了解我们需要找的数据: i2c@13860000 { #address-cells = <1>; #size-cells = &...原创 2018-08-01 21:46:20 · 6484 阅读 · 0 评论 -
一步一步教你构建一个MPU6050(I2C类)驱动(二)
今天我们先来把驱动的框架搭好首先是i2c_driver的数据结构struct i2c_driver { unsigned int class; /* Notifies the driver that a new bus has appeared. You should avoid * using this, it will be removed in a near future...原创 2018-08-01 22:25:46 · 1328 阅读 · 0 评论 -
一步一步教你构建一个MPU6050(I2C类)驱动(三)
首先我们要控制MPU6050,实质上就是读写它里面寄存器的值。i2c的数据通信帧的组成在前面已经讲过了这里就不在展开,我们先来看看内核中已经帮我们封装好的,构建一个数据帧的API:/** * i2c_master_send - issue a single I2C message in master transmit mode * @client: Handle to slave dev...原创 2018-08-02 22:38:43 · 1467 阅读 · 0 评论