
Android驱动相关
文章平均质量分 75
记录常用驱动模块
sdkdlwk
Android系统driver、hal、framework、app demo等定制、调试、合作,请私信!
展开
-
关于 Android LocalSocket、LocalServerSocket
如果在另外一个app中已经创建了这个 "hello_world" 的 LocalServerSocket, 这里再创建会抛异常:java.io.IOException: Address already in use。原创 2024-11-26 12:52:22 · 1128 阅读 · 0 评论 -
Android ROM开发 编译阶段设置预置文件或者文件夹的权限
【代码】Android ROM开发 编译阶段设置预置文件或者文件夹的权限。原创 2024-11-21 19:59:07 · 566 阅读 · 0 评论 -
音频数据的处理
在研究android音频架,音频驱动等的时候,就有涉及到dump音频数据debug,重采样,downmixer,位深转换的处理,那这些的操作原理以及相关算法是如何实现的呢?带着这个问题,开始探讨音频数据的如下几个问题音频数据的特征,与存储等基本概念音频数据的dump方法重采样downmix存储位深转换参考文章列表。原创 2024-11-12 15:04:44 · 956 阅读 · 0 评论 -
xxd命令详解
xxd 是一个 Unix/Linux 系统中的命令行工具,用于生成二进制文件的十六进制表示(hex dump)以及将十六进制表示转换回二进制文件。可以是正数(从文件开头开始偏移)或负数(从文件末尾开始偏移)。生成一个纯十六进制数字的连续输出,不显示行号和 ASCII 部分。如果不指定,xxd 将输出到标准输出。以小端格式显示输出(适用于 16 位和 32 位的单位)。生成一个包含十六进制数据的 C 语言源代码文件。生成 file.bin 文件的十六进制表示。以二进制格式(而非十六进制格式)显示输出。原创 2024-10-23 11:34:22 · 823 阅读 · 0 评论 -
MAC地址格式详解
在数据链路层,数据帧通常依赖于MAC地址来进行数据交换,它如同公网IP地址一样要求具有全球唯一性,这样才可以识别每一台主机。那么MAC地址如何做到这点?它的格式又是什么?MAC地址,英文全称,直译为,它通常被固化在每个以太网网卡(NIC,Network Interface Card)。MAC(硬件)地址长48位(6字节),采用十六进制格式,下图说明了48位的MAC地址及其组成部分。示例: 00-01-6C-06-A6-29 或 00:01:6C:06:A6:29。原创 2024-08-28 10:13:44 · 5656 阅读 · 0 评论 -
【MTK FlashTool】ERROR : STATUS_ERR (-1073676287) , MSP ERROE CODE : 0x00.
KERNEL=="ttyACM*", MODE="0666"是给flash_tool运行过程中生成的设备文件增加权限,这样不需要管理员权限即可运行。注意:idVendor idProduct 通过命令lsusb可以获得。备注:idVendor 与 idProduct的通过lsusb命令查看。在使用时刚开始使用便直接报错。第三步:重新加载驱动。原创 2024-08-19 09:18:40 · 872 阅读 · 0 评论 -
android 11添加property遇到的selinux问题
dac_override 是一种典型的neverallow权限,要添加dac_override权限必须是coredomain才能添加,如果不是coredomain是没有办法添加这种neverallow权限的,也就是说在device/qcom/sepolicy/目录下添加的文件是不可能有dac_override权限的,如何添加coredomain修改如问题1所示。/system/sepolicy/private/目录下添加addnew.te 文件。:xxx.ignore.cil使用。原创 2024-08-18 23:46:40 · 688 阅读 · 0 评论 -
嵌入式中的数据初始化
整型、浮点型的变量可以在定义的同时进行初始化,一般初始化为 0.原创 2024-01-05 23:01:38 · 11189 阅读 · 0 评论 -
Android驱动并发与竞争
下面介绍Android Linux是一个多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源,就和共享单车一样。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源的并发访问。多个任务同时访问同一片内存区域,这些任务可能会相互覆盖这段内存中的数据,造成内存数据混乱。原创 2023-12-19 09:29:51 · 47213 阅读 · 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 · 47653 阅读 · 0 评论 -
v4l2视频采集 参考
V4L2采集yuv视频花屏:Linux视频采集与编码(一)https://blog.youkuaiyun.com/zgyulongfei/article/details/7526249#终于搞定android驱动USB摄像头了!https://blog.youkuaiyun.com/sukhoi27smk/article/details/18269097安卓添加USB外置UVC摄像头https://www.cnblogs...原创 2018-05-05 10:04:45 · 16806 阅读 · 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 · 428 阅读 · 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 · 332 阅读 · 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 · 11661 阅读 · 1 评论 -
高通lcd调试总结
来公司上班现在已经整整一个月了,蔽人不才,能力有限,学习进度缓慢,不过也是有一点点的收获与心得,在这里写出来与大家分享,养成良好的记录习惯也免得后忘记。 不啰嗦了,开入正题。来公司一个月左右的时间,主要接触了高通android4.0和android2.3的LCD驱动,当然在bootloader下LCD的驱动我也调试的。 (1) kernel 先来说一下kerne转载 2017-07-13 16:06:33 · 2296 阅读 · 0 评论 -
RTL8723BU最新驱动代码
GitHub - SonelSA/rtl8723bu_realtek at v5.8.4原创 2021-12-24 15:30:58 · 822 阅读 · 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 · 1416 阅读 · 0 评论 -
基于i2c子系统的驱动分析-设备树
基于i2c子系统的驱动分析和i2c有关的代码都在源码drivers/i2c目录下。内核提供了两种i2c的实现方法:第一种叫i2c_dev,对应drivers/i2c/i2c-dev.c,这种方法仅仅封装了soc的i2c控制器操作,并向应用层提供操作接口。其本质是为应用层提供了一个库,驱动功能由应用层实现,不是主流的做法第二种是驱动层实现所有驱动功能,是比较主流的做法第二种可以认为是转载 2017-07-26 09:35:07 · 2927 阅读 · 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 · 5727 阅读 · 4 评论 -
使用getevent监听Android输入设备文件
尊重原创转载请注明:From AigeStudio(http://blog.youkuaiyun.com/aigestudio)Power by Aige 侵权必究!炮兵镇楼上一节Android事件分发完全解析之为什么是她中我们简略地分析了事件分发机制的由来,这里要说明一点,Android(或者说任何的驱动系统)都包含大量不同类型的事件,比如按键啦、轨迹球啦、鼠标啦、触摸啦、红外线啦等等等,这里为了简转载 2017-05-03 15:54:27 · 5594 阅读 · 0 评论 -
GM8775C调试记录
GM8775C调试可以参考下面两个[RK3566] 通过GM8775 点LVDS屏调试记录[RK3566] 通过GM8775 点LVDS屏调试记录_qq1226176787的博客-优快云博客GM8775C MIPI转LVDS调试心得GM8775C MIPI转LVDS调试心得_小林同学的博客-优快云博客...原创 2021-10-27 17:56:34 · 1433 阅读 · 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 · 4407 阅读 · 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 · 19000 阅读 · 0 评论 -
vold挂载管理
看了很长时间Vold存储模块的相关知识,也深入的研究一段时间的Android源码,打算把自己看过的经验之贴、参考资料和自己的一些见解,以帖子的形式发出来,供有兴趣的同仁们参考,有不对的地方请指正,我们相互交流。1.1 vold的原理与机制分析1.1.1 Vold 架构从上图中可知:· Vold中的NetlinkManager模块接收来自Linux内核的ueve转载 2017-08-14 10:58:10 · 824 阅读 · 0 评论 -
Android4.0Sd卡移植之使用vold自动挂载sd卡
在cap631平台上移植android4.0,发现内核驱动没有任何问题,能够读写,当总不能挂载。后来发现是因为自动挂载需要vold的支持。vold程序负责检查内核的 sysfs 文件系统,发现有SD卡插入后,自动挂载。 在文件系统目录 /system/etc/ 下有一个vold.fstab 文件,该文件是系统与用户硬件平台的交互接口,用户根据自己的平台来配置这个文件,里面内容比较简单,只需要转载 2017-08-14 11:00:50 · 634 阅读 · 0 评论 -
android vold初始化及sd卡挂载流程
1 总体介绍 在Android 中,当SD卡插入系统之后,系统会自动挂载。Vold 就是负责挂载SD卡的,vold 的全称是volume daemon。实际上是负责完成系统的CDROM,USB 大容量存储,MMC 卡等扩展存储的挂载任务自动完成的守护进程。它提供的主要特点是支持这些存储外设的热插拔。1.1总体流程图Ø 绿色箭头:表示插入SD卡后转载 2017-08-14 11:23:14 · 6461 阅读 · 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 · 556 阅读 · 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 · 5300 阅读 · 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 · 4471 阅读 · 0 评论 -
关于引入platfrom总线
platform 是一种虚拟的总线,与i2c、spi之类不同,是kernel定义的一种规范driver一种总线,适合不属于现有总线的设备,比如直接操作寄存器的driver例如 GPIO, UART, LCD, CAMERA等等 为什么引入platform总线?在嵌入式系统中有这么一类设备,他们直接和CPU相连接,CPU可以通过直接寻址访问他们,并可以直接对寄存器进行原创 2017-03-22 17:46:58 · 524 阅读 · 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 · 1221 阅读 · 0 评论 -
linux设备驱动之:1 总线、设备和驱动
linux设备驱动之:1 总线、设备和驱动 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这几天一直在看设备模型,内核的代码看得我越来越沮丧,特别是kboject、kset和ktype之间的关系。但是,设备模型的归纳我打算先跳过这几个重要结构体,先介绍总线、转载 2017-03-26 18:22:07 · 401 阅读 · 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 · 1025 阅读 · 0 评论 -
Linux内核:poll机制
转载出处:http://blog.youkuaiyun.com/jansonzhe/article/details/48576025在编写驱动程序的过程当中我们可以使用poll机制来非阻塞的打开我们的设备文件,我们知道,在之前我们编写CC1100的驱动程序以及倒车雷达的驱动程序的时候,在read函数中都有用到过wait_event_interruptible_timeout这个函数,这个函数的主要作用转载 2017-03-24 19:47:53 · 379 阅读 · 0 评论 -
基于platform总线的mini2440的led设备驱动例子
platform模型驱动编程,需要实现platform_device(设备)与platform_driver(驱动)在platform(虚拟总线)上的注册、匹配,相互绑定,然后再做为一个普通的字符设备进行相应的应用,总之如果编写的是基于字符设备的platform驱动,在遵循并实现platform总线上驱动与设备的特定接口的情况下,最核心的还是字符设备的核心结构:cdev、file_operatio转载 2017-03-26 22:32:52 · 305 阅读 · 0 评论 -
有关 等待队列和wait_event_interruptible() 和 wake_up()
linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait_event, wait_event_interruptible 唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要把条件变原创 2017-04-10 13:42:15 · 740 阅读 · 0 评论 -
Linux进程状态解析 之 R、S、D、T、Z、X (主要有三个状态)
转载出处:http://blog.youkuaiyun.com/shenwansangz/article/details/51981459Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。Linux进程状态:R (TASK_RUNNING),可执行状态。 只有在该状态的进程才可能在CPU上原创 2017-03-25 17:20:48 · 83306 阅读 · 3 评论 -
Linux进程与线程的区别
转载出处:http://blog.youkuaiyun.com/laviolette/article/details/51506953进程与线程的区别,早已经成为了经典问题。自线程概念诞生起,关于这个问题的讨论就没有停止过。无论是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了。一般程序员而言,搞清楚二者的概念,在工作实际中去运用成为了焦点。而资深工程师则在考虑系统层面如何实现转载 2017-04-16 19:04:27 · 351 阅读 · 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 · 886 阅读 · 0 评论 -
linux字符设备驱动之设备节点的自动创建
设备节点的自动创建在写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个原创 2017-03-23 13:39:49 · 471 阅读 · 0 评论