自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(388)
  • 收藏
  • 关注

原创 Android-mmm-使用小技巧

其中/vendor/lib/hw/camera.bigfish.so。有时候不知道mmm之后应该。就是主板系统内的存放的路径。2.达到你要编译的路径。1.先把目录清理之后。

2023-09-25 10:52:44 217

原创 odm(贴牌)和oem(代工)区别

ODM通常会研发自有品牌的产品,或者开发面向不同市场的品牌产品。客户可以根据自己的需要来选用ODM厂商所提供的产品或者服务,也可以将ODM厂商的产品作为自己品牌的OEM产品销售。ODM厂商通常会拥有自有品牌,可以为自己的品牌产品进行研发和生产;而OEM厂商一般不会在产品上贴自己的品牌,而是根据客户要求将客户的品牌标识或商标印在产品上。OEM厂商一般不会在产品上贴自己的品牌,而是根据客户要求,将客户的品牌标识或商标印在产品上,并将产品交付给客户,由客户负责销售。比如低端的手机:小米华为OPPO都是闻泰做的。

2023-08-30 15:22:29 938

原创 C++常见错误1

在构造函数中,分配了堆空间,但是没有释放,现在是在main函数中实例化对象,程序退出是会释放,但是如果是在某个子函数里面实例化对象把main函数里面的测试代码都放到一个字函数里面。

2023-08-02 14:28:11 164

原创 3.常见编译命令

建议: 首次编译时采用 make/mma/mmma 编译;当依赖模块已经编译过的情况, 则使用 mmm/mm 编译。

2023-06-28 17:14:46 128

原创 1. Android 根文件系统

Android 的文件系统实际是通过源码编译出来的, 最后的文件都生成在 out/target/product/产品名/目录下, 以下几个目录组合成了完整的根文件系统:

2023-06-28 16:21:58 349

原创 常见储存器件的区分

将存储器分为三大类。下面在大类中,按照存储器的实现技术原理来进行详细分类。随机存取存储器Static RAM静态随机存取存储器动态随机存取存储器同步动态随机存储器双倍速率同步动态随机存储器,目前主流的内存类型只读存储器电可擦写可编程只读存储器。

2023-04-12 15:02:53 115 1

原创 SecureCRT配置

%h:%m:%s]

2023-04-05 19:29:04 91

转载 Android 系统获取以太网mac地址的方法

2022-09-11 17:05:00 1029

转载 Android 系统的盒子静默安装apk方法之一

2022-09-11 17:01:45 15798

原创 ota暗室测试wifi数据

819/829在ota暗室测试wifi数据,原理是只要板子上电后,自动连接到暗室的wifi,暗室的机器就会检测到相应的数据------------------------------------ 连接暗室路由器的wfi方法如下 ------------------------------------在R328方案用wifi_connect_ap_test[ssid] [passwd]连接路由器wifi ,该命令连接成功,会在/etc/wifi/wpa_supplicant.conf生成wifi路由的..

2022-01-06 09:45:04 1170

原创 传导-RF测试

本文主要服务于使用XR819/XR829RF射频芯片的广大客户wifi测试传导测试WiFi的传导测试是通过射频电缆线,有线的方式连接到测试仪器,用来测试不带天线,射频芯片出来的RF性能。传导测试又分为信令模式和非信令模式。信令模式可以理解为小机和综合测试仪进行信息交互,小机既能发射信号,又能接收信号,具有回环机制;非信令模式下,小机只能作为发射机或者接收机,信息传递是单向的;两种模式下测试结果是差不多的。传导测试的仪器设备有IQ2015、N9020A(频谱仪)和CMW270((综合测试..

2022-01-04 16:46:59 5456 1

原创 DAI:Digital Audio Interfaces(音频设备的硬件接口)

DAI:Digital Audio Interfaces(音频设备的硬件接口)_Norton的专栏-CSDN博客

2021-12-17 09:34:35 487

原创 swupdate(一)

2.配置选项:m menuconfig/m ota_menuconfig2.1选上swupdate包,主系统和recovery系统均需要Allwinner <*> swupdate一般默认即可,特殊调整,比如剪裁网络部分2.2都需要选上 wifimanager-demo,主系统和recovery系统都需要Allwinner > wifimanager [*] Enable wifimanager daemon support...

2021-12-14 17:31:50 1967

原创 1.音频相关

1.硬件资源R311包含4个音频模块,分别是内置 AudioCodec(音频解码器),Daudio0,Daudio1,Dmic

2021-12-09 16:45:08 1545

原创 audio codec简介

Audio Codecaudio codec是什么?codec = coder + decoderAudio Codec就是音频编解码器,是编码器encoder与解码器decoder的混合体。音频编解码器,是指一种能够对数字音频流进行编码和解码的设备或计算机程序。DAC 部分DAC 部分的框图:数字音频接口:1、I2S 接口 I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。在飞利浦公司的I2S ...

2021-12-09 11:32:40 3026

原创 温控-Thermal

1.模块功能介绍Thermal俗称热控制系统,其功能是通过temperature sensor测量当前CPU、GPU 等设备的温度值,然后根据此温度值,影响CPU、GPU等设备的调频策略,对CPU、GPU等设备的最大频率进行限制,最终实现对CPU、GPU等设备温度的闭环控制,避免SOC温度过高。IPA(Intelligent Power allocator)温控策略:引入PID控制,根据系统温度动态分配power给各个设备,并将power 转化为频率限制。1.1.相关术语术语...

2021-12-06 16:26:58 1224

原创 Android 性能问题瓶颈定位(CPU)

适用:H6 H616 H700 T507 T509 A100##问题描述在一些性能问题中,当发现CPU负载较高, 会误认为就是CPU性能不够引起。##解决方法###CPU定频在adb shell命令行中输入如下命令:su;setprop persist.vendor.power.disable 1;echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor;###查验负载情况此

2021-12-06 15:09:55 1536

原创 调频调压-CPUFREQ

1.模块功能介绍CPUFREQ负责系统运行过程中CPU频率和电压的动态调整。1.2 相关术语Sunxi指Allwinner 的一系列sOC硬件平台。DVFS动态频率电压调整1.2模块配置介绍1.2.1 Device Tree配置说明设备树中存在的是该类芯片所有平台的模块配置,设备树文件的路径为: kernel/linux-4.9/arch/arm64 (32位平台为arm)/boot/dts/sunxi/CHIP.dtsi(CHIP为研发代号,如su...

2021-12-06 14:58:52 809

原创 1.2.3-1.2.8内核子系统-pinctrl子系统

1.pinctrl子系统之框架组成Pinctrl整个驱动模块可以分成4个部分:pinctrl api : pinctrl提供给上层用户调用的接口pinctrl common framework : pinctr1提供给上层用户调用的接口. pinctrl driver :平台需要实现的驱动board configuration :设备 pin 配置信息,格式device tree source或者sys_config如上图可知: Pinctrl framework主要处理pinstate...

2021-09-24 15:11:35 129

原创 1.2.1-1.2.1内核子系统-GPIO子系统

1.linux子系统框架在Linux中,GPIO子系统大致分为3层:GPIO硬件GPIO硬件驱动层抽象驱动框架从上到下为:2.结构体抽象1、GPIO描述符gpio_desc在Linux 中,GPIo驱动框架是在gpiolib.c中实现的。对于每一个GPIo引脚,抽象了一个描述符gpio_desc :目录: kernel-4.4\drivers \gpiolgpiolib.hstruct gpio_desc { struct gpio_devic...

2021-09-24 11:28:23 110

原创 1.11.2、低功耗-Runtime Power Management框架分析

Linux的RPM ( Runtime power management)框架,是一套运行时电源管理框架,为系统中所有的device提供了一种运行时电源管理的机制。其目的很明确—减少系统运行时的功耗;内核文档链接文件目录:apps_proc\kernel\include\linux \pm.hRPM状态/** * Device run-time power management status. * * These status labels are used internally...

2021-09-23 11:31:05 716

原创 1.11.4、低功耗-休眠唤醒流程

向/sys/ power/state写入命令后再到唤醒,将进行以下流程:源码分析

2021-09-23 11:22:41 124

原创 1.11.3、低功耗-休眠唤醒基本概念

一、休眠唤醒基本概念PM相关的代码路径如下:.linux_soruce/kernel/power/main.c. linux_soruce/kernel/power/suspend.c.linux_source/driver/base/power/main.c可以看到linux中,休眠主要分为以下三个主要步骤:1.冻结用户态进程和内核态任务;2.调用注册的设备的suspend 的回调函数;3.按照注册顺序休眠核心设备和使CPU进入休眠态。其中冻结进程是内核把进程列表中所有的进程的状态都

2021-09-23 11:20:15 417

原创 1.11.1、低功耗-wakeup events framework

1、SYSFS接口终端目录:/sys/kernel/debug/wakeup_sources调试可以参考:休眠调试篇为了方便查看系统的wakeup sources,此文件记录了系统的唤醒源的详细信息。name active_count event_count wakeup_count expire_count active_since total_time max_time .

2021-09-23 11:14:26 211

原创 1.9.3内核调试-休眠唤醒standby调试指南

休眠状态指的是一种系统低功耗运行状态。在此状态下,各种支持休眠模式的外围设备也都全部进入休眠模式,CPU挂起,所有用户态应用程序和内核态进程全部被冻结,内存处于自刷新模式。系统处于休眠状态会屏蔽所有除唤醒之外的所有命令,直到系统被某种原因唤醒才会解除此种状态。1、休眠锁节点/sys/kernel/debug/wakeup_sources打印出系统的锁,并可以看到其当前所处的状态:新增操作释放2、休眠唤醒次数查看节点/sys/kernel/debug/...

2021-09-23 10:53:38 394

原创 1.1.17、系统修改-Android系统永不休眠修改步骤

方式1frameworks/base/packages/SettingsProvider/res/values/defaults.xml<resources> <bool name="def_dim_screen">true</bool> <integer name="def_screen_off_timeout">2147483647</integer> <integer name="def_sleep..

2021-09-22 17:51:25 434

原创 2.12、系统修改-隐藏安卓系统的导航栏和状态栏

1.导航栏与状态栏首先看一下导航栏和状态栏位置:最上面是状态栏statusBar最下面是导航栏`'NavagationBar一、隐藏导航栏目录:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java注释掉内容: // For small-screen devices (read: phones) that lack hardware na.

2021-09-22 17:17:13 917

原创 1.1.4内核入门—指针

1.指针对于内存,我们可以简单地认为它就是大小相同、连续排布的格子,每一个格子的大小为一字节。为了更方便地找到某一个格子,我们通过对内存进行编号,通过编号来找到某一个具体的内存格子。这样的编号通常称之为内存地址,如果程序想要获取某一块内存存放的数据,必须通过内存地址定位,再取出对应内存的数据。 这样的编号通常称之为内存地址,如果程序想要获取某一块内存存放的数据,必须通过内存地址定位,再取出对应内存的数据.一个指针变量存储着另一块内存的起始地址,相较于直接寻址的方式,如果想要通过一个指针获取指...

2021-09-22 10:47:08 112

原创 2.1.7-2.1.8、系统修改-安卓系统去掉ADB打开时的确认框去除USB权限弹窗

Android默认开启USB调试且不弹授权对话框如下图所示,修改persist.sys.usb.config=mtp,adb,修改ro.adb.secure=0这里修改的是device目录下对应厂家和产品的脚本,如果需要统一修改可以去build/core/main.mk中对应修改。修改ro.adb.secure=1,就会打开USB调试确认弹框以下是参考参考RK3399去除USB权限弹窗现象:方法文件目录:frameworks/base/packages/..

2021-09-18 09:55:18 1463

原创 2.1.3系统修改-开机动画代码的添加

仅供常考开机动画添加frameworks/base/cmds/bootanimation/BootAnimation.hframeworks/base/cmds/bootanimation/BootAnimation.cpp1、threadLoop修改用来显示第三个开机画面的线程的初始化工作就执行完成后接下来,就会执行这个线程的主体函数,即BootAnimation类的成员函数threadLoop 。bool BootAnimation::threadLoop()...

2021-09-15 17:56:28 187

原创 1.1.3、内核入门-从内核的角度看外设芯片的驱动

1.芯片基本功能模块在驱动开发过程中我们最常接触的就是寄存器。内核与硬件联系紧密,但它本身属于软件,可以说是与硬件联系最紧密的软件。作为软件,与硬件沟通很多情况下都是通过寄存器实现的。寄存器按照功能不同一般可以分为三类:控制寄存器:可写,用来控制芯片的行为、工作方式等;。状态寄存器:可读,用来反映芯片当前的统计、异常等状态;数据寄存器:数据寄存器,可读,读取它们可以获得芯片产生的数据;每一份芯片数据手册中都应该有完整的寄存器列表和它们的描述,这是人们开发驱动过程中关心的重点。2.复位

2021-09-15 17:34:53 300

原创 1.1.2内核入门-高效的阅读Linux内核设备驱动

内核开发在很大程度上并不是重新造“轮子"的过程,而是深入理解并尽量复用现有的内核设计框架,然后参照相似的功能模块去添加或改写某项需要的功能。在对内核整体框架以及某些子系统融会贯通以后,我们才有可能站在巨人的肩膀上去改进框架本身,实现自主创新。如果过分强调不必要的“自主创新”,可能会让内核的可维护性变差,最终结果反而得不偿失。1.设备驱动入口模块的入口函数一般会使用module_init(modname_init)进行声明。#define module_init(x) __ini..

2021-09-15 17:09:28 106

原创 1.1.1内核入门-通过sysfs清楚了解设备的系统状况

1.sysfs的目的通过sysfs下面的文件和目录清楚的了解跑linux的嵌入式设备的系统状况2.sysfs目录介绍sysfs把连接在系统上的设备和总线组织成为一个分级的文件,他们可以由用户空间存取,向用户空间导出内核的数据结构以及他们的属性。sysfs的一个目的就是展示设备驱动模型中各组件的层次关系。其目录有:3.sysfs中要素的关系sysfs提供一种机制,是的可以显示的描述内核对象,对象属性及对象间关系。sysfs有两组接口,一组针对内核,用于将设备映射到文...

2021-09-15 16:00:11 140

原创 2.1.2系统修改-修改安卓系统的浏览器默认主页

android7.1:可以参考一下packages/apps/Browser2/res/values/strings.xml<!-- The default homepage. --> <string name="homepage_base" translatable="false"> https://www.google.com/webhp?client={CID}&amp;source=android-home</string> 修改

2021-09-15 14:59:43 327

原创 2.1.1系统修改-去掉顶部谷歌搜索栏

源码删除:QuickSearchBox源码:packages/apps/QuickSearchBox正确改法:不同android版本改动不一样,所以可以搜索一下build/target/product$ grep "QuickSearchBox" . -nr例如android7.1发现还是有,这说明不够干净文件:packages/apps/Launcher3/src/com/android/launcher3/Launcher.java--- a/src/...

2021-09-15 13:40:29 283

原创 1.RK3399平台学习前的一些简介

1.需要具备的基础知识和工具C++面向对象的思想:linux内核设备管理的核心思想就是面向对象思想,设备管理的基石是Kobject(对象)结构体,故我们只需要了解这个对象的思想即可2.学习顺序1.linux应用开发寄出篇:内核驱动开发,首先要了解各个驱动自己的属性和方法;2.内核设备树:掌握内核硬件HW配置;3.内核调试:掌握内核的调试手段;4.内核入门:了解内核中的一些基础知识;5.内核子系统篇:子系统相关学习;6.内核驱动外设篇:实战3.常用工具1.远..

2021-09-15 11:08:09 117

原创 framework 灯光系统 -- 电池灯源码分析

Android5.0 & 5.1分析Android系统中,灯光系统如何调用灯光服务、JNI、HAL等从而操控底层Linux驱动控制的led电池灯去闪烁或者亮不同颜色的灯来通知用户。详细调用过程:1. 首先Android系统加载后会执行init进程,然后加载SystemService.java系统服务SystemService.javaprivate void startCoreServices() { // Manages LEDs and display b...

2020-11-17 16:17:44 218

原创 9.Android 添加新模块

框图这里主要关注➕右下角部分 添加新模块即可。本章节详细解读了android新模块从驱动层、HAL层、framework层、APP层的流程。上面的图添加新模块部分可能会看不清,这里单独截取该部分,如下所示:这样就清晰多了。本章节主要描述了android系统从上到下添加一个模块的流程,因为仅针对流程,所以关于其使用的原理本部分不会涉及,但在binder以及其他章节中会有所涉及。1 添加驱动程序(源码见wd_hello_driver),添加流程如下:1.1 添加代...

2020-11-13 11:36:19 754

原创 1.整数数组 nums 和一个目标值 target

c版本1#include <stdio.h>#include <stdlib.h>#include <assert.h>/** 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。* 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。* 给定 nums = [2, 7, 11, 15], target = 9* 因为 nums[0] + nums[1] = ...

2020-11-13 11:26:35 1321

原创 第4课第2节_Java高级应用_反射_P

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译

2020-11-13 11:08:54 166

空空如也

空空如也

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

TA关注的人

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