- 博客(90)
- 资源 (9)
- 收藏
- 关注
原创 DYNAMIC_DEBUG调试纪要
1、打开dynamic_debug调试CONFIG_DYNAMIC_DEBUG2、调试的使用// 提供文件 svcsock.c 1603行信息echo -n 'file svcsock.c line 1603 +p' > <debugfs>/dynamic_debug/control// 提供文件svcsock.c所有信息 echo -n 'file svcsock.c +p' > <debugfs>/dynamic_debug/control// 提
2022-04-07 19:15:06 483
原创 高通Android camera驱动框架
1、camera kernel驱动高通的kernel中,将camera分为两部分:video和camera两部分1.1、camera video部分video部分与userspace进行交互,sensor是有camera厂商定义的寄存器配置部分,主要完成相关寄存器参数的配置。主要文件路径:kernel\msm-4.4\arch\arm\boot\dts\qcom\sdm660-camera.dtsikernel\msm-4.4\drivers\media\platform\msm\camera_v
2022-03-20 23:58:52 3618
原创 【qcom Android camera调试纪要】
qcom Android camera调试纪要1、平台适配1.1、kernel端1.2、vendor端1.2.1、cameraService lib代码注意:需要在vendor\qcom\proprietary\common\config\device-vendor.mk中添加需要将当前的camera service lib加入到系统的编译路径中。1.2.2、camera Chromatix效果参数注意:该chromatix效果参数需要在vendor\qcom\proprietary\common\conf
2022-03-20 22:42:11 3391
原创 linux之DMA使用
前言对于长期从事嵌入式的开发人员来说,DMA是一个在实际中优化设备而老生常谈的问题,我们可以将它比喻为一个小机器人,长期重复与某一个动作的傻瓜式机器人,当我们设置好了出发添加,这个小机器人就会自动去执行相关的业务而不需要CPU的参与,从而大大的减轻了cpu的负载压力。一、对于使用DMA控制器有什么内存上限制?dma的内存要求内存上是连续的一片虚拟内存空间,1、我们不要使用vmalloc以及kmalloc这些通过get_free_page()函数来触发系统异常来分配在内存上可能是不连续的内存地址,而使
2021-03-05 15:18:04 5717 1
原创 wfe与wfi
WFE && WFIWFE(wait for event)等待事件的发生,根据事件的PE状态进行判断,如果PE状态为1,表示任何一个事件都会将这个事件进行唤醒,如果PE=0则进入到low power stanby模式,只有WFE Wakeup Event才能唤醒。WFI(wait for interrupt)等待中断,CPU会立即进入倒low power stanby模式,只有WFI wakeup interrupt发生才能唤醒。...
2020-12-08 09:41:14 639
原创 Android之binder详解
一、层次设计如上图所示,binder的层次关系图可分为三个部分,最上层为framework的各种binder服务类和接口类。最底层的为binder驱动,主要提供了open,ioctl和close这三个接口。中间两层分别为binder核心类和IPCThreadState,binder核心类提供Ibinder和Bbinder和Bpbinder,IPCThreadState提供了与Bnbinder和Bpbinder的在驱动层的交互接口。二、binder服务的使用sp<IServiceManager&
2020-11-27 12:07:44 490
原创 手写识别算法
设计架构一:训练将如上的图片分割层N*N的宏快,每一个宏快又是由很多的像素组成,我们计算一个宏快内被标记黑色的个数,比如上图可标记为:依次类推可得到0-9不同数字的特征数组二:比对比对我们使用简单的欧拉比对step1、将待比对的图片进行灰度,二值化后可获取到待比对的图片的特征图片,然后按照训练的方式获取到该图片的特征码。step2、将step1获取到的特征码与训练得到的训练数据进行欧拉比对step3、使用欧拉计算后的最小值作为最佳值...
2020-11-25 14:21:35 962
原创 Android build子系统详解
概论Android的build系统是基于GNU Make和shell构建的一套编译环境,Android的编译比较庞大,所以为了统一管理,Android退出了build来统一管理Android的编译。build处理完成对目标系统的二进制文件,APK运用编译,链接,打包等工作外,还需要生成目标系统的镜像和各种配置文件,同时还维护各个模块间的依赖关系。build系统可分为三大块,一:位于build/core下的文件,这是build系统的框架和和兴,二:位于device目录下,存放产品的配置参数,三:是各个模
2020-11-25 12:17:00 362
原创 多媒体H264课堂笔记
课堂笔记一:一张图片由很多的宏快组成二:对于图像场景复杂度高的图像,打散为宏快越小三:宏快的方向,大小这些信息都存放在宏快的图像信息中。四:视频的播放的本质就是宏快的运动和新宏快的增加五:运动弛量:就是表示宏快的运动方向六:运动补偿:只是在前后两帧插入运动弛量的帧。七:...
2020-11-24 21:19:49 81
原创 小坑记录
前言最近在调试Android的驱动,遇见一些小坑,记录一下1、Android的input驱动IO的irq可以正常触发,但是没有input事件只会上报第一次答:因为input的evbit参数设置错误和keybit参数设置错误正常的方式set_bit(EV_KEY,vr_input->evbit); //set_bit(EV_REP,vr_input->evbit);不需要重复上报input_set_capability(vr_input, EV_KEY, KEY_F2);//KEY
2020-10-22 18:32:15 125
原创 Android sensor框架(native篇)
一、前言sensor在实际的产品中占据很大的作用,他是外界环境与系统交互行为入口,比如重力传感器,加速度传感器,磁力计,摄像头等这些都属于sensor(说明:camera在Android上不走sensor框架),总而言之:sensor在整个Android设备上占据很重要的角色。二、sensor软件框架如上图所示:sensor的native层由inputManager,inputHub和inputInterface三部分构成。inputManager负责整个sensor的管理。inputHub附件
2020-09-23 15:45:00 666
原创 Android sensor框架(驱动篇)
前言软件结构总结一:前言二:软件结构2.1、input子系统上报数据2.2、hal层向driver发送校准参数的misc设备驱动三:总结
2020-09-22 11:13:46 609
原创 Android9 rk3399开关机充电详解(uboot篇)
前言Android开关机流程分析rk3399 开发机充电uboot适配一、前言二、Android开关机流程分析三、rk3399 开发机充电uboot适配
2020-09-17 16:41:49 2122
原创 Ubuntu18编译qt小结
前沿编译X11arm交叉编译一:前沿qt作为一款优秀的工具,可以横跨移动端,pc等,特别是20年初推出的qt for mcu后,qt可以更是横跨整个芯片行业。本次使用的环境ubuntu:18.04qt版本:qt-everywhere-opensource-src-5.9.1gcc版本:arm-linux-gnueabihf-6.3.11.1、安装编译所需要的依赖库sudo apt-get install flexsudo apt-get install bisonsudo apt-g
2020-09-16 07:25:09 435
原创 Android的native与apk之间的通信之local socket篇
前言local socket原理讲解实战一:前言二:Binder原理讲解三:实战
2020-09-10 14:16:47 406
原创 Android的native与apk之间的通信之binder篇
前言native与apk之间常用的通信方式Binder原理讲解实战一:前言二:native与apk之间常用的通信方式三:Binder原理讲解四:实战
2020-09-10 14:14:17 633
原创 ubuntu环境下安装两个版本的jdk版本(记录)
前提:如果我们的ubuntu已经安装了jdk1.8,那么也同时需要jdk1.7的环境安装jdk1.7请参考https://openbravotutorial.wordpress.com/2019/05/11/install-openjdk-7-on-linuxmint-19-1-or-ubuntu-18-04/然后使用sudo update-alternatives --install “/usr/bin/java” “java” “/opt/jdk/jdk1.7.0_80/bin/java” 1
2020-06-05 15:26:01 1130
原创 C++多态性思考
前沿今天看android的服务源码时候,看见了一个C++的多态性问题,这里贴出代码,不做讲解//这是main.cpp#include <iostream>#include "mul.hh"using namespace std;int main(void){ mul_string(); return 0;}/*这是mul.cpp*/#include <iostream>using namespace std;int mul_string(cons
2020-05-26 19:43:54 125
原创 如何获取android源码
前言由于墙的原因,从境外谷歌下载android是一件非常不容易的事,所以我们需要使用清华等境内源进行android的源码下载一:以imx8mm下载android9为例1.1、从nxp官网下载imx-p9.0.0_2.2.0-ga.tar.gz1.2、解压后打开imx_android_setup.sh 可获取urlrepo init -u https://source.codeaurora.org/external/imx/imx-manifest.git -b imx-android-pie -m
2020-05-26 19:25:07 672
原创 Android如何为kernel添加一个驱动
一、概述Android的kernel也就是linux,所以在添加驱动也和linux的添加方式一致,但是不同的是kernel中添加驱动以make menuconfig比较直观,但是Android已经不适用这个UI界面了,而使用原始的conf文件方式。为什么我要写这篇博客勒?实话说:我被Android的编译log给欺骗了,Android的编译log提升我Android使用的kernel配置是an...
2020-04-16 11:27:24 1085 1
原创 ubuntu 16.04以及后续高级版本 安装 openjdk 1.7
由于编译Android源码需要openjdk1.7.X版本。ubuntu 16.04自带openjdk为1.8.X版本。sudo apt-get install openjdk-7-jre 或者sudo apt-get install openjdk-7-jdk如果出现没有可用的软件包 openjdk-7-jdk,但是它被其它的软件包引用了。这可能意味着这个缺失的软件包可能已被废弃, 或者...
2020-04-12 23:49:17 452
原创 解决:scripts/kconfig/zconf.tab.c:199:24: fatal error: zconf.hash.c: No such file or directory
rm -rf out //删除out文件make mrproper //完全清空上一次中间文件重新编译吧你source build/envsetup.shlunch 5make -j32
2020-04-03 17:37:12 1987 1
原创 Android 电池管理系统解析
一、概述二、电池管理系统框架图概述:PowerManagerServer是在SystemServer中创建并且加入到ServiceManager中,如下图所示代码路径:frameworks\base\services\java\com\android\server\SystemServer.kava2.1、power的初始化代码路径:frameworks\base\services\...
2020-03-30 18:18:20 942
原创 Android添加模块的配置文件
前言最近在研究Android的触摸屏框架,已经理清楚了driver->inputHub->inputDevice->inputManager->input_Module之间的关系,但是其中,需要引入触摸屏的配置参数问题,Android需要一个配置文件来声明当前的触摸屏类型,所以需要在文件系统中声明一个.idc的配置文件,但是关于该配置文件如果在Android编译阶段就进入...
2020-03-28 10:56:06 443
原创 Android9电源键驱动分析
一、概述在现在的Android手机中,物理按键虽然逐渐被取代,但是对于电源键这种命脉型的功能键不可能会取消的,但是对于各家单板,硬件的IO连接都是不相同的,所以需要定制电源键的功能。二、power-key驱动分析2.1、dts配置power-keysnvs_pwrkey: snvs-powerkey { compatible = "fsl,sec-v4.0-pwrkey"; regmap...
2020-03-26 18:56:16 1072
原创 Android lcd hal层分析
一、概述二、架构分析2.1、GRALLOC部分分析2.1.1、FbDisplay文件分析2.1.2、DispManager.cpp文件分析2.1.3、framebuffer.cpp 文件分析2.1.4、gralloc.cpp 文件分析2.2、hwcomposer部分分析...
2020-03-26 15:04:38 369
原创 android 9.0从driver到APP -- HIDL
一、 接口描述文件创建1.1 创建HIDL目录mkdir -p hardware/interfaces/sample/1.01.2 创建接口描述文件sample.halpackage android.hardware.sample@1.0;interface ISample { init(); close(); Read(vec<int32_t&...
2020-03-19 19:49:24 910
原创 说一下最近调试RTMP/RTSP出现的一些问题
1️⃣:采集到的CAMERA图像大小与实际图像有效数据大小不一致?答:因为模组商家的CAMERA异于普通的UVC,有效数据使用另外一个数据结果,解决办法:1:手动解析H264的有效长度 2:向原厂所有测试代码,获取有效长度的数据结构2️⃣:RTMP推送到云端的视频远远大于实际推送的数据量复现:使用分析工具发现,文件中的视频时间与实际播放时间不一致答:由于RTMP的时间戳错误...
2020-03-12 10:49:23 505
原创 posix的pthread_cond_wait系列通常总结
这里仅仅是总结,不涵盖原理讲解:现在有两个线程1,2。1号线程等待2号线程的某些资源,当资源达到后才会执行消费。pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t cond = PTHREAD_COND_INITIALIZER;1号线程:while(1){ pthread_mutex_lock(&mu...
2020-03-07 10:43:36 257
原创 librtmp不依赖openssl与zlib的编译
前提:在我们的项目中,使用rtmp不需要加密以及压缩处理,所以不需要openssl(负责加密)以及zlib(视频压缩),所以我们交叉编译librtmp时候不需要这两个库。主要实现为:**1:**添加上勾选的macro2:修改主Makefile,去掉这两个库的依赖...
2020-03-06 14:09:38 1150
原创 编译Android7.1源码出现OOM错误解决方法
具体err信息为:Try increasing heap size with java option '-Xmx表面意思就算你的内存太小了,需要我们手动指定一下本机的最大内存,解决办法:export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"out/host/linux...
2020-02-27 17:19:49 392 1
原创 android7.1编译错误flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data:
报错如下flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data: ?? ‘cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))’ ???Aborted (core dumped)[ 4% 4832/99272] target C++: l...
2020-02-27 16:41:09 4144 1
原创 低级bug之修改共享内存导致异常
** 今天调试RTSP时候,camera的设备节点下给出的图像数据大小与实际的输出大小不一样,导致我过分的相信原厂给的信息与数据是OK的,从而一直找不到为啥640 * 480 这样的H264数据占用很大的带宽。**** bug问题:我修改mmap映射后的数据信息,查阅相关书籍可知,这样的修改是不允许对。当我在进行视频流存入到用户空间之后,在用户控件修改数据信息后,整个问题就OK了,真是越急越不...
2020-02-23 21:53:26 184
原创 H264 帧边界识别简介
PS:这几天一直在学习H264的数据格式,话说sonix的H264输出也太恶心了,什么参考资料都没有,从V4L2中拿到的数据长度信息与实际图像信息大小不一样,导致调试途中占用40倍的网络带宽,害得我找这个问题找了3天,真是他恶心啊。说一下标准的H264帧边界识别吧H.264 将构成一帧图像所有nalu 的集合称为一个AU,帧边界识别实际上就是识别AU。因为H.264 取消帧级语法,所以无法简...
2020-02-23 10:55:15 385
原创 rtsp推送uvc camera大概思路流程
一:思路概论前言:以前没有干过与图像,视频格式相关的工作,临时被安排这个活,心里有点挑战,但是也还要,整体编码,调试完成大概需要了10天不到1:我们选取的usb camera是输出jpeg格式数据2:将jpeg图片转码为422p格式3:将422p编码为h264文件4:将h264文件进行rtsp推流以上为大概的流程框架。中途出现一个问题很纠结:网络上的基本上都是420p编码为h264...
2020-01-06 14:14:37 1954 2
单链表之头部插入节点.pdf
2020-08-21
Android之蓝牙驱动开发总结.pdf
2020-08-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人