自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术交流

爱安卓,爱linux,爱生活。

  • 博客(215)
  • 资源 (9)
  • 收藏
  • 关注

原创 rk3399_android7.1平台调试sensor流程记录

这里只记录调试gsensor部分,其他gryo+compass同理,他们在rk平台分开三个不同.c文件实现驱动加载和id匹配和数据上报等:Rk平台sensor驱动代码路径:kernel/drivers/input/sensors,其中 sensor-dev.c 是核心代码,整合了不同类型的sensor,包括 accel, gyro, lsensor, psensor, compass等。下面是...

2020-02-26 15:24:45 6817 1

原创 第一步_安装VMware虚拟机和搭载ubuntu系统

所需工具/原料:VMware10软件包:VMware-workstation-full-10.0.1-1379776.exeKey注册码生成器:vm10keygen.exeVMware10软件包百度网盘链接:https://pan.baidu.com/s/11Ad9Mxnutvpq64AVszuYRQ 提取码:05ar方法/步骤:1、双击exe程序文件进行安装运行默认会加载一些库文件...

2020-02-03 22:30:12 926

原创 第六步_安装SSH服务

通过ssh服务,我们可以通过终端(putty,Xshell等工具)登陆服务器,通过ip地址访问服务器,进行软件开发工作。下面简单介绍安装步骤和使用。第一步、Ubuntu14.04 64bit系统下安装 OpenSSH Server 需要的命令只有一条,在终端执行: sudo apt-get install openssh-server查看返回的结果,如果没有出错,说明你已经安装成功了。...

2020-02-03 01:58:09 880

原创 第五步_安装编译必须的软件包依赖包

在编译Android SDK代码的时候,需要安装一些必要的软件包和依赖包,否则会出现一些奇奇怪怪的报错,如果你懒得等到碰到报错的时候再去解决,可以直接在命令行界面执行以下的【解决方法】的语句,安装对应的软件包或者依赖包即可。1、sudo apt-get install vim (安装完整版本的 VI) ,这个工具在编辑代码源文件的时候会使用到,建议安装一下。2、安装工具链执行以下命令:$ ...

2020-02-03 01:52:18 3536 1

原创 第四步_安装gcc交叉编译工具

说明:如果SDK代码里面带有GCC编译工具了就不需要安装,可跳过此步骤,一般代码里都有arm-linux-gcc编译工具了,这里是针对没有代码的情况下才需要安装的,简单介绍一下安装步骤。安装步骤1、将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是 /home/song/software,如...

2020-02-03 01:01:37 726

原创 第三步_安装jdk环境

由于编译RK3288 Android7.1需要jdk1.8的java环境,这里介绍一下如何安装open jdk1.8,安装其他版本jdk可自行百度安装。安装jdk1.8以下方法选一即可,我一般选择方法一,前提是你的ubuntu系统可以上网,直接命令安装比较快。下面简单介绍一下:Android各版本需要的jdk版本:Oracle JDK1.6.045 for Android4.4或者更老的版本...

2020-02-02 20:18:59 481

原创 第二步_安装samba服务器

samba是Linux系统上的一种文件共享协议,可以实现Windows系统访问Linux系统上的共享资源,现在介绍一下如何在Ubuntu 14.04上安装和配置samba。本人也是经过百度一些资料才整理成这篇文档的,鉴于百度上很多资料都是说的含含糊糊,本人顿时觉得很有必要把自己的经验分享给大家。工具、资料:a. Windows 64bit系统b. 虚拟机vmware上的linux【ubunt...

2020-02-02 00:00:09 3577 1

原创 搭建Android/Linux驱动编译开发环境篇

通常情况下,我们进行软件开发,都是需要搭建开发环境,如app开发,需要安装Android stadio开发工具等。进行Android/Linux驱动开发,Android代码的编译也需要搭建对应的开发编译环境。而这个开发环境的搭建需要用到 Linux 操作系统,如 ubuntu,fedora 等。为此,我们必须准备一台装有 linux 操作系统的 PC 机。有几种方法可以实现Android编译开发...

2020-02-01 21:41:38 805

原创 RK3288_Android7.1基于tinyalsa的音频调试说明

1、PCM脉冲编码调制(PCM)是一种用于数字表示采样模拟信号的方法。它是数字音频在计算机、光盘、数字电话和其他数字音频应用中的标准形式。在PCM流中,模拟信号的振幅以均匀的间隔进行有规律的采样,并在数字步长的范围内将每个采样量子化到最接近的值。线性脉码调制(LPCM)是一种特定类型的PCM,其量化电平是线性均匀的。这与PCM编码量化水平不同振幅的函数(如 A-law算法或μ-law算法)。尽管...

2020-01-16 11:24:18 3691

原创 putty界面最友好的颜色配置参考

我们在使用putty工具登录服务器查看代码的时候,使用默认的putty工具的颜色配置,感觉不太舒服的话,可以自己配置专属的颜色配置,包括背景和字体的颜色。通过网上查找结合自己实际情况,确定了以下这组配置参数,大家也可以参考一下。* Default Foreground: 255/255/255* Default Background: 51/51/51* ANSI Black: 77/77/...

2019-12-23 10:01:41 13228 1

原创 Linux的tasklet函数详解

tasklet主要用在中断函数中。它对于中断处理特别有用,由于硬件中断必须尽快处理, 但大部分的数据管理可以延后到以后安全的时间执行。所以可以使用tasklet。tasklet的使用比较简单,只需要定义tasklet及其处理函数并将两者关联即可,在定义时可以采用两种形式。例子: struct tasklet_struct my_tasklet; Void my...

2019-12-09 17:33:18 2756

原创 rk3399_android7.1耳机拔插ADC检测

我们这里以rk3399 android7.1平台为例,浅析adc接口实现检测耳机的拔插动作。硬件原理部分:耳机插入把PHE_DET1处的弹片弹开,然后实现headphone_dect直接连通到1.8v,检测端得到高电平1.8v;拔出耳机,弹片回去,只有0.159v电压。所以实现了没有耳机插入时这个“ADC_IN4”为低电位,插入耳机时这个“ADC_IN4”为高电位软件实现部分:1、ker...

2019-11-19 20:28:38 3122

原创 蔡工RK系列Android驱动开发入门视频课程

百度网盘:

2019-11-10 00:36:52 1981 3

原创 Linux驱动实现GPIO模拟I2C读写操作

一、关于i2c协议概述I2C总线协议只需要2根信号线即可完成数据的传输,这两根线分别是时钟线SCL和信号线SDA。I2C线上有且只有1个主设备Master和若干个从设备Slave,区别Master和Slave的标准是SCL,即谁是SCL的提供者,谁就是Master,而与SDA无关。这点尤其需要注意,发送SDA不能作为区别Master和Slave的标准。关于I2C总线再作以下说明:1-两条总线...

2019-11-08 15:29:01 3260 7

原创 Linux内核使用的字符串转整形数和16进制数

kstrtouint函数定义在文件kernel/lib/kstrtox.c中,原形如下:233 /**234 * kstrtoint - convert a string to an int235 * @s: The start of the string. The string must be null-terminated, and may also236 * include ...

2019-10-21 15:33:44 8241

原创 Linux input输入子系统demo驱动

在TP驱动代码分析中,接触到了input子系统,TP驱动将检测到的所有按键或者坐标都上报给了input子系统。Input子系统是所有I/O设备驱动的中间层,为上层提供了一个统一的界面。例如,在终端系统中,我们不需要去管有多少个键盘,多少个鼠标。它只要从input子系统中去取对应的事件(坐标,按键,鼠标移位等)就可以了。下面是一个input子系统的DEMO驱动,参考价值5颗星,这个是关键代码,有问题...

2019-10-18 12:33:21 500 3

原创 Linux怎么查看编译ARM平台程序的编译器arm-linux-gcc

问题:1、“交叉编译工具链肯定有个安装目录的”是说在Ubuntu上装有多个不同版本的arm-linux-gcc编译器,还是说一个版本的交叉编译器安装时会生成多个安装目录?还是皆而有之?2、怎么查看我的Ubuntu上已经安装的交叉编译器(arm-linux-gcc)?3、如何在makefile中指定编译用的编译器?我给你一个makefile,你可以告诉我如何在makefile中指定吗?4、工...

2019-10-14 10:50:16 4430

原创 示波器上1G/S 100MHZ的含义

1G/S :示波器能够使用的最大采样速率为1G样本/秒,就是说示波器在时间最小档位是的采样率是每秒采集1G个数据点,时间档位越大用到的采样率越小100MHZ:示波器模拟前端的带宽。100M正弦波输入示波器时,进过模拟前端后信号幅度衰减为输入时的70.7%业内的原则是采样率要是示波器带宽的5倍以上,俗称5倍原则。比如你要测量的波形频率是300MHz,则这个示波器不能测出它的完整波形,因为带宽不...

2019-10-12 12:18:20 6600

原创 rk3399_android7.1调试mipi转lvds转换IC总结

平台:RK3399 KERNEL版本:kernel4.4Android版本:android7.1转换IC:LT9211(龙迅) mipi to lvds接口: iic第一步,我们需要拿到datasheet,包括转换IC的datasheet和LCD显示屏的Datesheet。获取转换IC(mipi to lvds)的datasheet我们主要关注的是该IC的I2c从设备地址,我这里的芯片...

2019-09-13 02:02:41 13127 33

原创 RK3288_Android7.1平台基于DRM框架的LCD开发

概述rk3288在kernel4.4开始使用的显示框架是基于DRM的。DRM全称是Direct Rendering Manager,管理进行显示输出的, buffer分配, 帧缓冲.libdrm库提供了一系列友好的控制封装, 使用户可以方便的进行显示的控制, 但并不是 只能通过libdrm库来控制drm, 用户可以直接操作drm的ioctl或者是使用framebuffer的 接口实现显示操作...

2019-08-29 14:46:20 7760

原创 RK3288_Android7.1在HAL层audio音频通路小结

rk3288 HDMIin音频通路:hdmiin:HDMIIn声音直接通过codec输出到喇叭、耳机,不需要送到主控进行处理:TC358749XBG-> alc5651 i2s2 -> alc5651 dac -> hp/lineoutalsa HAL 层android 5.1 BOX MID的SDK之后统一使用这个目录下面的代码\hardware\rockchi...

2019-08-10 02:20:00 7933 1

原创 Android电池管理系统系统分析

Android电池管理系统总体实现: 电池管理在Android系统中的主要作用是检测我们的电池状态,剩余电量实时更新,高温报警,低电量关机等。Android的电池管理模块,从Android的应用层到底层内核分为了4层来理解,从上到下依次为,应用层,framwork层,本地框架层,内核驱动层。一、Android 电池服务Android电池服务BatteryService,用来监听内核上报的电...

2019-08-08 17:42:00 5099

原创 JAVA语言的类、对象、变量、方法等的概括说明

1、JAVA的类:你可以把类看成是蓝图,设计图,对一类事物或者意图的某些方面的描述。比如你要描述一种汽车,当然汽车有太多的属性了,但你在意的恐怕只有几种而已。在处理复杂事物的时候,用到的一种基本手段就是抽象。抽象的目的就是区别事物之间的本质和不同,面向对象编程(OOP)的实质就是利用类和对象来建立抽象模型。类表示了对象的类别,是创建对象的蓝本。建立一个事物的抽象模型,本质上就是表达该事物的性质...

2019-07-21 18:30:05 317

原创 写一个控制gpio的驱动

说明:这里主要是基于Amlogic_S905X平台上实现的,其实gpio的控制都是通用的,使用的都是标准的gpio操作函数,跟平台无关。通过往节点写入1或者0来拉高拉低gpio来控制led灯的亮灭。stvs9:/ $ cd sys/devices/led_ctrl.15/ stvs9:/sys/devices/l...

2019-05-14 18:25:11 2012 1

原创 Linux的工作队列work queue和延时工作队列

工作队列(work queue)是Linux内核中将操作延期执行的一种机制。因为它们是通过守护进程在用户上下文执行,函数可以睡眠的时间,与内核是无关的。在内核版本2.5开发期间,设计了工作队列,用以替换此前的keventd机制。这种机制和BH或Tasklets不同之处在于工作队列是把延期的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。每个工作队列多有一个数组,数据...

2019-05-13 20:42:57 4497 1

原创 MT6580 Android8.1调试移植费恩格尔指纹驱动

1、首先用万用表确定好vcc 2.8v和1.8v的供电正常,有的平台2.8v是软件控制打开,有的平台是直接硬件长供的。2、根据原理图确定好gpio的配置主要包括spi_cs,spi_sck,spi_miso,spi_mosi,还有复位脚rst和中断脚int:,使用的是哪一组SPI通讯等。3、dts添加cdfinger 的节点,gpio的配置等,注意查看所使用的gpio是否有其他地方有复用:v...

2019-04-30 23:14:05 830

原创 RK3288_Android7.1调试红外遥控IR

红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。鉴于家用电器的品种多样化和用户的使用特点,生产厂家对红外遥控编码进行了严格的规范编码,这些编码各不相同,从而形成不同的编码方式,统一称为红外遥控器编码传输协议。到目前为止,红外遥控协议已多达十种, 如: RC5、 SIR...

2019-04-22 18:08:33 5997

原创 RK3288_Android7.1调试以太网ethernet

1、以太网(ethernet)的调试:Rk默认已经添加了mac驱动。网卡分为两个层次:MAC+PHY一般说来,MAC就是网络控制器,如果该驱动OK,就能直接看到ifconfig信息;PHY是物理层,负责发送和传输的底层,如果PHY发生问题,ifconfig同样有信息,只有up时才会连接PHY,down时断开连接。MAC和PHY通过MII接口传输以太网数据,通过MDIO接口访问PHY的配置寄...

2019-04-18 15:54:28 9781

原创 Android8.1系统Led的控制从底层到上层的实现

玩了安卓这么久了,你是否有好奇,它的底层到上层或者上层到底层的标准流程是怎么走的呢?这里通过apk操作一个GPIO控制led的亮灭从而实现从上层到底层的完整调用流程。写得不足之处欢迎有识之士不吝赐教,在此先行谢过,技术无边,欢迎各位大牛来此多多交流。Android Version:v8.0.1Linux Version:V4.4Hardware:mtk67391、在kernel层,编写和添...

2019-03-06 02:52:37 3919 3

原创 Linux驱动编程操作GPIO的简要说明

Linux内核中gpio是最简单,最常用的资源。驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio。使用gpio接口需要包含头文件#include <linux/gpio.h> ,在驱动中使用延时函数mdelay,需要包含#incl...

2019-02-21 00:10:55 8767 2

原创 Android studio3.2学习开发JNI并且生成so库教程

步骤可以分成如下步骤:1、打开SDKManager2、配置NDK环境3、新建项目4、自定义native方法5、生成c++头文件6、新建cpp文件实现native方法7、配置CMakeLists.txt文件8、调用native方法9、编译工程生成so文件运行结果如图1、打开SDKManager打开sdkManager下载CMake和LLDB2、配置NDK环境3、新建项...

2019-01-25 18:54:47 2196 2

原创 Linux驱动的ioctl函数简要说明

ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速、LED的开关控制等等。它的函数原型如下所示:int ioctl(int fd, ind cmd, …);其中fd是用户程序打开设备时使用open函数返回的文件标示符,cmd是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一...

2019-01-24 15:44:10 606

原创 JNI接口简单示例

JNI是Java native interface的简写,可以译作Java原生接口。Java可以通过JNI调用C/C++的库,这对于那些对性能要求比较高的Java程序无疑是一个福音。下面我就用JNI实现一个经典的“Hello World”程序。该程序在Java中通过JNI调用c函数实现“Hello World”的输出。创建该程序分为以下步骤:1、创建一个Java程序(HelloWorld.ja...

2019-01-23 11:05:48 4935

原创 洛达项目AB152xP资料SDK相关说明

芯片简介:AB1526P是一个先进的单片机解决方案,集成基带和无线电为密集的音频应用。蓝牙5.0双模认证,支持HFP1.7定义的宽带语音,AAC解码器,2-Mic,更好的降噪和回波消除性能。AB1526P嵌入了16Mb的串行flash,这对于客户端软件升级和第三方软件移植更加灵活。AB1526P通过优化的单片机结构、接口布置和较好的DSP算法,在Headse、Headphone等蓝牙音频应用中提供...

2019-01-17 10:50:32 6927 10

原创 linux驱动中使用定时器的设置

Linux的内核中定义了一个定时器的结构:#include<linux/timer.h>struct timer_list{struct list_head list;unsigned long expires; //定时器到期时间unsigned long data; //作为参数被传入定时器处理函数void (*function)(unsigned long);};

2019-01-11 11:18:20 811 1

原创 MTK平台LCM打静电分析

说明:ESD就是静电。打ESD就是打静电。静电这东西是瞬间电压,特点就是瞬间电压很高,达到10K左右,或更高。而电流是非常小的。因我们的现在芯片都是半导体,半导体对外界电压很敏感的。如果碰到高电压,虽是极小的电流,一样会出问题。这时出问题有的是直接损坏,还有的是暂时损坏,然后会在电压正常时又恢复了。2: lcm_esd_check和lcm_esd_recover就是针对这能自动恢复的时候。他是...

2019-01-06 01:14:18 1693

原创 MTK平台LCM驱动加载流程

安卓系统从power键按下释放,到lcm驱动显示,整个驱动的加载流程as follows:LK阶段:首先执行main.c(vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6739/src/core/main.c)文件,然后执行platform_init(/vendor/mediatek/propriet...

2019-01-06 00:52:30 1370

原创 MTK平台TP驱动框架分析

MTK TP驱动移植调试一般分为五步:1、硬件IO口配置;2、TP驱动移植;3、I2C通信;4、中断触发;5、数据上报;MTK Touch 驱动的组成:Mtk Touch driver 驱动包括:Mtkplatform 虚拟平台设备驱动、Module touch IC 驱动、Inputsubsystem。Mtk platform 设备驱动是mtk为了兼容多个touch IC驱动而设...

2019-01-06 00:48:00 3822

原创 Linux输入子系统浅析

MTK TP驱动移植一般分为五步:1、硬件IO口配置;2、TP驱动移植;3、I2C通信;4、中断触发;5、数据上报;Input子系统与TP驱动对于众多的输入设备的驱动问题,linux提供了一套非常灵活的机制:input子系统。通过它我们只需要调用一些简单的函数,就可以将一个输入设备的功能呈现给应用程序。input输入子系统由输入子系统驱动层,核心层(Input Core),和事件处理...

2019-01-06 00:39:33 458 1

原创 MTK平台调试mipi屏问题小结

首先拿到LCD屏的datasheet和初始化代码,根据原理图和平台框架把初始化代码还有相关参数、驱动移植进去,然后编译完代码烧录后开机,确保背光能亮起来。检查原理图上各个供电管脚的电压(DVDD、IOVDD 是否为 3.3V,VDD_LCDA 是否为 5-10V,VDD_LCDK 是否为 0V),还有正负电压(部分屏有正负电压)是否达到规格标准电压,确认电压正常后,关机,上屏,结合,开机log ...

2019-01-06 00:07:09 5616 3

arm_adb-master_default.tgz

这个源码包是adb工具的源码包,可以直接下载下来交叉编译,适配不同架构的平台(arm/arm64/x86等),我这边是直接放到了arm机器上编译了,可以编译通过,得到adb工具,可以正常使用。根据README编译即可。

2021-12-30

arm平台可以使用的fastboot

在arm 平台上可以运行的fastboot工具

2021-06-11

fastboot-separated_from_android_4.2-master.zip

fastboot源代码,用于单独编译fastboot for linux-x86或arm-linux; 如果要交叉编译到arm平台可以按如下做法: 1、修改Makefile文件的交叉编译工具为你的交叉编译工具即可: #TOOLCHAIN= arm-linux- //注释掉 TOOLCHAIN= arm-linux-gnueabihf- //修改为你的交叉编译工具 2、执行编译 make 即可在当前目录得到fastboot工具,把它放到你的开发板运行即可。

2021-06-03

arm平台架构的lsusb应用程序

我们平时用lsusb都是x86平台上使用的,我这里编译了一个arm平台架构的,有需要的朋友可以下载。把他放到开发板上就可以执行lsusb来查看你设备连接了几个usb设备了,通过pid和vid确认。

2021-05-27

深入理解Android系统张元亮.rar

深入理解Android系统PDF版,张元亮著,本书一共18章,循序渐进分析了安卓系统的基本架构知识,本书适合安卓源码分析人员,安卓架构师,linux开发人员

2019-07-15

洛达项目AB152xP资料SDK相关说明

洛达项目AB152xP资料SDK的相关说明,包括编译工具的安装和使用,config tool工具的安装和使用等。

2019-01-17

加密IC-ATSHA204A的datasheet

atsha204a的datasheet,目前只有英文版,中文版的可自行翻译。

2019-01-09

MT6580平台安卓5.1系统调试加密IC--ATSHA204A

基于mt6580平台,安卓5.1系统,调试加密ic--atsha204a的驱动,使用i2c接口的驱动,通过i2c读写来配置加密芯片,代码中有很清晰,详细的注释,校验CRC部分,MAC算法则直接移植官方库文件的代码

2019-01-06

Driver_All_in_One_V0.1_Android_M.pdf

mtk驱动开发文档,android M(android6.0)版本,文档打开密码是1885459970

2018-12-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除