![](https://img-blog.csdnimg.cn/c920d750854743d295966977022b7d7e.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android设备驱动开发
文章平均质量分 87
记录学习Android设备驱动开发的点点滴滴
阿迷创客
主要从事android TV、投影仪的开发,涉及内销TV、外销TV、LCD投影、DLP投影、DLP激光投影等产品,技术面涵盖ROM开发的各个方面,从board Bringup、驱动、JNI、framework以及app开发。熟悉mtk(mstar)、amlogic、rk、高通等芯片,目前主要负责全志、海奇等平台的技术支持、开发工作,期待诗和远方,但生活还是要脚踏实地……
展开
-
i2c总线及设备测试工具i2ctools:i2cdetect、i2cdump、i2cget、i2cset
- 在编写某I2C设备之前,可以使用开源的I2C测试工具,先对总线和设备的连通性做一个简单测试,或更进一步手动发送一些命令,进行设备的初始化、检验相关功能。- 本文即介绍i2ctools工具,它的源文件只有1个.c文件,但编译后有一组子工具。在全志的芯片平台上,基本都有携带,可以直接使用,例如H713以及本文的H618平台,掌握此工具后,可大幅提升I2C设备的开发和调试效率。原创 2024-02-25 01:38:02 · 2451 阅读 · 0 评论 -
基于Amlogic 安卓9.0, 驱动简说(五):基于GPIO、LED子系统的LED驱动
- 本章介绍LED子系统的使用。 使用LED子系统,可以轻松实现对LED,例如常见的闪烁和亮度控制功能。 简单起见,本章先使用GPIO实现,在不模拟PWM的情况下,只能实现点亮和灭灯的效果,重点是介绍GPIO、LED子系统的使用。原创 2023-01-05 01:55:14 · 1351 阅读 · 0 评论 -
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
本文介绍Platform平台驱动框架,使用此框架,将可以用上DTS设备树文件,实现设备的静态枚举,实现设备与驱动的分离。本文基于Amlogic T972 , Android 9.0, 内核版本 4.9.113。原创 2022-12-29 19:01:54 · 1013 阅读 · 0 评论 -
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单
在第1篇文章《驱动简说(一):字符设备驱动,手动创建设备》中,我们了解了基础的字符设备驱动的写法,但也注意到了它的缺点:设备号需要自己去找,自己创建(容易冲突);需要自己创建和驱动匹配的设备文件(否则应用层无设备可用)。在第2篇文章《驱动简说(二):字符设备驱动,自动创建设备》中,我们通过alloc自动分配设备号,以及主动注册class、device对象,解决了第1篇的两个问题。但是…… 我们还有更简单的方法,达到第2篇的目的,但不需要写第2篇的那么多代码!原创 2022-12-29 12:05:15 · 698 阅读 · 0 评论 -
基于Amlogic 安卓9.0, 驱动简说(二):字符设备驱动,自动创建设备
本文是“驱动简说”的第2篇,是本人的读书总结,对于大多数人来说,看看这些例子就已经够用!回顾前文的驱动,有如下两个缺点,本篇文章,就以经典例子,来解决这两个问题: 1.主设备号是手动创建的,而不是分配的; 2.设备文件还需要手动创建。原创 2022-12-28 22:48:50 · 737 阅读 · 0 评论 -
基于Amlogic 安卓9.0, 驱动简说(一):字符设备驱动,手动创建设备
本文提取书籍中,较为经典的例子。让驱动的学习,变得更加简单!目前市面上,很难找到一本讲得特别好的嵌入式驱动开发教程,尤其是适配Android 平台的。LDD3是一本翻译较好,写得较好的书,但其内容基于Linux kernel 2.6版本,接口和架构都较老了。国产书籍普遍较为片面,翻译的书籍则表述较差(机器翻译),于是乎,看完之后,想总结一下!本文基于Amlogic T972 , Android 9.0, 内核版本 4.9.113。原创 2022-12-28 16:49:30 · 1004 阅读 · 1 评论 -
不写一行代码(三):实现安卓基于i2c bus的Slaver设备驱动
本文是系列文章的第3篇,介绍如何利用内核中现有的i2c bus驱动,在最少的代码量上,做到对slaver设备的控制。基于现有的i2c bus驱动,我们可直接在应用层编写slaver设备的控制代码!如此,大大降低了设备驱动的开发难度。当然,工资还是得照样领!原创 2022-12-25 22:23:34 · 789 阅读 · 0 评论 -
不写一行代码(二):实现安卓基于PWM的LED设备驱动
在完成了基于GPIO的LED设备驱动的文章后,本文继续介绍基于PWM的LED设备驱动。同样的,站在巨人的肩膀上,不写一行代码……,但工资还是要领……原创 2022-12-25 00:32:03 · 1258 阅读 · 0 评论 -
不写一行代码(一):实现安卓基于GPIO的LED设备驱动
安卓设备驱动,本质上依旧还是Linux架构的驱动程序,基于Linux Kernel。在做安卓ROM开发的过程中,我们经常要控制设备的LED灯,许多情况下,我们直接就去写了一个LED的字符设备驱动,却不知,这类驱动,在kernel driver大神手下,早就给我们写了通用版本,但凡我们多看它一眼,就可以站在巨人的肩膀上,不写一行代码……,但工资还是要领……原创 2022-12-24 12:01:12 · 2514 阅读 · 2 评论 -
重温Linux内核:互斥和同步
对于临界资源,常用的就是自旋锁和互斥锁,区别是自旋锁不可打断(睡眠),而互斥锁可以。信号量一般用于实现内核中的同步机制。本文集合了自旋锁、读写锁、顺序锁、互斥锁、信号量、完成量、RCU等概念及例子,大体上,相关内容,看这篇应该够了。原创 2022-12-07 20:32:46 · 564 阅读 · 0 评论 -
Linux内核的基础设施:工作队列、等待队列
本文介绍Linux内核的睡眠机制,介绍了等待队列的用法,以简单的demo案例,介绍使用细节。大体上,通常,我们所开发的设备驱动程序,并不需要有自己的工作队列。如果我们只是偶尔需要向队列中提交任务,则内核已为我们提供了一个更简单、更有效的方法,就是使用内核提供的现成的工作队列!但因为它是和内核中其他任务共享的,所以我们不应该在里面执行一些需要sleep很久的工作。本文是读书笔记的实操记录。原创 2022-12-06 22:50:13 · 750 阅读 · 0 评论