- 博客(99)
- 资源 (22)
- 问答 (1)
- 收藏
- 关注
原创 各种“挤牙膏式” 优化android 功耗
文章目录1、底电流调试(Rock Bottom Current Optimization)1.1校准RF1.2飞行模式1.3使用perf_defconfig1.4移除debugging APKs1.5把应用尽量删除1.6去掉CPU占用高的进程1.7手动移除所有可以移除的外设1.8移除驱动模块1.9配置不用的GPIO1.10检查power相关的NV items1.11排查GPIO、LDO、总线对于L...
2020-07-04 14:29:52 1997 1
原创 从Bugreport 解读 Android电量统计原理
文章目录一. 电量值的获取和计算二. 应用功耗的计算方法第一部分:App耗电量统计:processAppUsage()三. 功耗问题分析定位及优化应用商店中关于电池管理的应用做的极其绚烂,可耗电应用排行、剩余时间计算、关闭耗电程序以节省电量等功能是如何实现的,遇到功耗高的问题从哪些方面入手分析和定位,这里简要总结如下。一. 电量值的获取和计算首先解释下各软硬件耗电量的计算。假设设备(如WI...
2019-03-07 19:52:54 6044 4
原创 集成电路的功率和能耗(课程总结)
集成电路的功耗 —— 功率和能耗一、功率与能耗:系统观点1.一个处理器需要的最大功率是多少2.持续功耗是多少3.能耗与能耗效率二、微处理器内部的能耗与功率1.动态功耗基本公式2.降功耗3.例题4.工艺改变,开关频率导致功耗高5.提高能耗效率(1)以逸待劳(2)动态电压频率调整(DVFS)(3)针对典型场景设计(4)超频6.静态功率(泄露电流)7.现代功耗评价指标
2018-11-18 23:41:31 8368
转载 编译和运行dhrystone 和stressapp
https://blog.csdn.net/weixin_46185705/article/details/128645813
2024-03-06 11:31:38 197
转载 Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别【转】
我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。 那么,在内核空间中如何申请内存呢?一般我们会用到 kmalloc()、kzalloc()、vmalloc() 等,下面我们介绍一下这些函数的使用以及它们之间的区别。...
2022-06-05 19:19:43 281
原创 Linux 的中断
文章目录中断概念和分类Linux 中断处理程序架构Linux 中断编程申请和释放中断使能和屏蔽中断底半部机制1. tasklet2.工作队列3.软中断4. threaded irq中断概念和分类中断是指 CPU 在执行程序的过程中,出现了某些突发事件急待处理, CPU 必须暂停当前程序的执行,转去处理突发事件,处理完毕后又返回原程序被中断的位置继续执行。根据中断的来源,中断可分为内部中断和外部中断,内部中断的中断源来自 CPU 内部(软件中断指令、溢出、除法错误等,例如,操作系统从用户态切换到内核态
2022-05-30 00:32:39 8153
原创 Linux 阻塞和非阻塞I/O
阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进人睡眠状态,被从调度器的运荷队列移走,直到等待的条件被满足。非阻塞操作的进程在不能进行设备操作时,并不挂起,它要么放弃,要么不停地查询,直至可以进行操作为止。在阻塞访问时,不能获取资源的进程将进人休眠,它将 CPU 资源“礼让”给其他进程。因为阻塞的进程会进入休眠状态,所以必须确保有个地方能够唤醒休眠的进程,否则,进程就真的“寿终正寝”了。唤醒进程的地方最大可能发生在中断里面,因为在硬件资源获得的同
2022-05-25 17:12:47 824
原创 输入设备驱动子系统
输入设备驱动输入设备(如按键、键盘、触摸屏、鼠标等)是典型的字符设备。工作机理 是底层在按键、触摸等动作发送时产生一个中断(或驱动通过 Timer 定时查询),然后 CPU 通过 SPI 、 I2C 或外部存储器总线读取键值、坐标等数据,并将它们放人一个缓冲区,字符设备驱动管理该缓冲区,而驱动的 read() 接口让用户可以读取键值、坐标等数据。显然,在这些工作中,只是中断、读键值/坐标值是与设备相关的,而输入事件的缓冲区管理以及字符设备驱动的 file operations 接口则对输入设备是通用的
2022-05-22 19:19:25 265
原创 Linux 驱动的软件架构
Linux 驱动的软件架构Linux 设备驱动非常重视软件的可用性和跨平台能力。1. Linux 设备和驱动的分离把设备端的信息从驱动里剥离出来,让驱动以某种标准化的方法拿到这些信息。即Linux的总线、设备和驱动模型,总线负责匹配设备和驱动,驱动以标准的途径拿到板级信息。2. Linux 驱动的分层如输入子系统,提炼一个Input的核心层,把Linux 接口和整个input事件的汇报机制都实现在这里。3. Linux 设备驱动的主机、外设驱动分离主机控制器驱动不关心外设,外设驱动也不关心
2022-05-21 18:16:55 954
原创 基于platform_driver 实现的misc 杂项设备
有些设备不像Input/rtc/framebuffer/tty等具体设备有归属类型可以套用框架,这些设备都叫杂项misc 设备。在misc_init()确定了miscdevice 的主设备号固定是10,次设备号在注册misc 可自定义,也可以随意分配。
2022-05-20 20:38:46 310
原创 Linux 设备驱动的并发控
并发和竞态编译乱序和执行乱序并发控制机制中断屏蔽原子操作整型原子操作位原子操作自旋锁自旋锁的使用读写自旋锁顺序锁读-复制-更新信号量互斥体
2022-05-19 13:25:40 424
原创 【斯坦福公开课-机器学习】1.机器学习的动机和应用(吴恩达 Andrew Ng)
0三个目标0先修课程要求基本工具基本资源1-网址2-邮箱3-本系列课程链接1机器学习的定义1-1非正式定义1-2正式的定义2监督学习Supervised Learning2-1回归问题连续拟合线预测房子价格2-2分类问题离散数据恶性和良性肿瘤3无监督学习Unsupervised Learing4强化学习Reinforcement Learning其他更
2022-05-19 01:14:21 881 1
原创 【斯坦福公开课-机器学习】2.监督学习应用-梯度下降(吴恩达 Andrew Ng)
1线性代数linear algebra1-1 符号Notation1-2 例子房价预测1-3 假设函数hypothesis1-3-1 例子中的假设函数1-3-2 例子中的假设函数的参数1-3-3 用线性代数-非齐次方程解释参数1-4 求值最小化算法1-4-1 梯度下降算法gradient descent algorithm1-普通梯度下降算法2-批梯度下降算法batch g
2022-05-19 01:11:53 292
转载 ARM Cortex-A73 Power management
The Cortex-A73 processor provides mechanisms and support to control both dynamic and static powerdissipation.文章目录Power domainsPower modesPower domainsThe Cortex-A73 processor can support multiple power domains. Each power domain has four possiblestate
2021-03-10 00:08:36 382
转载 Linux时间子系统专题汇总
关于Linux时间子系统有两个系列文章讲的非常好,分别是WowoTech和DroidPhone.还有两本书分别是介绍:Linux用户空间时间子系统《Linux/UNIX系统编程手册》的第10章 时间和第23章 定时器与休眠Linux内核时间子系统《深入Linux内核架构》的第15章 时间管理。《Linux/Unix系统编程手册》 时间子系统 《深入Linux内核架构》时间子系统Wowo...
2021-01-23 15:16:51 621
转载 Linux cpuidle framework(1)_概述和软件架构 -- wowo
文章目录1. 前言2. 功能概述3. 软件架构1)kernel schedule模块2)cpuidle core3)cpuidle drivers4)cpuidle governors4. 软件流程1. 前言在计算机系统中,CPU的功能是执行程序,总结起来就是我们在教科书上学到的:取指、译码、执行。那么问题来了,如果没有程序要执行,CPU要怎么办?也许您会说,停掉就是了啊。确实,是要停掉,但何...
2020-07-04 13:37:42 703
原创 healthd log 解读
文章目录healthd loglog打印来源log数据来源power_supply实现参考healthd logandroid kernel log中会打印出如下healthd log,这些log是什么意思?来自哪里?这篇文章为你解读。<12>[ 191.726280] .(4)[418:health@2.0-serv]healthd: battery l=4 v=3575 t=30.0 h=2 st=3 c=-248 fc=2946000 cc=1 chg=<12>[
2020-05-28 21:15:48 7658 1
转载 Linux电源管理(6)_Generic PM之Suspend功能【重磅文章】-- wowo
文章目录1. 前言2. Suspend功能有关的代码分布1)PM Core2)Device PM3)Platform dependent PM3. suspend&resume过程概述4. 代码分析4.1 suspend入口4.2 pm_suspend & enter_state4.3 suspend_prepare4.4 suspend_devices_and_enter4.5 ...
2019-10-28 22:49:02 1003
转载 Linux电源管理(1)_整体架构 -- wowo
1. 前言在这个世界中,任何系统的运转都需要能量。如树木依靠光能生长,如马儿依靠食物奔跑,如计算机系统依靠电能运行。而能量的获取是有成本的,因此如果能在保证系统运转的基础上,尽量节省对能量的消耗,就会大大提升该系统的生存竞争力。这方面,大自然已经做的很好了,如植物的落叶,如动物的冬眠Hibernate,等等。而在计算机的世界里(这里以运行Linux OS的嵌入式系统为例),称作电源管理(Powe...
2019-10-28 19:36:22 1572
原创 从基本理解到深入探究 Linux动态频率调节系统cpufreq
文章目录基本理解cpufreq深入探究cpufreq2. 软件架构3. cpufreq_policy4. cpufreq_governor5. cpufreq_driver6. cpufreq notifiers核心(core)架构与API1. CPUFreq子系统的初始化2. 注册cpufreq_governor3. 注册一个cpufreq_driver驱动4. 为每个cpu建立频率调整策略(p...
2019-10-26 02:32:14 2367 5
原创 在ubuntu系统运行linux内核相关函数demo
文章目录0. 概述1. 代码目录结构1.1 hello.c1.2 Makefile2. 操作过程2.1 make 编译模块2.2 生成文件2.3 安装模块2.4 卸载模块2.5 清除生成文件0. 概述我们编译linux驱动程序的函数代码都是Linux内核的函数,我们测试内核函数不能直接在用户层运行,需要借助ubuntu系统把内核函数放在模块,以模块形式插入ubuntu系统运行测试。1. 代码...
2019-02-25 17:00:22 907
原创 从基本理解到深入探究 Linux kernel 通知链(notifier chain)
文章目录基本理解Linux kernel 事件通知链深入探究Linux kernel 事件通知链基本理解Linux kernel 事件通知链linux/drivers/video/fb_notify.c一般人会使用这个几个接口就行了,若不想放弃请看下面深入探究Linux kernel 事件通知链。深入探究Linux kernel 事件通知链https://blog.csdn.ne...
2019-01-25 16:02:21 6632 2
原创 从基本理解到深入探究 Linux kernel container_of 宏
基本理解container_of 宏container_of,顾名思义就是某某某的容器,也就是说某某某成员变量所在的结构体是谁。在这里插入代码片一般人会使用这个宏接口就行了,若不想放弃请看下面深入探究container_of 宏。深入探究container_of 宏container_of 宏 版本一在这里插入代码片container_of 宏 版本二在这里插入代码片con...
2019-01-20 16:19:55 1282 1
原创 《计算机体系结构:量化研究方法》5th 学习笔记
本书的目的权衡:成本-性能-功耗新平台:个人移动设备和仓库级计算机新体系结构:多核和GPU关于第五版两个极端:以移动电话和平板电脑到的个人移动设备PMD 为客户端,以提供云计算的仓库级计算机为服务器另一条主线:数据级并行DLP(许多数据项允许同时操作),任务级并行TLP(可以独立运行并很多程度上并行)指令级并行ILP向量体系结构和图像处理器GPU线程级并行仓库级计...
2018-11-18 23:32:33 5602 2
转载 Android Source 文档(微调-电耗-1概览)感谢Google.cn,附链接。
Android 官方网站是:https://www.android.com/其下的开发者网站是:https://developer.android.com/其下的源代码文档网站是:https://source.android.com/我相信作为正当上网的网民应该是打不开上面的网址的,后来在中国开通了google.cn,可以用了谷歌翻译(https://translate.google.c
2018-01-17 11:30:16 898
原创 信号量:整型、记录型信号量以及利用信号量实现进程互斥和前驱关系
整型信号量记录型信号量利用信号量实现同步利用信号量实现进程互斥利用信号量实现前驱关系分析进程同步和互斥问题的方法步骤信号量机构是一种功能较强的机制,可用来解决互斥与同步的问题,它只能被两个标准的原语wait(S)和signal(S)来访问,也可以记为“P操作”和“V操作”。原语是指完成某种功能且不被分割不被中断执行的操作序列,通常可由硬件来实现完成不被分割执行特性的功能。如前述的“Tes
2017-11-30 17:50:06 5376 2
原创 翻转链表算法和实现
写个翻转链表算法,刚开始想到一个不错的思路。这个思路运行效率不低,时间复杂度为O(n);可以不用分配额外的节点空间,空间复杂度为O(0)。现在把思路整理一下,并实现代码,测试运行结果。
2017-11-02 12:39:53 1935
原创 中断和异常的概念
中断Interruption 异常Exception在操作系统中引入核心态和用户态这两种工作状态后,就需要考虑这两种状态之间如何切换。操作系统内核工作在核心态,而用户程序工作在用户态。但系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能。因此,需要在核心态建立一些“门”,实现从用户态进入核心态。在实际操作系统中,CPU运行上层程序时唯一能进入这些“门”的途径就是通过中断或异常。
2017-11-01 20:43:08 9868
原创 Makefile和Kconfig配置项目——Input子系统fingerprint
RTFSC – Read The Fucking Source Code Fucking在这里难道完全就是语气词?当然不是这么肤浅。 RTFSC 一词 生动形象的体现了阅读源代码的艰难和重要性。 Linux的鼻祖Linus Torvalds在回答有人提出的Minix的一个问题时,所说的第一句话就是”Read The Fucking Source Code”,这就是RTFSC的来由。
2017-10-30 16:55:48 982
原创 结构体struct、枚举enum、联合体union、位字段、自定义类型typedef、字节对齐
结构体struct1 结构体的基本知识2 结构体与函数3 结构体数组4 自引用结构体枚举变量enum联合体union位字段1 一般的方法定义屏蔽吗2 用位字段来定义屏蔽吗自定义类型typedef字节对齐pragma pachx 按x个字节对齐1.结构体struct1.1 结构体的基本知识#include <stdio.h>struct point{ int x
2017-10-24 21:57:15 2422
原创 C语言内存分配管理常见bug
标准C库提供了4个内存管理函数:malloc、calloc、realloc和free。bug1调用free释放p指向的内存块之后,p就是一个悬挂指针——指向逻辑上不存在的内存的指针。如果引用这个悬挂指针,会导致不可预见的错误。ElemType* p = (ElemType*)malloc(sizeof(ElemType) * NUM);...free(p);// p = NULL;...*p
2017-10-24 21:55:25 1117
原创 C语言的静态库与共享库
1库的概念2静态库2-1 静态库的概念2-2 静态库的创建2-2-1 静态库创建的命令2-2-2 静态库创建的准备工作2-2-3 创建静态库的例子2-3 静态库的使用2-3-1 静态库使用的命令2-3-2 静态库使用的例子3共享库动态链接库3-1 共享库的概念3-2 共享库的创建3-2-1 共享库的创建命令3-2-2 共享库的创建例子3-3 共享库的使用3-3-1 共
2017-10-24 21:51:30 5217 1
原创 C语言编译流程
编译流程图示编译各阶段命令2-1预处理阶段2-2 编译阶段2-3 汇编阶段2-4 链接阶段1.编译流程图示我们在Linux环境下编译单个C文件时,最简单的方法是输入一条命令gcc hello.c就可以生成默认的可执行文件a.out,展开该命令可以看到实际流程如下。 (编译命令参数请看 link )预处理阶段 -&amp;gt; 编译阶段 -&amp;gt; 汇编阶段 -&amp;gt; 链接阶段2.编译各阶段命令预处理阶段编
2017-10-24 15:14:56 1068
原创 gdb使用手册
设置断点和恢复命令常见命令高级命令查看源代码相关命令设置工作环境相关命令查看运行数据相关命令gdb core 使用找段错误gcc -g [option] [file]gdb 可执行文件设置断点和恢复命令1.常见命令l(list):查看载入的文件代码,如:l 10,l main;b(break):设置断点,如:b 10,b main;info b:查看断点信息;r(run):从
2017-10-22 11:59:05 1489 1
原创 gcc使用手册
gcc [options] [filename]一般options-c :只编译不链接,生成目标文件.o;-S :只编译不汇编,生成汇编码;-E :只预处理;-g :生成调试信息;-o file:生成目标文件.o或可执行文件;-v:查看gcc版本;--std=name //name: c89, c90, c99, c1x, c11;-l dir 头文件;例子1gcc -o bin/he
2017-10-22 11:57:48 1971
原创 学习IIC(I2C)原理
由于我本科专业是网络工程的,对代码比较敏感些,而对硬件相关原理比较陌生,现在来补回来中。。。**注意SDA和SCL两根总线需要上拉,使总线处于空闲状态。**
2017-10-17 19:01:14 5550
原创 Android系统各种稳定性问题所需要的log
Stability Type Log Requirement Catch Way 1.Crash Full crash dump 2.SystemReboot系统启动 Logcat, kmesg, tomestone 如下:1.Logcat logs(main, events, radio) 2.Dmesg/kernel logs 3.bugreport and
2017-09-28 13:14:07 2081
原创 抓log的各种方法和命令
单个c文件产生的logtest1adb rootadb shell "echo -n 'file mdss_dsi_panel.c +p' &gt; /sys/kernel/debug/dynamic_debug/control" cat /proc/kmsgcat /dev/kmsg |grep mdss_dsi_panel_bklt_dcs test2a...
2017-09-28 10:11:25 17681
原创 【编译错误解决方案】提示:“make mrproper”
【编译错误提示】当你不小心在kernel目录运行make编译命令,会出现一个棘手的问题:【解决思路过程】按提示先运行命令“make mrproper”,或者删除out目录,再编译,这也是无济于事的。 我们可以根据错误的输出在当前目录(.)递归(-r)搜索文本“make mrproper”,并显示行号(-n)。在./Makefile文件有一句和错误输出信息一致。 命令:grep –rn “make
2017-09-27 21:44:19 4516 1
原创 【ARM】Linux驱动移植
1驱动模块移植过程1模块的第一种编译方法改kconfig2模块的第二种编译方法Makefile2Linux驱动原理0从哪里切入1什么是注册2register_chrdev提交哪些数据21设备号为什么是23122设备名随便给23文件操作结构体怎么设置什么是THIS_MODULEOpencloseread这些都好理解3register_chrdev返回什么31 简洁而高效的go
2017-06-06 21:59:09 8927 1
类似“极乐净土”代码字符做视频动画的c语言源码 BadApple.rar
2020-10-17
linux-kernel-3.18.48
2017-10-30
apache-maven-3.3.9-bin.tar.gz
2016-06-30
alibaba-rocketmq-3.2.6
2016-06-30
tair-2.3.tar.gz
2016-06-30
4四阶龙格库塔公式推导(惠州学院13网络工程吴成兵)
2015-12-25
思科网络技术学院教程(路由协议和概念)
2014-08-24
网络安全基础:应用与标准(第4版) 斯托林斯(William Stallings) (作者), 白国强 (译者), 等 (译者)
2014-08-24
具体数学英文第二版
2014-08-17
ImportError: No module named pxssh
2017-02-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人