- 博客(220)
- 资源 (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
7701
2

原创 第一步_安装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
1079

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

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

原创 第三步_安装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
614

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

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

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

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

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

原创 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
3563

原创 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
3770
8

原创 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
9616

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

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

原创 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
13869
34

原创 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
8117

原创 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
8640
1

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

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

原创 写一个控制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
2200
1

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

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

原创 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
10391

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

原创 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
2257
2

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

原创 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
5050

原创 洛达项目AB152xP资料SDK相关说明
芯片简介:AB1526P是一个先进的单片机解决方案,集成基带和无线电为密集的音频应用。蓝牙5.0双模认证,支持HFP1.7定义的宽带语音,AAC解码器,2-Mic,更好的降噪和回波消除性能。AB1526P嵌入了16Mb的串行flash,这对于客户端软件升级和第三方软件移植更加灵活。AB1526P通过优化的单片机结构、接口布置和较好的DSP算法,在Headse、Headphone等蓝牙音频应用中提供...
2019-01-17 10:50:32
7326
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
955
1

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

原创 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
1546

原创 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
4150

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

原创 MTK平台调试mipi屏问题小结
首先拿到LCD屏的datasheet和初始化代码,根据原理图和平台框架把初始化代码还有相关参数、驱动移植进去,然后编译完代码烧录后开机,确保背光能亮起来。检查原理图上各个供电管脚的电压(DVDD、IOVDD 是否为 3.3V,VDD_LCDA 是否为 5-10V,VDD_LCDK 是否为 0V),还有正负电压(部分屏有正负电压)是否达到规格标准电压,确认电压正常后,关机,上屏,结合,开机log ...
2019-01-06 00:07:09
6475
3
arm_adb-master_default.tgz
2021-12-30
fastboot-separated_from_android_4.2-master.zip
2021-06-03
arm平台架构的lsusb应用程序
2021-05-27
深入理解Android系统张元亮.rar
2019-07-15
MT6580平台安卓5.1系统调试加密IC--ATSHA204A
2019-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人