驱动开发
文章平均质量分 64
包括驱动框架,部分驱动源码
Water Water Water
别看我
展开
-
总线与接口(内部总线、系统总线、外部总线)
这种分类方式是根据离芯片远近等级分类的。内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连。总线10多年前由公司推出,是近年来在微电子通信控制领域广泛采用的一种新型总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个总线器件同时接到总线上,通过地址来识别通信对象。串行外围设备接口总线技术是公司推出的一种同步串行接口。公司生产的绝大多数(微控制器)都配有硬件接口,如68系列。总线是一种三线同步总线,因其硬件功能很强,所以原创 2022-06-01 11:40:29 · 7056 阅读 · 0 评论 -
usb phy
1、charge/* Default current range by charger type. */ //默认电流#define DEFAULT_SDP_CUR_MIN 2 //SDP 2.0#define DEFAULT_SDP_CUR_MAX 500#define DEFAULT_SDP_CUR_MIN_SS 150 //SDP 3.0#define DEFAULT_SDP_CUR_MAX_SS 900#define DEFAULT_DCP_CUR_MIN 500原创 2022-05-06 19:14:16 · 3071 阅读 · 0 评论 -
ADB调试总结
1.ADB介绍ADB(Android Debug Bridge)安卓的调试桥,debug工具。借助adb工具可以管理设备或手机模拟器的工作状态,还可以进行很多手机操作,如安装软件,运行shell命令等。注意:adb shell进去之后,debug版本终端是以#开头,而USER版本终端是以$开头。1、adb其实就是个socket通信,数据发过来发过去。2、adb每次都是发送的一个数据包,数据结构是struct apacket,其中包含msg消息部分,及data数据部分。3、从PC跟device通信原创 2021-03-05 17:46:28 · 2400 阅读 · 1 评论 -
adb devices offline
解决办法11、adb kill-server2、adb start-server3、adb remount执行这3个命令,然后重新键入adb shell应该就可以了解决办法2用adb version查看版本后发现是1.0.29——较低的版本,现在的设备已经不支持了。后来我把adb的版本更新到了1.0.36,成功解决了问题。解决办法3拔插USB线。...原创 2021-02-24 17:02:12 · 190 阅读 · 0 评论 -
C语言常见语法
1. constconst是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。被const修饰的变量称为常类型变量。const的主要作用:(1)可以定义const常量,具有不可变性。例如:const int Max=100; Max++会产生错误;2. static2.1 static修饰全局变量在全局变量前加static,全局变量就被定义成为一个全局静态变量。特点如下:1)存储区:静态存储区没变(静态存储区在整个程序运行期间都存在);原创 2021-02-20 16:27:50 · 531 阅读 · 0 评论 -
结构体语法
1. 使用语法定义结构体指针,访问成员时就用->定义结构体变量,访问成员时就用.例如:struct A { int a; char b;};struct A q; 访问成员就用:q.a;struct A *p; 访问成员就用:p->a;2. 内存一般情况下用“.”,只需要声明一个结构体。格式是,结构体类型名+结构体名。然后用结构体名加“.”加域名就可以引用域了。因为自动分配了结构体的内存。如同 int a;一样。而用“->”,则要声明一个结构体的指针,原创 2021-02-20 16:03:29 · 719 阅读 · 0 评论 -
Linux 虚拟文件系统
class_create 和 device_create内核同时提供了class_create()函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create()函数来在/dev目录下创建相应的设备节点。这样,加载模块的时候,用户空间中的udev会自动响应 device_create()函数,去/sysfs下寻找对应的类从而创建设备节点。此外,利用device_create_file函数可以在/sys/class/下创建对应的属性文件,从而通过对该文件的读原创 2021-02-07 14:41:17 · 3809 阅读 · 1 评论 -
I2C适配器驱动及设备驱动代码详解
实例Accelerometer Sensors: bma2x21.简述根据i2C驱动的开发流程去分析i2c从机设备bma2x2(加速度sensors)的驱动;以及分析其挂载的控制器(适配器)i2c-msm-v2的驱动。2.I2C总线驱动i2c-msm-v22.1 定义总线驱动:platform_driverstatic struct platform_driver i2c_msm_driver = { .probe = i2c_msm_probe, .remove = i2c_原创 2021-02-07 10:19:11 · 1962 阅读 · 0 评论 -
驱动架构 & platform平台总线驱动模型
1. platform驱动模型 platform总线是kernel 2.6中引入的一种虚拟总线,主要用来管理CPU的片上资源,具有良好的移植性。相对于USB、PCI、I2C等物理总线来说,平台总线是Linux设备驱动模型为了保持设备驱动的统一性而虚拟出来的总线。 usb、i2c、pci等设备都是直接挂在相应的总线下与cpu进行数据交互的,但在嵌入式系统中,并非所有的原创 2021-02-04 16:10:35 · 565 阅读 · 0 评论 -
通信方式总结及I2C驱动详解
1.常见通信方式2.I2C总线2.1 I2C总线硬件连接2.2 I2C软件架构2.3 I2C子系统实现流程(1)i2c adapter创建i2c client;(2)i2c adapter中的i2c client与i2c driver通过i2c core完成注册匹配;(3)i2c driver传递上层应用的数据至i2c client;(4)i2c client通过i2c adapter找到对应的i2c algorithm,并传送数据;(5)i2c控制器产生SCL和SDA。3. I2原创 2021-02-03 18:15:21 · 756 阅读 · 0 评论 -
kernel log调试方法
可以打开全部log,但是对于android多个文件来说log太多导致系统分析不方便,为了便于打开需要模块的log,在需要打开log的文件中对define进行重新定义.#ifdef pr_debug#undef pr_debug#define pr_debug(fmt, ...) \ printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)#else#define pr_debug(fmt, ...) \ printk(KERN_DEBUG pr_fmt(fmt原创 2021-01-23 15:03:26 · 1249 阅读 · 0 评论 -
单编内核驱动模块
1.单编option.komake -C /lib/modules/3.10.44/build M=/home/neoway/kernel/linux-3.10.44/drivers/usb/serial obj-m=option.o2.拷贝替换option.kocp /home/neoway/kernel/linux-3.10.44/drivers/usb/serial/option.ko /lib/modules/3.10.44/kernel/drivers/usb/serial3.加载op原创 2021-01-21 11:36:37 · 273 阅读 · 0 评论 -
makefile模板
编译驱动makefile# -C $(KDIR) 指明跳转到内核源码目录下读取那里的Makefile# M=$(PWD) 表明然后返回到当前目录继续读入、执行当前的Makefile#要生成的模块名obj-m := GobiNet.o#生成这个模块所需要的目标文件GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o MPQMUX.oKDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell原创 2021-01-20 16:42:55 · 249 阅读 · 0 评论