自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (11)
  • 收藏
  • 关注

原创 高通平台GPU动态调频DCVS . 篇3 . 一个无法调频问题的解决过程

之所以会相对系统地总结GPU DCVS,是因为前段时间遇到一个GPU频率一直无法调节的问题1. 问题现象从 /sys/class/kgsl/kgsl-3d0/clock-mhz 获取GPU频率,结果一直维持在624MHz,该芯片的最高频率无论做场景切换还是轻重载都是624MHz2. 初步分析无论是CPU还是GPU一般出现频率固定无法调频的时候,可能性有governor设置成了user...

2019-07-26 15:13:48 4500 7

原创 高通平台GPU动态调频DCVS . 篇2 . Framework & Procedure

1. 高通平台 GPU DCVS架构GPU DCVS是基于Linux Devfreq来实现高通的kgsl(kernel-graphics-support-layer)作为devfreq devicemsm-adreno-tz 作为devfreq governor简单的架构如下如上图所示首先 KGSL 作为device,msm-adreno-tz 作为governor注册到dev...

2019-07-25 17:00:06 6625 3

原创 高通平台GPU动态调频DCVS . 篇1 . Interface

高通平台的GPU内核驱动架构趋于稳定,代码和接口都具备通用性,故分析整理出来以供快速参考高通平台GPU内核驱动框架全称是 Kernel-Graphics-Support-Layer KGSL1. KGSL kernel interfacekgsl驱动所暴露出来的GPU相关常规控制接口位于 /sys/class/kgsl/kgsl-3d0 路径下/sys/class/kgsl/kgsl-3d...

2019-07-25 16:29:23 9441

原创 Android系统功耗优化之Alarm - 从AlarmManager到Linux kernel

1 Overview对于功耗优化时长可以看到alarm唤醒频繁,或者alarm timer持锁时间过长的问题,对于这样的情况Android的各个版本也都有持续性的优化,对于alarm来说,简而言之都是加强管控,尽可能减少唤醒,集中批量处理。2 AlarmManagerAlarmManager提供接口供应用根据自己的需求,来设置alarm以及对应的处理方法frameworks/base/co...

2018-10-21 19:50:25 3278

原创 Android系统功耗优化之CPU - CPU功耗和频率的关系

现在的处理器都支持DVFS - 动态频率电压调整,我们都知道DVFS的设计是为了low power,那么CPU频率和功耗之间的关系如何,运行在相同频率处理A任务和B任务功耗就一样吗?同任务不同频率在某Android平台,在单线程运行dhrystone的情况下, 可以看到随着DMIPS的增加(其实也就是频率的增加),Power数据前期相对平缓,后面就变陡了,越高频率功耗增加的越多关于CPU功...

2018-10-08 18:58:27 6801

原创 Linux CPU 拓扑结构之调度域 | 调度组 - 以8核ARM big.Little架构处理器为例

CPU拓扑结构简介SMT Level 超线程处理器的一个核心MC Level 多核CPU的一个核心DIE Level 一个物理CPU的晶片(注意不是package,package是封装好了的,肉眼看到的CPU处理器)cpu最小级别的就是超线程处理器的一个smt核,次小的一级就是一个多核cpu的核,然后就是一个物理cpu封装,再往后就是cpu阵列,根据这些cpu级别的不同,Li...

2018-07-08 23:41:58 2879

翻译 [翻译] Load tracking in the scheduler - Linux 调度之负载追踪- 基于PELT

写在最前这篇翻译来自 https://lwn.net/Articles/639543/ 原文是April 15, 2015发表的,在此后的2015年7月份,PELT又进行了一些改进,主要是sched_avg的部分, 所以为了完整性,在译文的最后一节会补充上基于新的sched_avg结构的分析。背景The scheduler is an essential part of an o...

2018-04-13 18:31:35 1289

原创 【TIPS】Ubuntu安装 Visual Studio Code / VSCode

【代码】【TIPS】Ubuntu安装 Visual Studio Code / VSCode。

2023-12-12 15:45:39 318

原创 Ubuntu 使用 create_ap 开启 wifi 热点

1. create_ap 获取/安装git clone https://github.com/oblique/create_ap.gitcd create_apsudo make install2. 获取 wlan/wireless 名字$ ifconfigenp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.192.86.102 netmask 255.255.252.0

2021-03-03 15:20:18 4193 2

原创 [Linux] 编译模块出现 "./include/linux/kernel.h:6:20: fatal error: stdarg.h: No such file or directory" 错误

问题现象在ubuntu 编译一个第三方的驱动 .ko 时,遇到 “./include/linux/kernel.h:6:20: fatal error: stdarg.h: No such file or directory” 报错原因缺少的头文件gcc需要Makefile 如下obj-m := awusb.oKDIR_1 := /lib/modules/$(shell uname -...

2020-03-25 14:26:16 5967

原创 Android 快速获取App的包名和 Activity名字

1. 已安装的 APP假设这个app是安装到Android 设备上了, 以diskinfo这个app为例查找包名adb shell pm list packages这样会列出一大堆,检索一下会更清晰,一般包名都会包含app的名字adb shell pm list packages | grep diskinfo结果如下package:me.kuder.diskinfo查找 Ma...

2019-09-05 18:24:00 1395

原创 [Android] [Linux] 修改defconfig之后如何快速生成内核config文件

做Android bsp开发经常会遇到改了内核config需要快速验证的情况,如果用最简单的编译bootimage方式会很费时肯定存在更简单的方法以arm64位的芯片bsp包为例cd KERNEL_PATH$ export ARCH=arm64/*如果你是目标defconfig是 "arch/arm64/msm8150_defconfig" */$ make msm8150_defco...

2019-06-13 21:06:14 1722 1

原创 [Android] 编译出现 xxx is not clean, please run 'make mrproper'

在kernel目录进行过make menuconfig之后,再编译整包出现 xxx is not clean, please run 'make mrproper'报错但是根据提示在kernel路径下执行 make mrproper,依旧出现错误这时候去根据提示内容,去找相应的Makefile,看看设么条件下会报这样的错Makefile位于kernel的根目录下# prepare3 is ...

2019-06-13 20:37:35 1613 4

原创 Systrace分析游戏卡顿问题之王者荣耀CPU资源不足

写在最前在18年以前,王者荣耀这款游戏对手机性能的需求很高,只有少数旗舰处理器才能流畅60帧运行,主要原因是游戏本身绝大部分任务集中在一个叫UnityMain的线程中,这个重负载的线程常常会因为CPU没办法满足其性能需求,导致一帧的处理时间超出16ms,进而表现出帧率波动/掉帧。18年开始游戏方普及了多线程版本,也就是把原来的一个UnityMain拆分成了两个线程,对于CPU的最大性能需求降低...

2018-11-07 00:54:12 4968

原创 Linux内核通知链 使用和简析

1. 使用简述通知链表是一个函数链表,链表上的每一个节点都注册了一个处理函数。当该chain对应的事件发生时(call chain),链表上所有节点对应的函数就会被执行。定义1 定义notifier head 通知链是一个链表,需要有一个链表头,后续的元素就可以陆续添加到这个链表中去static RAW_NOTIFIER_HEAD(hello_chain);2 ...

2018-08-22 14:20:27 490

原创 Linux DEVFREQ - 通用DVFS Framework

概述DEVFREQ: generic DVFS framework with device-specific OPPs, devfreq是来自三星的MyungJoo Ham [email protected]一个具有OPPs的设备(Operating Performance Points)一般具有多个档位的频率和电压集合。因而系统就会面临需要从这些可调节档位中选择一个的问题。...

2018-08-13 13:21:26 5218

原创 Android O 绑定SurfaceFlinger到大核

Android O 绑定SurfaceFlinger到大核目前的平台是big.LITTLE 架构,遇到一个卡顿问题,怀疑和小核上中断过于频繁有关,所以想把SF绑定到大核看看首先top获取SurfaceFlinger的pid 707 system -2 -20 98M 24M 6.8M S 17.0 0.4 541:00.94 surfaceflinger 通...

2018-08-01 19:19:13 3512 1

翻译 Android系统-性能评估-2-了解systrace

systrace是一个分析Android性能问题的基础工具,但其本质上是其他某些工具的封装,包括:在host侧的封装atrace,在device端的可执行文件(用于控制用户空间的tracing和配置ftrace,即Linux内核中的主要跟踪机制)。Systrace使用atrace来enable tracing,然后读取ftrace的buffer,并且把它重新转换成HTML格式。(虽然较新的内核支持...

2018-07-24 02:05:00 1432

翻译 Android系统-性能评估-1-概述

在性能方面,有两项用户可见指标:可预测、可察觉的性能。界面是否掉帧或始终以 60 帧/秒的帧速率渲染?音频在没有软件工件或弹出的情况下会播放吗?用户在触摸屏幕后要多久显示屏上才会显示相应结果? 耗时操作所需的时间长短(如打开应用)。 前者比后者更显而易见。用户通常会注意到卡顿情况,但分辨不出 500 毫秒和 600 毫秒应用启动时间的差别,除非将两台设备并排进行对比。触摸延迟立刻就能被发现...

2018-07-23 02:09:57 1120

原创 Android开发技术周报

这是一个外部链接,记下来防止迷路Android开发技术周报

2018-07-23 00:09:19 846

转载 CRC校验的精彩介绍(A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS)

<br /> 水平有限,不敢翻译,亵渎了好文章<br />A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS<br />Contents:<br /> [Sub-ToC] for this document | Main [Table 'O Contents]1. Preface  1.1) About the Author & Copyright  1.2) Abstract2.

2018-07-08 23:53:47 3357 1

原创 Linux 内存碎片化检视之 buddy_info | extfrag_index | unusable_index

1. buddy_infobuddy info 描述了当前可用内存的分布情况# cat /proc/buddyinfo Node 0, zone DMA 4 4 3 3 3 3 2 0 1 1 2 Node 0, zone Normal 140 ...

2018-07-08 11:42:35 4916

原创 Ubuntu 搜狗输入法安装以及奔溃无法输入中文问题解决

安装下载地址https://pinyin.sogou.com/linux/?r=pinyin安装方法下载下来的deb文件双击就可以安装了,ubuntu12.04版本要稍微多几个步骤,可以参考下面链接 https://pinyin.sogou.com/linux/help.php 处理使用奔溃问题经常遇到的一种情况是,打字的过程中(大小写切换?),突然输入法就无法输入中...

2018-07-08 11:29:36 421

转载 Linux内存:内存管理的实质

转自: frank_seng  http://bbs.chinaunix.net/thread-2055231-1-1.html1. 内核初始化:    * 内核建立好内核页目录页表数据库,假设物理内存大小为len,则建立了[3G--3G+len]::[0--len]这样的虚地址vaddr和物理地址paddr的线性对应关系;    * 内核建立一个page数组,page数组和物

2011-11-25 10:17:04 491

转载 kthread_run() 和 kthread_create() 关系

最近发现在内核创建线程的时候经常会用到kthread_run()这样的一个调用。于是准备拿出来学习一下。首先看看它的定义之处才发现它是一个宏函数,而不是一个真正意义上的函数。在include/linux/Kthread.h里有/*** kthread_run - create

2011-09-15 15:39:37 4600

转载 lib和dll文件的区别和联系

什么是lib文件,lib和dll的关系如何 (2008-04-18 19:44:37)    (1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好

2011-09-08 14:56:25 483

转载 G-Sensor的一些概念,基于android

期天在家没有事情,一边翻译sdk中onSensorChanged 的解释,一遍摸索G1下onSensorChanged 第二个参数values的含义:总结如下,发完赶紧吃饭!public abstract void onAccuracyChanged (int

2011-09-05 19:30:36 2642 1

转载 DirectShow应用程序快速入门

摘要:该文介绍如何编写DirectShow应用程序,属于入门级文章。如果你感兴趣,可以来看看这些东西。欢迎到我的博客blog.csdn.net/suntaoznz看其他文章! 一环境设置... 1二 DirectShow编程简介... 1三播放文件例程... 3  一 环境设置该

2011-07-07 18:32:32 471

转载 EVC工程的移植

本文是针对作者本人的一个具体的移植项目,将碰到的所有问题列出来,并给出具体的解决方法。由于是一个具体的项目,因此不能把所有的EVC工程移植问题囊括进来。所以,在移植项目前,建议还是看看以下的文章:循序渐进:将 eMbedded Visual C++ 应用程序迁

2011-07-04 16:13:39 545

转载 WINCE硬件,底层到应用整个过程详解

<br />最近在业余时间整了个GPIO的驱动程序,并通过应用程序调用,最终实现通过应用程序调用GPIO的驱动,然后实现硬件上LED灯的亮与灭。这里将整个步骤记录在案,供菜鸟学习。<br />一:编写驱动程序<br />1.将硬件厂商提供的BSP包拷备到D:/WINCE500/PLATFORM下,如SMDK2440;在D:/WINCE500/PLATFORM/smdk2440/DRIVERS中建一个用于存放驱动程序的文件夹;建立相应文件,这里我命名为FlowLED,对应的文件名分别为:<br

2011-05-23 15:55:00 1504 1

转载 堆和栈的区别

<br />非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别<br />一、预备知识—程序的内存分配<br />一个由c/C++编译的程序占用的内存分为以下几个部分<br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。<br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。<br /

2011-05-19 17:02:00 440

原创 修复Ubuntu在更新时‘Requires installation of untrusted packages’ 问题

How to Fix ‘Requires installation of untrusted packages’ error in Ubuntu 10.10 Maverick MeerkatThis morning I tried to update my Ubuntu machine and got this error massage ‘Requires installation of unstrusted packages’ and couldn’t figure out why. I lat

2011-05-18 10:20:00 4495 2

转载 C++多线程内存管理

<br />  原文:http://yachang.wang.blog.163.com/blog/static/35551220200762753057335/<br />  假设有一个进程,创建了两个线程A、B,线程A在堆上分配了一块内存空间,通知传指针的方式在B中使用,使用完后释放块,这时就会出错,因为线程B不能释放线程A堆上的内存空间,一些网友对此也有一些看法。<br />      “有点经验可以告诉你,每个线程都有自己的堆栈,而它们共享进程的一个全局堆,NEW是在线程的局部堆上分配(实际上

2011-05-16 17:00:00 8005

原创 Windows CE: 通过Application实现对鼠标光标的隐藏和显示的控制

<br />平台FreeScale i.MX51<br /> <br />1. Define a global variable to determine if show the cursor<br /> <br />C:/WINCE600/PLATFORM/COMMON/SRC/SOC/COMMON_FSL_V2/IPUV3/DDRAW/ddipu.h<br /> <br />class DDIPU : public DDGPE<br /> <br />{<br /

2011-05-16 14:56:00 1362

原创 IsAPIReady和WaitForAPIReady

关于IsAPIReady:来自MSDN的诠释:This function indicates whether the specified application programming interface (API) set has been registered. This function uses a polling mechanism.BOOL IsAPIReady( DWORD hAPI);Parameters:hAPI[in] Handle to the specified A

2011-05-16 14:25:00 1799

转载 Translation Lookaside Buffer (TLB)

<br />原文地址:http://www.informit.com/articles/article.aspx?p=294.4 Translation Lookaside Buffer (TLB)<br />Every time the CPU accesses virtual memory, a virtual address must betranslated to the corresponding physical address. Conceptually, this translati

2011-04-29 17:29:00 1792

原创 详解I2CTransfer

The function I2CTransfer:This function performs one or more I2C read or write operations. pI2CTransferBlock contains a pointer tothe first of an array of I2C packets to be processed by the I2C. All the required information for the I2Coperations should be c

2011-04-21 10:45:00 5362

转载 Windows CE下流驱动的动态加载

Windows CE下流驱动的动态加载    我想很多WinCE的开发人员,尤其是刚入门并且做驱动开发的工程师,都曾碰到这样一个问题,要编写一个外围设备的驱动,拿最简单的GPIO驱动来说,编写驱动本身可能只花了一会儿功夫,可要把编译生成的DLL打包到先前做好的操作系统映像当中,最简单也得MakeImg一下,还要修改BIB文件、注册表文件,以让系统启动的时候就加载该驱动,所有工作都做完了,还得花几分钟下载整个操作系统到内存去运行,这也得要个好几分钟。能力强的人一次成功,不走回头路也就算了。如果驱动编写得有问题

2011-04-11 08:51:00 555

转载 CreateFile函数详解

CreateFile函数详解<br />CreateFile <br />The CreateFile function creates or opens the following objects and returns a handle that can be used to access<br />the object:<br /> files<br /> pipes<br /> mailslots<br /> communications resources<br /> di

2011-03-28 09:53:00 498

转载 DeviceIoControl的使用说明

<br />应用程序和驱动程序的通信过程是:应用程序使用CreateFile函数打开设备,然后用DeviceIoControl与驱动程序进行通信,包括读和写两种操作。还可以用ReadFile读数据用WriteFile写数据。操作完毕时用CloseHandle关闭设备。我们比较常用的就是用DeviceIoControl对设备进行读写操作。先看看DeviceIoControl是怎么定义的:<br />BOOL DeviceIoControl( HANDLE hDevice, DWORD dwIo

2011-03-21 11:10:00 734

Linux内存屏障

Linux内存屏障,CSDN 2015开发者大会上的优秀演讲

2015-11-17

系统程序员成长计划.pdf

系统程序员成长计划.pdf 好书,值得推荐

2015-11-17

ACProtect_脱壳机

ACProtect_脱壳机 ACProtect_脱壳机

2009-04-02

PEID 查壳工具 汉化版 (使用中,可靠)

PEID 查壳工具 汉化版 (使用中,可靠)

2009-04-02

经典词典 翻译软件打包(有道,灵格斯..)

经典词典 翻译软件打包(有道,灵格斯..) 正在使用 很好的

2009-03-16

MST-Player v2.0(用于lec课件播放)

MST-Player v2.0(用于lec课件播放)

2009-03-08

空空如也

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

TA关注的人

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