android驱动开发
我前年买了个表
主要从事android驱动、JNI、hal层开发。有什么嵌入式上的问题欢迎咨询我。
展开
-
驱动开发笔记--hrtimer高精度定时器
参考linux下jiffies定时器和hrtimer高精度定时器背景jiffies定时器,HZ=100,精度只能达到10ms。hrtimer高精度定时器,可做到ns级,此处做到毫秒如下例:历程#include <linux/dma-mapping.h> //DO-->hrtimer包含以下三个头文件 /* DMA APIs  原创 2020-05-15 17:19:32 · 575 阅读 · 0 评论 -
驱动开发笔记--platform_set_drvdata & platform_get_drvdata分析
概述在用到Linux设备驱动的platform框架时,常常会遇到两个函数platform_get_drvdata和platform_set_drvdata。通常,会在驱动的probe函数中获取device的相关信息,然后使用platform_set_drvdata进行保存局部变量。在其他函数中要用到时(比如remove),通过platform_get_drvdata来获取。函数定义include\linux\platform_device.h:static inline void platfo原创 2020-05-15 17:18:49 · 1710 阅读 · 0 评论 -
init进程详细分析--基于android 10
init进程详细分析概述android设备上电,引导程序引导进入boot(通常是uboot),加载initramfs、kernel镜像,启动kernel后,进入用户态程序。第一个用户空间程序是init,PID固定是1.在android系统上,init的代码位于/system/core/init下,基本功能有:管理设备解析并处理启动脚本init.rc实时维护这个init.rc中的服务...原创 2020-03-16 14:20:02 · 5714 阅读 · 2 评论 -
Android.bp基于Android 10学习笔记
Android.bp简介Android 7.0之后希望用Android.bp替换Android.mk,bp简单的配置更方便Ninja 文件的产生,而Blueprint和Soong 就此产生。Android 利用Blueprint和Soong 来解析bp文件,经过最终转换为ninja files。 Blueprint和Soong都是由Golang写的项目。 从Android Nougat开始,p...原创 2020-03-16 14:19:01 · 6986 阅读 · 1 评论 -
SD卡CMD命令介绍
1条CMD线,所有的命令和回应都是通过这条线一位一位的传输.不同模式或不同版本下,命令有不同含义.(SD(SD[0],SD[3:0]),SPI))1条时钟线,时钟源是来自APH总线时钟4条数据线,SPI模式下用了两条(一条输出,一条输入),SD的一位模式下一条(输出输入),也可以用完四条(输出输入,DATA[0]将分时复用). SD卡是以块为单位,初始化时有配置,一般为512字节,转载 2017-01-20 12:32:49 · 34455 阅读 · 1 评论 -
Cygwin安装和配置(带Cygwin软件百度云链接)
如果你工作在Windows环境而又不想使用linux环境,可以安装cygwin(http://www.cygwin.com/ ),为了使用gcc注意cygwin的必选安装包在devel目录下:binutils,gcc,make。Cygwin的更多细节可以从网上获取。总之,安装完成以后,运行cygwin的快捷方式,在控制台输入命令gcc和make,有合理的反馈即可(不是SB的comman原创 2017-03-22 16:15:28 · 7909 阅读 · 0 评论 -
Android 内存分析
一、概述1.1 内存指标概念Item全称含义等价USSUnique Set Size物理内存进程独占的内存PSSProportional Set Size物理内存PSS= USS+ 按比例包含共享库RSSResident Set Siz转载 2017-11-10 18:30:51 · 873 阅读 · 0 评论 -
第一章 V4L2简介
http://work-blog.readthedocs.org/en/latest/v4l2%20intro.html1.1、什么是v4l2V4L2(Video4Linux的缩写)是Linux下关于视频采集相关设备的驱动框架,为驱动和应用程序提供了一套统一的接口规范。V4L2支持的设备十分广泛,但是其中只有很少一部分在本质上是真正的视频设备:Video captu转载 2018-01-31 17:59:25 · 622 阅读 · 0 评论 -
imx6 V4L2视频采集和播放(输入video0,输出为video17)
本文章参考:http://www.cnblogs.com/emouse/archive/2013/03/04/2943243.html还参考了imx6测试代码:Mxc_v4l2_tvin.c对以上内容进行自己的总结v4l2详情可以参考:http://work-blog.readthedocs.io/en/latest/v4l2%20intro.html转载 2018-01-31 18:07:29 · 3651 阅读 · 2 评论 -
Android摄像头相关源码分析: 设备驱动, HAL, Framework
1 序本文分析的Android源代码来自Android-X86, 对应的版本是5.1, 因此可能与手机上的Android系统有点差异.2 V4L2V4L2是linux针对摄像头等视频设备的驱动, 应用程序只要对摄像头设备通过open获取文件描述符, 然后就能使用read, write, ioctl等操作对摄像头进行操作了. 在android HAL中同样转载 2018-02-02 19:33:37 · 1457 阅读 · 0 评论 -
linux内核里的GPIO操作函数
1.gpio_set_value(unsigned gpio, int value)用来设置gpio寄存器的值2.gpio_direction_output(unsigned gpio, int value)用来设置gpio为输出功能,同时设置gpio输出的值。一般来说,设置一个GPIO口为输出,先执行一次gpio_direction_output,然后接下来只需执行gpio_set_value就...转载 2018-03-09 11:33:56 · 3786 阅读 · 0 评论 -
IMX6 video设备和fb关系
在IMX6Quad平台启动内核后,在/dev/目录下发现有关fb和video的设备文件,分别为/dev/video0 /dev/video1 /dev/video16 /dev/video17 /dev/video18 /dev/video19 /dev/video20 /dev/fb0 /dev/fb1 /dev/fb2 /dev/fb3等。这些设备文件跟具体的哪个硬件对应,上层如何使用,以及内原创 2018-03-10 23:21:59 · 2395 阅读 · 0 评论 -
Android 4G专网模块信号的上报过程
最近一直在调试Android的4G专网模块;一个困扰了我很久的问题昨天也解决了;就是4G信号强度是怎么报上来的?怎么在右上角通知栏显示的?现在也清楚了; 其实只修改reference-ril.c中的一个函数就解决问题了,只是牵扯到很多理解性的东西;static void requestSignalStrength(void *data, size_t datalen,...转载 2018-03-13 08:54:47 · 2740 阅读 · 0 评论 -
ARM内核和架构的关系(超形象)
好比你盖房子 刚开始因为水平低 流行盖平房 这就是一种架构(V5T);然后这种平房架构你可以设计出一款独立卫生间的款式 这叫ARM7内核;然后其他人(芯片设计公司)想盖房子的就买你这个图纸去盖;然后过一段时间,有人觉得光独立卫生间还不够啊 我还想有个小院子,好吧,那ARM就满足你们,就出个带小院子的款式(ARM9); 又过了很久,这种平房的架构就随着大伙的需求一直改啊改啊。 后来经...转载 2018-05-29 16:08:20 · 6405 阅读 · 5 评论 -
platform_device与platform_driver
做Linux方面也有三个多月了,对代码中的有些结构一直不是很明白,比如platform_device与platform_driver一直分不清关系。在网上搜了下,做个总结。两者的工作顺序是先定义platform_device -> 注册 platform_device->,再定义 platform_driver-> 注册 platform_driver。 (1)platform_dev转载 2016-11-28 11:59:12 · 277 阅读 · 0 评论 -
常用AT命令手册
1、常用操作1.1 AT命令解释:检测 Module 与串口是否连通,能否接收 AT 命令;命令格式:AT命令返回:OK (与串口通信正常) (无返回,与串口通信未连通) 测试结果:AT OK 1.2 AT+CSQ命令解释:检查网络信号强度命令格式:AT+CSQ命令返回:+CSQ: **,##转载 2016-12-13 15:14:12 · 1303 阅读 · 0 评论 -
linux2.6.28块设备mmc_sd卡初始化和识别流程及读写请求流程
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////转载 2016-12-11 23:49:33 · 6854 阅读 · 2 评论 -
Linux内核目录结构及作用
l arch目录arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。| --x86 /* 英特尔cpu及与之相兼容体系结构的子目录*/| |--boot /*引导程序*/| | |--compressed转载 2016-09-20 10:41:08 · 4228 阅读 · 0 评论 -
内核模块中对文件的读写
一般可以用两种方法:第一种是用系统调用。第二种方法是filp->open()等函数。下面分别来说下这两种方法。1 利用系统调用:sys_open,sys_write,sys_read等。其实分析过sys_open可以知道,最后调用的也是filp->open。sys_open ==> do_sys_open ==> filp->open其实sy转载 2016-09-08 14:43:14 · 4744 阅读 · 0 评论 -
git入门操作
【编者按】作为分布式版本控制系统的重要代表——Git已经为越来越多的人所认识,它相对于我们熟悉的CVS、SVN甚至同时分布式控制系统的Mercurial,有哪些优势和不足呢。这次InfoQ中文站有幸邀请到《Git Community Book》的译者刘辉,在InfoQ开辟《Git历险记》专栏,分享他使用Git的经验,以及他对Git的看法。Git是Linus.Torvald为了管理Lin转载 2016-09-21 15:29:48 · 373 阅读 · 0 评论 -
VFS文件系统结构分析(容易理解)
当前,除了linux标准的文件系统Ext2/Ext3/Ext4外,还有很多种文件系统,比如reiserfs, xfs, Windows的vfat NTFS,网络文件系统nfs 以及flash 文件系统jffs2, yaffs/yaffs2 ubifs。linux通过叫做VFS的中间层对这些文件系统提供了完美的支持。对于用户来说,这些文件系统几乎是透明的,在大部分情况下,用户通过libc和k转载 2016-09-21 23:56:56 · 4066 阅读 · 1 评论 -
[IMX6Q]LCD LVDS driver 注册流程
Kernel Version: 3.0.35ldb.c: LVDS drivermxc_dispdrv.c display通用注册handle接口,用于统一管理各种接口。mxc_ipuv3_fb.c 平台核心驱动,最终用于注册driver到fb中。ldb device 注册:imx6q_add_ldb -> //board-mx6-tek.c转载 2016-11-03 10:21:09 · 2163 阅读 · 0 评论 -
嵌入式系统Linux内核开发工程师必须掌握的三十道题
仔细看了一下,居然只知道几个,我很不合格。1) Linux中主要有哪几种内核锁?2) Linux中的用户模式和内核模式是什么含意?3) 怎样申请大块内核内存?4) 用户进程间通信主要哪几种方式?5) 通过伙伴系统申请内核内存的函数有哪些?6) 通过slab分配器申请内核内存的函数有?转载 2016-11-03 16:24:20 · 633 阅读 · 0 评论 -
Linux驱动调试的Debugfs的使用简介
DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是Linux内核运行起来后才建立起来。通常情况下,最常用的内核调试手段是printk。但printk并不是所有情况都好用,比如打印的数据可能过多,我们真正关心的数据在大量的输出里不是那么一目转载 2016-10-14 10:50:12 · 1192 阅读 · 0 评论 -
最全的Android源码目录结构详解
android平台四层架构对应源代码中的目录:第一层:应用程序层(applications)对应根目录下packages/apps第二层:应用程序框架层(application framework)对应根目录下的frameworks第三层:运行库层包括运行库(libraries)和Android运行时环境(android runtime) andr转载 2016-10-27 11:55:26 · 7337 阅读 · 1 评论 -
linux 设备管理之 mem proc sysfs devfs udev
Jack:淫龙,Linux实现的设备管理机制是什么样子的呢?我:在2.4内核里,主流的解决方案是devfs。Jack:我知道。在2.6里,devfs已经被udev替代了。我:这种说法是不准确的,是一种外行看热闹的说法。Jack:怎么说?我:让我给你讲一讲proc文件系统的起源吧。听完了,你自然就明白了。Jack:proc文件系统?穿越了。我:转载 2016-10-21 15:36:08 · 721 阅读 · 0 评论 -
u-boot 环境变量参数设置
今天本来是烧写内核,结果一不小心把uboot也整不能用了,无奈之下只好重新烧个uboot,等都弄好以后,发现系统还是启动不了,原来是启动参数设置不对,于是找到了这篇文章,//是我添加的内容。原文地址:http://blog.chinaunix.net/u3/94312/showart_1923637.html原文: 看到这个标题,可能觉得这个并没有什么的转载 2016-11-16 11:35:40 · 3456 阅读 · 0 评论 -
I.mx6烧录流程
平台:mx6q-sabresdBSP版本:android-6.0.1_r22Mfgtool版本:android_m6.0.1_2.1.0_tool.tarmfgtools操作流程编译并下载流程其实在文档Android_Quick_Start_Guide.pdf中都有讲解,这里根据自己理解了解了一下mfgtool运行流程。1. 将BSP编译好的镜像文件放入mfgtool原创 2016-11-01 18:27:09 · 7879 阅读 · 2 评论 -
在Linux DeviceTree增添dtsi文件并在驱动中读取节点信息写入sys文件系统
在Linux DeviceTree添加dtsi文件并在驱动中读取节点信息写入sys文件系统一、前提新版基于ARM的Linux都会基于Device Tree去代替之前的device驱动。更加多的了解Device Tree可以访问宝哥的Bolg:ARM Linux 3.x的设备树(Device Tree)这里只是举例在arch/arm/boot/dts中添加dtsi文件并在驱动转载 2016-11-02 14:56:09 · 3929 阅读 · 0 评论 -
linux驱动学习之内核线程学习
内核经常需要在后台执行一些操作,这种任务就可以通过内核线程(kernle thread)完成独立运行在内核空间的标准进程。内核线程和普通的进程间的区别在于内核线程没有独立的地址空间,mm指针被设置为NULL;它只在内核空间运行,从来不切换到用户空间去;并且和普通进程一样,可以被调度,也可以被抢占。实际上,内核线程只能由其他内核线程创建,在现有的内核线程中创建一个新的内核线程的方法:kthrea转载 2016-09-12 18:05:28 · 3487 阅读 · 0 评论