Android驱动相关
文章平均质量分 72
记录常用驱动模块
sdkdlwk
做一位名副其实的工匠
合作,请私信!
展开
-
嵌入式中的数据初始化
整型、浮点型的变量可以在定义的同时进行初始化,一般初始化为 0.原创 2024-01-05 23:01:38 · 10824 阅读 · 0 评论 -
Android驱动并发与竞争
下面介绍Android Linux是一个多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源,就和共享单车一样。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源的并发访问。多个任务同时访问同一片内存区域,这些任务可能会相互覆盖这段内存中的数据,造成内存数据混乱。原创 2023-12-19 09:29:51 · 47167 阅读 · 0 评论 -
[SPRD]展讯平台 LCD(Mipi)移植步骤及问题归纳
步骤如下:1.移植对应的 lcd 驱动。2.设置u-boot\drivers\video\sprdfb\sprdfb_main.c中的背光为内置:void set_backlight(uint32_t value)函数中,添加white_led = 1;3. 在 kernel/drivers/video/backlight/sprd_backlight.c 的#if (defined(CONFIG_SPX15))前面。原创 2023-12-06 09:40:34 · 47223 阅读 · 0 评论 -
v4l2视频采集 参考
V4L2采集yuv视频花屏:Linux视频采集与编码(一)https://blog.csdn.net/zgyulongfei/article/details/7526249#终于搞定android驱动USB摄像头了!https://blog.csdn.net/sukhoi27smk/article/details/18269097安卓添加USB外置UVC摄像头https://www.cnblogs...原创 2018-05-05 10:04:45 · 16778 阅读 · 0 评论 -
Android 6.0 Healthd
healthd主要是读取电池节点的信息,传给BatteryService。或者在关机充电等使用。注意healthd中使用的是kernel的log,存在路径:system\core\healthdmain函数int main(int argc, char **argv) { int ch; int ret; klog_set_level(KLOG_LEVEL);...转载 2019-03-08 16:38:49 · 381 阅读 · 0 评论 -
Android 6.0 BatteryService分析
BatteryService.javaBatteryService构造函数只是读取资源值public BatteryService(Context context) { super(context); mContext = context; mHandler = new Handler(true /*async*/); ...转载 2019-03-08 16:40:01 · 288 阅读 · 0 评论 -
RK808去掉低于3.5V关机
拿到的源码RK808默认低于3.5V关机,修改为低于3.0V中断。那么看一下规格书:#define VB_LO_ACT BIT(4)#define VB_LO_SEL_3500MV (7 << 0)#define VB_LO_SEL_3000MV (2 << 0)修改寄存器初始化配置:static const struct rk808_reg_data rk808_pre_init_reg[] = { { RK808_BUCK...原创 2021-01-14 11:13:43 · 11582 阅读 · 1 评论 -
高通lcd调试总结
来公司上班现在已经整整一个月了,蔽人不才,能力有限,学习进度缓慢,不过也是有一点点的收获与心得,在这里写出来与大家分享,养成良好的记录习惯也免得后忘记。 不啰嗦了,开入正题。来公司一个月左右的时间,主要接触了高通android4.0和android2.3的LCD驱动,当然在bootloader下LCD的驱动我也调试的。 (1) kernel 先来说一下kerne转载 2017-07-13 16:06:33 · 2160 阅读 · 0 评论 -
RTL8723BU最新驱动代码
GitHub - SonelSA/rtl8723bu_realtek at v5.8.4原创 2021-12-24 15:30:58 · 669 阅读 · 0 评论 -
设备树详解
设备树详解在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device、i2c_board_info等)被大量取消,取而代之的是设备树,其目录位于arch/arm/boot/dts1.设备树的组成1个dts文件+n个dtsi文件,它们编译而成的dtb文件就是真正的设备树soc厂商会把s转载 2017-07-26 09:47:20 · 1337 阅读 · 0 评论 -
基于i2c子系统的驱动分析-设备树
基于i2c子系统的驱动分析和i2c有关的代码都在源码drivers/i2c目录下。内核提供了两种i2c的实现方法:第一种叫i2c_dev,对应drivers/i2c/i2c-dev.c,这种方法仅仅封装了soc的i2c控制器操作,并向应用层提供操作接口。其本质是为应用层提供了一个库,驱动功能由应用层实现,不是主流的做法第二种是驱动层实现所有驱动功能,是比较主流的做法第二种可以认为是转载 2017-07-26 09:35:07 · 2780 阅读 · 2 评论 -
resource_tool and dtc 工具使用解包rk resource.img 和rk-kernel.dtb 文件
第一步:在目录u-boot/tools/resource_tool/可以找到resource_tool工具执行 ./resource_tool --verbose --unpack --image=resource.img解包生成out目录:三个文件logo.bmp logo_kernel.bmp rk-kernel.dtb上面步骤中如果out目录不能访问,可以先使用 mkdir out 创建该out 目录,之后 再执行上面的命令,解压resource.img 即可。第二步:..原创 2021-02-19 13:39:48 · 5052 阅读 · 4 评论 -
使用getevent监听Android输入设备文件
尊重原创转载请注明:From AigeStudio(http://blog.csdn.net/aigestudio)Power by Aige 侵权必究!炮兵镇楼上一节Android事件分发完全解析之为什么是她中我们简略地分析了事件分发机制的由来,这里要说明一点,Android(或者说任何的驱动系统)都包含大量不同类型的事件,比如按键啦、轨迹球啦、鼠标啦、触摸啦、红外线啦等等等,这里为了简转载 2017-05-03 15:54:27 · 5462 阅读 · 0 评论 -
GM8775C调试记录
GM8775C调试可以参考下面两个[RK3566] 通过GM8775 点LVDS屏调试记录[RK3566] 通过GM8775 点LVDS屏调试记录_qq1226176787的博客-CSDN博客GM8775C MIPI转LVDS调试心得GM8775C MIPI转LVDS调试心得_小林同学的博客-CSDN博客...原创 2021-10-27 17:56:34 · 1167 阅读 · 0 评论 -
android 驱动之 camera 驱动 GT2005
关键词:Android camera CMM 模组 camera参数 GT2005 摄像头常见问题平台信息:内核:linux系统:android平台:S5PV310(samsung exynos 4210) 作者:xubin341719(欢迎转载,请注明作者)android camera(一):camera模组CMM介绍android camera(转载 2017-05-04 11:25:21 · 4376 阅读 · 0 评论 -
android_porting步骤
1. 认真阅读IC的spec,我们需要从中读出一些有用的信息。 1) IC正确的(或者可以说精确的)上电时序,这其中包括,Host端控制IC时存在几个pin(regulator, GPIO等),这几个pin严格的上点时序是怎么样的。 2)IC上电时,是否需要发送一定的初始化序列,来保证IC的正常工作。 3)IC的正常工作时的工作原理及工作模式等。2. Driver编写:...原创 2020-01-31 22:13:38 · 18928 阅读 · 0 评论 -
vold挂载管理
看了很长时间Vold存储模块的相关知识,也深入的研究一段时间的Android源码,打算把自己看过的经验之贴、参考资料和自己的一些见解,以帖子的形式发出来,供有兴趣的同仁们参考,有不对的地方请指正,我们相互交流。1.1 vold的原理与机制分析1.1.1 Vold 架构从上图中可知:· Vold中的NetlinkManager模块接收来自Linux内核的ueve转载 2017-08-14 10:58:10 · 747 阅读 · 0 评论 -
Android4.0Sd卡移植之使用vold自动挂载sd卡
在cap631平台上移植android4.0,发现内核驱动没有任何问题,能够读写,当总不能挂载。后来发现是因为自动挂载需要vold的支持。vold程序负责检查内核的 sysfs 文件系统,发现有SD卡插入后,自动挂载。 在文件系统目录 /system/etc/ 下有一个vold.fstab 文件,该文件是系统与用户硬件平台的交互接口,用户根据自己的平台来配置这个文件,里面内容比较简单,只需要转载 2017-08-14 11:00:50 · 599 阅读 · 0 评论 -
android vold初始化及sd卡挂载流程
1 总体介绍 在Android 中,当SD卡插入系统之后,系统会自动挂载。Vold 就是负责挂载SD卡的,vold 的全称是volume daemon。实际上是负责完成系统的CDROM,USB 大容量存储,MMC 卡等扩展存储的挂载任务自动完成的守护进程。它提供的主要特点是支持这些存储外设的热插拔。1.1总体流程图Ø 绿色箭头:表示插入SD卡后转载 2017-08-14 11:23:14 · 6204 阅读 · 0 评论 -
i2c 子系统
Linux系统核心层的东西基本都是xx-core。一 主要数据结构[cpp] view plain copy struct i2c_msg { __u16 addr; /* slave address */ __u16 flags; #define I2C_M_TEN 0x0010 /* this is转载 2017-05-03 11:18:12 · 516 阅读 · 0 评论 -
如何调整Linux内核启动中的驱动初始化顺序
如何调整Linux内核启动中的驱动初始化顺序Linux内核为不同驱动的加载顺序对应不同的优先级,定义了一些宏:include\linux\init.h#define pure_initcall(fn) __define_initcall("0",fn,1)#define core_initcall(fn) __define_initcall("1",fn,1)#define c原创 2017-06-12 10:09:31 · 5231 阅读 · 0 评论 -
如何调整Linux内核启动中的驱动初始化顺序
如何调整Linux内核启动中的驱动初始化顺序Linux内核为不同驱动的加载顺序对应不同的优先级,定义了一些宏:include\linux\init.h#define pure_initcall(fn) __define_initcall("0",fn,1)#define core_initcall(fn) __define_initcall("1",fn,1)#de原创 2017-06-12 10:06:27 · 4436 阅读 · 0 评论 -
关于引入platfrom总线
platform 是一种虚拟的总线,与i2c、spi之类不同,是kernel定义的一种规范driver一种总线,适合不属于现有总线的设备,比如直接操作寄存器的driver例如 GPIO, UART, LCD, CAMERA等等 为什么引入platform总线?在嵌入式系统中有这么一类设备,他们直接和CPU相连接,CPU可以通过直接寻址访问他们,并可以直接对寄存器进行原创 2017-03-22 17:46:58 · 493 阅读 · 0 评论 -
一个简单的linux设备驱动和应用测试代码
1 驱动源文件2 Makefile3 应用测试#include #include #include #include #include #include #include #include #include #include #include #define sddev_MAJOR 200static unsigned cha原创 2017-03-20 22:39:14 · 607 阅读 · 0 评论 -
linux设备驱动之:1 总线、设备和驱动
linux设备驱动之:1 总线、设备和驱动 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这几天一直在看设备模型,内核的代码看得我越来越沮丧,特别是kboject、kset和ktype之间的关系。但是,设备模型的归纳我打算先跳过这几个重要结构体,先介绍总线、转载 2017-03-26 18:22:07 · 371 阅读 · 0 评论 -
linux注册字符设备和卸载字符设备函数
注册一个字符设备的方法是使用:int register_chrdev(unsigned int major, const char *name, struct file_operations *fops);这里, major 是感兴趣的主编号, name 是驱动的名子(出现在 /proc/devices), fops 是缺省的file_operations 结构. 一个对原创 2017-03-22 19:19:47 · 979 阅读 · 0 评论 -
Linux内核:poll机制
转载出处:http://blog.csdn.net/jansonzhe/article/details/48576025在编写驱动程序的过程当中我们可以使用poll机制来非阻塞的打开我们的设备文件,我们知道,在之前我们编写CC1100的驱动程序以及倒车雷达的驱动程序的时候,在read函数中都有用到过wait_event_interruptible_timeout这个函数,这个函数的主要作用转载 2017-03-24 19:47:53 · 342 阅读 · 0 评论 -
基于platform总线的mini2440的led设备驱动例子
platform模型驱动编程,需要实现platform_device(设备)与platform_driver(驱动)在platform(虚拟总线)上的注册、匹配,相互绑定,然后再做为一个普通的字符设备进行相应的应用,总之如果编写的是基于字符设备的platform驱动,在遵循并实现platform总线上驱动与设备的特定接口的情况下,最核心的还是字符设备的核心结构:cdev、file_operatio转载 2017-03-26 22:32:52 · 278 阅读 · 0 评论 -
有关 等待队列和wait_event_interruptible() 和 wake_up()
linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait_event, wait_event_interruptible 唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要把条件变原创 2017-04-10 13:42:15 · 673 阅读 · 0 评论 -
Linux进程状态解析 之 R、S、D、T、Z、X (主要有三个状态)
转载出处:http://blog.csdn.net/shenwansangz/article/details/51981459Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。Linux进程状态:R (TASK_RUNNING),可执行状态。 只有在该状态的进程才可能在CPU上原创 2017-03-25 17:20:48 · 78248 阅读 · 3 评论 -
Linux进程与线程的区别
转载出处:http://blog.csdn.net/laviolette/article/details/51506953进程与线程的区别,早已经成为了经典问题。自线程概念诞生起,关于这个问题的讨论就没有停止过。无论是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了。一般程序员而言,搞清楚二者的概念,在工作实际中去运用成为了焦点。而资深工程师则在考虑系统层面如何实现转载 2017-04-16 19:04:27 · 326 阅读 · 0 评论 -
Linux下用文件IO的方式操作GPIO(/sys/class/gpio)简单易操作
通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入。文件IO方式操作GPIO,使用到了4个函数open、close、read、write。 首转载 2017-05-05 19:17:26 · 853 阅读 · 0 评论 -
linux字符设备驱动之设备节点的自动创建
设备节点的自动创建在写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个原创 2017-03-23 13:39:49 · 440 阅读 · 0 评论 -
linux设备驱动之i2c i2c_master_send
对于写I2C寄存器,我们需要做的就是给 i2c_master_send 函数传入两个字节的数据即可,第一个字节为寄存器的地址,第二个字节为要写入寄存器的数据。示例如下:static int xxxx_i2c_write( struct i2c_client* client,uint8_t reg,uint8_t data) { unsigned char buffe原创 2017-04-06 14:47:55 · 7443 阅读 · 0 评论 -
Linux驱动设备中的并发控制
一、基本概念二、中断屏蔽三、原子操作四、自旋锁五、信号量六、互斥体 七、自旋锁与信号量的比较 Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态,即使是经验丰富的驱动工程师也常常设计出包含并转载 2017-03-24 19:10:46 · 302 阅读 · 0 评论 -
对linux内核中jiffies、Hz的理解
jiffies在内核中是一个全局变量,它用来统计系统启动以来系统中产生的总节拍数,这个变量定义在include/Linux/jiffies.h中,定义形式如下。unsigned long volatile jiffies;想要理解jiffies的含义,我们需要首先理解时钟 节拍率 节拍的概念。一、时钟时钟应用于处理器的定时信号,它使得处理器在时钟中运行,依靠信号时钟,处理器便知转载 2017-05-04 09:41:22 · 2235 阅读 · 0 评论 -
编写linux入门驱动程序的 Makefile文件格式
ifneq ($(KERNELRELEASE),) obj-m:=xxxxx.oelse KERNELDIR:=/lib/modules/$(shell uname -r)/build PWD:=$(shell pwd)default: make -C $(KERNELDIR) M=$(PWD) modulesclean: r原创 2017-03-19 22:22:09 · 356 阅读 · 0 评论 -
linux驱动实例之74HC595
转载出处:http://www.cnblogs.com/Charles-Zhang-Blog/archive/2013/12/02/3454382.html第一步:my74hc595.c#include //模块所需的大量符号和函数定义#include //指定初始化和清除函数#include //文件系统相关的函数和头文件#include //cdev结构的头文件转载 2017-03-24 10:32:08 · 1570 阅读 · 0 评论 -
详细介绍线程同步
我们可以在计算机上运行各种计算机软件程序。每一个运行的程序可能包括多个独立运行的线程(Thread)。 线程(Thread)是一份独立运行的程序,有自己专用的运行栈。线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。 当多个线程同时读写同一份共享资源的时候,可能会引起冲突。这时候,我们需要引入线程“同步”机制,即各位线程之间要有个先来后到,不能一窝蜂挤上去抢作一团。 同步这个词是转载 2017-04-25 17:15:23 · 350 阅读 · 0 评论 -
从linux usb bus节点来认识usb linux usb认识
首先从linux dmesg来认识usb:<6>[19.610046]msm_hsic_hostmsm_hsic_host:QualcommEHCIHostControllerusingHSIC<6>[19.620391]msm_hsic_hostmsm_hsic_host:newUSBbusregistered,assign...原创 2019-09-21 15:01:50 · 1631 阅读 · 0 评论