自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小二的博客

水滴石穿

  • 博客(29)
  • 资源 (32)
  • 收藏
  • 关注

转载 Android 的lowmemorykiller机制

转自:http://blog.csdn.net/u012440406/article/details/51960387最近在处理一些lowmemorykiller相关的问题,于是对lowmemorykiller机制作了一个简单的了解。在这里总结一下。首先,是lowmemorykiller的一些背景知识。众所周知,Andorid的实质是一个

2017-12-14 22:55:49 2159

原创 Linux内核内存压缩技术

为什么需要内存压缩说到压缩这个词,我们都可以想到是降低占用空间,使同样的空间可以存放更多的东西,如我们平时常用的压缩文件等。内存压缩同样也是为了节省内存。 内存无论是多大,总是不够用的(至少目前如此),而当系统内存紧张的时候,系统会将匿名页swap出去disk(flash).而这涉及到IO操作,这RAM操作速度不是一个数量级的。因此,如果频繁地做IO操作,不仅影响flash使用寿命,还严重影响系统

2017-12-02 22:59:01 6428

原创 git如何合并两个仓库

如何合并两个仓库假设现在有两个repo:repo1,repo2,每个repo中都已经有一堆提交记录了,现在想把repo2中的记录合并到repo1中,命令如下:cd repo1 git remote add other ../repo2 git fetch other git checkout -b repo2 other/master git checkout master git mer

2017-10-19 15:01:02 6755

原创 Linux输入子系统

为何需要input子系统Linux系统支持的许多设备,都是输入性的设备,如按键、触摸屏、键盘、鼠标。本质上都是一个个的字符设备驱动,Linux系统为这些设备统一管理实现了input子系统,方便驱动和应用的开发。input子系统软件架构linux输入子系统主要分三层:driver层,core层, event hander层。 Driver层根据core层提供的接口,向上报告发生的按键动作。然后cor

2017-10-16 22:22:33 314

原创 Linux并发与同步(二)RCU

概述RCU是Read-Copy-Update的缩写。于linux2.5版本开发期间加入并顺利被社区接纳。现在广泛应用于指针及内核链表的保护。RCU相对其它并发访问保护的锁,具体更好的性能,因为严格意义上来说,RCU并不是一个锁。但RCU对内存是有一定的开销的。为何需要RCU性能问题,无需获得锁,性能更好。读写线程可并发执行。RCU使用接口rcu_read_lock() //RCU读临界区开始

2017-10-15 15:43:01 710

原创 Linux电源管理(六)cpuhotplug

概述目前处理器大多是多核,4核和8核等。linux在初始化的时候会调用开启smp多核。最后,空闲的cpu会进入cpuidle状态。cpuhotplug,可以根据cpu负载的情况,自动开核,做到性能与功耗的平衡。实现原理定期采样计算cpu负载cpuhotplug线程这里描述是的cmp的情况,如果big.LITTLE情况还会有些差异。

2017-10-14 14:11:18 2947 1

原创 内存映射mmap

概述应用与设备驱动之间数据交互,很多时候都使用copy_to_user与copy_from_user。但如果在追求高性能的驱动上,这种拷贝显然不是最佳的做法。 Linux内核提供了一种内存映射的机制,它主要完成将设备的地址空间映射到用户空间或者直接使用用户空间中的地址,这样做的目的显然是为了提升系统性能。设备缓存与设备内存的概念设备缓存:由驱动管理的位于RAM中的一段内存区域。设备内存:设备所

2017-10-11 21:30:46 860

转载 图说“数字签名”与“数字证书”

今天,我读到一篇好文章。它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻译出来了。文中涉及的密码学基本知识,可以参见我以前的笔记。=======

2017-10-08 22:01:00 248

转载 ARM TrustZone技术简介(四)(TrustOS)

转自:http://blog.csdn.net/Alex___Zhao/article/details/77608018TrustZone技术在物理上可以把一个ARM处理器核分时复用为两个不同的处理器,在处理器的非安全部分运行的是标准的Linux系统,而在另外一侧运行的是安全强相关的功能。而由于ARM  TrustZone的硬件隔离作用,其相互之间的交互只能通过机器指令SMC来

2017-10-08 20:50:24 1233

转载 ARM TrustZone技术简介(三)(BL31 Secure Monitor简介)

转自:http://blog.csdn.net/Alex___Zhao/article/details/76794586在使用TrustZone技术的嵌入式设备当中,无法避免的需要解决从非安全侧切换到安全侧的问题,而为了完成这个切换,需要一个专用的进行非安全上下文和安全上下文切换的固件,这个固件一般我们称为arm trust firmware,在ARM官方维护的github中我

2017-10-08 20:48:59 3693

转载 ARM TrustZone技术简介(二)

转自:http://blog.csdn.net/Alex___Zhao/article/details/76695492对具有TrustZone的ARM处理器来说,为了保证运行其在EL3,安全侧和非安全侧的不同软件系统,其一般分为多个部分被bootloader分别进行加载运行,其流程在Linaro的Trust Firmware中有介绍,其基本流程如下图所示当

2017-10-08 20:47:19 1020

转载 ARM TrustZone技术简介(一)

转自:http://blog.csdn.net/Alex___Zhao/article/details/76647377有幸做过将近1年时间的TrustZone OS,这里对通用的TrustZone硬件技术做一点记录,来记录自己曾经工作过的领域。TrustZone是ARM处理器特有的一个安全特性,其简介可以在ARM的官方网站上找到https://ww

2017-10-08 20:45:29 5977

原创 Linux电源管理(五)thermal

thermal子系统概述thermal子系统是内核提供的温控管理框架,一套软件温度解决方案,配合ic内部温度传感器,对ic温度进行管控,保证系统稳定性。 thermal系统多用于对ic内部的重点发热模块的功能管控,如cpu、gpu。 thermal sensor驱动负责读取硬件温度sensor的温度,并传给thermal 子系统,thermal子系统将根据调控对象的温度,决定是否触发对应的冷却措

2017-10-07 22:39:07 11258

原创 Android访问硬件的方法

Android应用访问硬件的两种方法我们知道,Android应用由java编写,而java不能直接访问硬件,那么Android应用如何访问硬件? 一般有两个访问硬件的方法:JNI访问硬件访问服务JNI访问JAVA APP—>JNI_OnLoad()加载C库—->将JAVA三个地方法与C库函数进行关联并注册—->调用JAVA本地Native方法就可以访问C库的C接口——>进而访问硬件驱动中的o

2017-10-07 14:35:55 5182 1

转载 图解Android系统的启动过程

转自博客:http://ticktick.blog.51cto.com/823160/1659473看到网上一篇博客写Android启动流程,讲的还是比较清晰,这里就转载过来了,感谢前人的总结分享。学习任何软硬件系统,研究系统启动过程都是一种非常有效地起步手段,搞Android内核开发也不例外。网上有很多文章对Android启动相关代码进行分析和走读,大家可以先搜索阅读一下,我

2017-10-06 22:25:01 510

原创 Android调试方法(一)adb使用

adb简介ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备。主要用于Android调试。adb功能运行设备的shell(命令行)计算机和设备之间上传/下载文件将本地apk软件安装至模拟器或android设备常用命令查看设备adb devices 这个命令是查看当前连接的

2017-10-06 21:55:08 1102

原创 Linux电源管理(四)CPUFreq

CPUFreq简介CPUFreq是一种实时的电压和频率调节技术,也叫DVFS(Dynamic Voltage and Frequency Scaling)动态电压频率调节。为何需要CPUFreq随着技术的发展,CPU的频率越来越高,性能越来越好,芯片制造工艺也越来越先进。但高性能的同时也带来高发热。其实移动嵌入式设备并不需要时刻保持高性能。因此,需要一种机制,实现动态地调节频率和电压,以实现性能和功

2017-10-03 18:46:13 7674

原创 Linux电源管理(三)电源管理接口

概述Linux电源管理中,相当多的部分是在处理Hibernate、Suspend、Runtime PM等功能。而这些功能都基于一套相似的逻辑,即“Power management interface”。 该Interface的代码实现于“include/linux/pm.h”、”drivers/base/power/main.c”等文件中。 主要功能是:对下,定义Device PM相关的回调函数

2017-10-03 16:21:06 1127

原创 Linux电源管理(二)系统reboot/shutdown过程

概述计算机包括嵌入式设备,关机和重启是常见的两个操作。本文主要主要描述这两个动作背后和流程和实现。下机我们先看一下,linux支持的类似关机重启这样的命令的其它相关命令。/* * Commands accepted by the _reboot() system call. * * RESTART Restart system using default command and mod

2017-10-03 12:35:36 3040

原创 Linux电源管理(一)电源管理系统架构

概述Linux 电源管理非常复杂,牵扯到系统级的待机、频率电压变换、系统空闲时的处理以及每个设备驱动对于系统待机的支持和每个设备的运行时电源管理,可以说和系统中的每个设备驱动都息息相关。 对于消费电子产品来说,电源管理相当重要。因此,这部分工作往往在开发周期中占据相当大的比重,下图大体可以归纳为如下几类: 1. CPU 在运行时根据系统负载进行动态电压和频率变换的CPUFreq 2. CPU

2017-10-02 21:07:23 3783

原创 Linux内存管理之页面回收

概述有内存页面分配,自然就有内存页面回收。一种是主动释放内存,另一种是内核去回收内存页面。在linux内存充足时,内核会尽量多地使用内存作为文件缓存(page cache)从而提高系统性能,但当内存紧张时,文件缓存页面会被丢弃或回写到块设备中,然后释放出物理内存。当然这会在一定程度上影响系统的性能。Linux内核将很少使用到的内存换出去交换(swap)分区,以便释放内存,这个机制称为页交换(wapp

2017-10-02 20:06:34 958

原创 Linux内存管理之slab分配器

slab分配器的目的在内核中,经常会发生对有限的几种数据结构频繁的分配内存和回收内存,比如进程描述符struct task_struct,索引节点对象struct inode等等。相比4KB或者8KB的物理页而言,这些对象往往较小,例如进程描述符一般只有1.7KB左右,索引节点对象则更小。那么对于这种高频发生的小数据结构的内存分配和回收,是否有可能进行优化呢?计算机科学家Jeff Bonwick早已

2017-10-02 15:06:58 512

原创 Linux内存管理之物理页面分配

概述页面分配器是Linux内核内存管理中最基本的分配器,基于伙伴系统算法(buddy)和zone-base的设计理念。物理页面分配接口alloc_pagesalloc_pages接口最终会调用到__alloc_pages_nodemask。struct page *__alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order,

2017-10-02 14:34:29 860

原创 linux内存管理之页表

什么是页表页表就是用于将虚拟地址转换为物理地址的转换关系表。访问虚拟地址时,计算机通过页表找到对应的实际物理地址访问。为何需要多级页表目前在linux中采用4级页表,ARM32采用2级页表,ARM64采用4级页表。但linux是一个通用性的系统,当ARM32时2级页表也是使用linux的4级页表机制,只是将其它两级页表转换不做任何处理。 那么为什么需要多级页表呢?节省内存空间。二级页表可以在需要的

2017-10-01 21:50:00 2705

原创 linux调度之SMP负载均衡

SMP调度背景  在多处理器系统上,内核必须考虑好几个额外的问题,以确保良好的调度。CPU负荷必须尽可能公平地在所有处理器上共享。 进程与系统中某些处理器的亲合性(affinity)必须是可设置的。 内核必须是能够将进程从一个CPU迁移到另一个上。linux SMP调度就是将进程安排/迁移到合适的CPU中去,保持各CPU负载均衡的过程。如下图所示。SMP调度时机scheduler_tick

2017-09-24 17:19:02 3716

原创 Linux并发与同步(一)原子操作/spinlock/mutex

背景在linux内核和驱动代码中,需要对共享数据进行保护,防止共度资源被并发访问而发生数据覆盖,被访问数据不一致的情况.这些情况可能会造成系统不稳定,且很难跟踪调试.临界区: 访问和操作共享数据的代码段.临界资源: 共享的数据(静态局部变量,全局变量,buffer, 链表等).并发源:访问临界区的线程或执行路径.内核4种并发源:中断和异常 软中断和taskelt内核抢占多处理器并发执

2017-09-23 23:44:43 1152

原创 linux死锁检测与调试

linux死锁检测与调试什么是死锁D 状态死锁和 R 状态死锁soft lockup 和 hard lockuplinux内核死锁如何调试相关内核配置选项Linux检测死锁实现分析soft lockup检测原理hard lockup检测原理常见死锁错误如何避免死锁参考资料linux死锁检测与调试什么是死锁?  死锁是指多个进程(线程)因为长久等待已被其他进程占有的的资源而陷入阻

2017-09-20 21:56:21 4494

原创 Git学习(二)----Git分支

1.      git branch xxx创建一个新的分支2.      git checkout 切换到分支3.      git checkout -b新建并切换到该分支4.      git merge 合并分支5.      冲突的合并--当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。6.      git branch –d 删除本地

2016-02-23 21:34:50 208

原创 Git学习(一)-----Git基础

Git学习(一) 2016-02-221.      取得项目的git仓库1)  git init 对现有的某个项目开始用git管理,初始化后,项目目录下会出现一个.git文件夹。注意不要随便修改此文件夹。2)  git clone 对现有仓库的克隆,例如:git clone git://github.com/schacon/grit.git本地已经有了一个git源码的仓库。同样,

2016-02-22 22:31:47 263

Linux平台下Mini210S裸机程序开发指南.pdf

Linux平台下Mini210S裸机程序开发指南.pdf

2013-09-30

2012年华为校园招聘机试题及个人答案

2012年华为校园招聘机试题及个人答案 2012年华为校园招聘机试题及个人答案

2013-09-21

2013年华为校园招聘机试题及个人答案

2013年华为校园招聘机试题及个人答案 2013年华为校园招聘机试题及个人答案

2013-09-21

2014年华为校园招聘机试题及个人答案

2014年华为校园招聘机试题及个人答案 2014年华为校园招聘机试题及个人答案

2013-09-21

嵌入式Linux应用程序开发标准教程

华清远见 嵌入式Linux应用程序开发标准教程,很好很详细,学习Linux应用开发的可以参考一下。

2013-05-09

腾讯2013笔试题及答案pdf

腾讯2013笔试题及答案pdf

2013-04-22

运动会分数统计系统

自已写的运动会分数统计系统,对应于清华数据结构题集题目,用户交互友好,源码结构清晰

2013-04-01

国嵌视频配套ppt

国嵌视频配套ppt

2013-04-01

嵌入式学习路线图

嵌入式学习路线图,很好,学习资料还有链接

2013-04-01

200个原创电路分享

200个原创电路分享,包括各单片机最小系统等,分享参考

2012-09-01

高质量C编程指南—林锐.

C语言方面含金量很高的一本书,强烈推荐。

2012-09-01

STM32固件库使用手册的中文翻译版

STM32固件库使用手册的中文翻译版,由官方文件翻译而来

2012-09-01

零死角玩转stm32-系统篇

零死角玩转stm32-系统篇,野火教程,很详细很好

2012-09-01

零死角玩转stm32-中级篇

野火STM32详细PDF教程,很好很强大

2012-09-01

零死角玩转STM32初级篇

这个野火STM32教程,15万字详细教程,一步一步入门到精通STM32

2012-09-01

数字钟设计报告

该数字钟设计报告是数电课程设计,评的结果是优秀 供大家参考

2012-08-24

C 语言深度解剖

含金量很高的一本书 C 语言深度解剖 清晰

2012-08-24

RS485使用手册与指南

RS485使用手册与指南,很好很全面,有需要的可以参考一下。

2012-04-24

多路数据采集系统的设计(本科毕业论文)

多路数据采集系统的设计(本科毕业论文),有需要的同学可以参考一下。

2012-04-24

altium designer中unknow pin等的解决办法

altium designer中unknow pin等的解决办法

2012-01-08

proteus入门教程

proteus入门教程,对学习单片机,入门proteus有很大帮助

2011-06-04

谭浩强清华大学C语言程序设计讲义

全面的c语言程序设计课程讲义,版本是清华大学出版权的C程序语言设计,主编为谭浩强,讲解祥尽,是学习C语言的好资料

2011-04-17

串口调试助手V2.2

进行单片机与电脑通信的好用的一个串口调试助手,稳定,实用,是进行串口通信不可多得的好软件

2011-04-17

基于单片机的智能车设计(原理+论文+电路)

一份真实的全国电子设计作品,内含智能车设计的基本原理,电路和论文,内容详尽,对电子设计和智能车设计有极大的参考价值

2011-04-16

电子设计作品SSB对讲机设计

电子设计的好资料,详细地提供了对讲机的设计过程,电路,原理等,对电子设计有很大的参考价值

2011-04-16

51单片机课程设计秒表程序设计课件

一份详细教学单片机秒表程序设计的好课件,单片机设计的参考实用资料

2011-04-16

1602液晶使用说明

详细的1602液晶使用说明,把1602的结构详细进行了说明

2011-04-16

proteus常用元件中英文对照表介绍

好资源,一目了然,方便查询使用,是使用仿真软件的必备

2011-04-13

C++程序设计(清华大学出版)答案

很实用,全面解释习题答案,不可多得,一份很好的资料

2011-04-12

空空如也

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

TA关注的人

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