自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (9)
  • 收藏
  • 关注

原创 LINUX中SPI的一些小技巧

linux spi杂记

2022-06-22 09:40:51 1417 1

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

原创 高通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 3569

原创 【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 3351

原创 linux之DMA使用

前言对于长期从事嵌入式的开发人员来说,DMA是一个在实际中优化设备而老生常谈的问题,我们可以将它比喻为一个小机器人,长期重复与某一个动作的傻瓜式机器人,当我们设置好了出发添加,这个小机器人就会自动去执行相关的业务而不需要CPU的参与,从而大大的减轻了cpu的负载压力。一、对于使用DMA控制器有什么内存上限制?dma的内存要求内存上是连续的一片虚拟内存空间,1、我们不要使用vmalloc以及kmalloc这些通过get_free_page()函数来触发系统异常来分配在内存上可能是不连续的内存地址,而使

2021-03-05 15:18:04 5544 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 613

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

原创 手写识别算法

设计架构一:训练将如上的图片分割层N*N的宏快,每一个宏快又是由很多的像素组成,我们计算一个宏快内被标记黑色的个数,比如上图可标记为:依次类推可得到0-9不同数字的特征数组二:比对比对我们使用简单的欧拉比对step1、将待比对的图片进行灰度,二值化后可获取到待比对的图片的特征图片,然后按照训练的方式获取到该图片的特征码。step2、将step1获取到的特征码与训练得到的训练数据进行欧拉比对step3、使用欧拉计算后的最小值作为最佳值...

2020-11-25 14:21:35 945

原创 Android build子系统详解

概论Android的build系统是基于GNU Make和shell构建的一套编译环境,Android的编译比较庞大,所以为了统一管理,Android退出了build来统一管理Android的编译。build处理完成对目标系统的二进制文件,APK运用编译,链接,打包等工作外,还需要生成目标系统的镜像和各种配置文件,同时还维护各个模块间的依赖关系。build系统可分为三大块,一:位于build/core下的文件,这是build系统的框架和和兴,二:位于device目录下,存放产品的配置参数,三:是各个模

2020-11-25 12:17:00 344

原创 多媒体H264课堂笔记

课堂笔记一:一张图片由很多的宏快组成二:对于图像场景复杂度高的图像,打散为宏快越小三:宏快的方向,大小这些信息都存放在宏快的图像信息中。四:视频的播放的本质就是宏快的运动和新宏快的增加五:运动弛量:就是表示宏快的运动方向六:运动补偿:只是在前后两帧插入运动弛量的帧。七:...

2020-11-24 21:19:49 71

原创 Android 音频系统之驱动篇(一)

马上录入

2020-11-24 19:52:37 1126

原创 小坑记录

前言最近在调试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 119

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

原创 Android sensor框架(驱动篇)

前言软件结构总结一:前言二:软件结构2.1、input子系统上报数据2.2、hal层向driver发送校准参数的misc设备驱动三:总结

2020-09-22 11:13:46 585

原创 Android9 rk3399开关机充电详解(uboot篇)

前言Android开关机流程分析rk3399 开发机充电uboot适配一、前言二、Android开关机流程分析三、rk3399 开发机充电uboot适配

2020-09-17 16:41:49 2088

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

原创 Android系统的裁剪与定制

前言Android系统的启动过程分析Android系统的裁剪Android系统的定制

2020-09-14 11:35:18 816

原创 Android的native与apk之间的通信之local socket篇

前言local socket原理讲解实战一:前言二:Binder原理讲解三:实战

2020-09-10 14:16:47 393

原创 Android的native与apk之间的通信之binder篇

前言native与apk之间常用的通信方式Binder原理讲解实战一:前言二:native与apk之间常用的通信方式三:Binder原理讲解四:实战

2020-09-10 14:14:17 618

原创 Android9的selinux机制

待写

2020-09-08 10:05:40 617

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

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

原创 如何获取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 654

原创 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 1067 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 439

原创 解决: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 1939 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 918

原创 Android添加模块的配置文件

前言最近在研究Android的触摸屏框架,已经理清楚了driver->inputHub->inputDevice->inputManager->input_Module之间的关系,但是其中,需要引入触摸屏的配置参数问题,Android需要一个配置文件来声明当前的触摸屏类型,所以需要在文件系统中声明一个.idc的配置文件,但是关于该配置文件如果在Android编译阶段就进入...

2020-03-28 10:56:06 431

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

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

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

原创 说一下最近调试RTMP/RTSP出现的一些问题

1️⃣:采集到的CAMERA图像大小与实际图像有效数据大小不一致?答:因为模组商家的CAMERA异于普通的UVC,有效数据使用另外一个数据结果,解决办法:1:手动解析H264的有效长度 2:向原厂所有测试代码,获取有效长度的数据结构2️⃣:RTMP推送到云端的视频远远大于实际推送的数据量复现:使用分析工具发现,文件中的视频时间与实际播放时间不一致答:由于RTMP的时间戳错误...

2020-03-12 10:49:23 497

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

原创 librtmp不依赖openssl与zlib的编译

前提:在我们的项目中,使用rtmp不需要加密以及压缩处理,所以不需要openssl(负责加密)以及zlib(视频压缩),所以我们交叉编译librtmp时候不需要这两个库。主要实现为:**1:**添加上勾选的macro2:修改主Makefile,去掉这两个库的依赖...

2020-03-06 14:09:38 1128

原创 编译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 383 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 4000 1

原创 H264码流分析

待续。。。

2020-02-23 23:23:27 96

原创 低级bug之修改共享内存导致异常

** 今天调试RTSP时候,camera的设备节点下给出的图像数据大小与实际的输出大小不一样,导致我过分的相信原厂给的信息与数据是OK的,从而一直找不到为啥640 * 480 这样的H264数据占用很大的带宽。**** bug问题:我修改mmap映射后的数据信息,查阅相关书籍可知,这样的修改是不允许对。当我在进行视频流存入到用户空间之后,在用户控件修改数据信息后,整个问题就OK了,真是越急越不...

2020-02-23 21:53:26 177

原创 H264 帧边界识别简介

PS:这几天一直在学习H264的数据格式,话说sonix的H264输出也太恶心了,什么参考资料都没有,从V4L2中拿到的数据长度信息与实际图像信息大小不一样,导致调试途中占用40倍的网络带宽,害得我找这个问题找了3天,真是他恶心啊。说一下标准的H264帧边界识别吧H.264 将构成一帧图像所有nalu 的集合称为一个AU,帧边界识别实际上就是识别AU。因为H.264 取消帧级语法,所以无法简...

2020-02-23 10:55:15 367

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

Android SELiunx 权限添加

手把手教你Android SELiunx 权限添加

2023-06-28

高通SC60的spi转lan口驱动

高通SC60的spi转lan口驱动

2023-02-14

趣谈Linux第十章:线程的数据描述

趣谈Linux第十章:线程的数据描述

2022-10-29

趣谈Linux第九章:任务的创建

趣谈Linux第九章:任务的创建

2022-10-29

趣谈Linux之第八章:内核的初始化部分

趣谈Linux之第八章:内核的初始化部分

2022-10-29

线程的创建:如何执行一个新子项目.pdf

linux之线程的创建

2021-09-28

进程的创建:如何发起一个新项目.pdf

Linux小谈之进程的创建

2021-09-28

鲁班猫Python应用开发实践.pdf

野火出品的py驱动硬件手册

2021-09-28

嵌入式Linux学习笔记(基于S5PV210、TQ210).pdf

最合适新手实战linux驱动开发的文档

2021-09-28

lichee_zero-new.pdf

荔枝派V3S原理图

2021-09-28

dsi-porting-guide.zip

涵盖了高通410C的 DSI适配文档

2021-09-27

Rockchip_RK805_Developer_Guide_CN.pdf

RK805 pmic linux开发文档

2021-02-03

单链表之头部插入节点.pdf

比较适合于大学生面试公司笔试时候的基础性的数据结构考察。 在分析链表的算法的时候一定要注意心里有数, 先搞清楚完成这个算法需要 哪几步, 每步做什么, 然后再去思考每步的代码实现是什么, 否则就会只看到指 针指来指去, 很快就晕头转向了。 头插入节点的两个重要步骤: (1) 新节点的 pNext 指向原来的第一个节点的首地址, 即新节点和原来的 第一个节点 相连。 (2) 头结点的 pNext 指向新节点的首地址, 即头结点和新节点相连。 经过这两步新节点就插入了头结点和原来的第一个节点之间, 成为新的第一 个节点。

2020-08-21

Android之蓝牙驱动开发总结.pdf

Android蓝牙开发必备,是初学者,初级工程师学习Android 蓝牙的必备手册。 主要分为三部分 1.打开蓝牙; 2.查找附近已配对或可用的设备; 3.连接设备; 4.设备间数据 交换。

2020-08-20

空空如也

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

TA关注的人

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