自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

知了112的专栏

记录每一步~

  • 博客(251)
  • 收藏
  • 关注

原创 Android ANR

1, Android ANR的概念ANR,是“Application Not Responding”的缩写,即“应用程序无响应”。在Android中,ActivityManagerService(简称AMS)和WindowManagerService(简称WMS)会监测应用程序的响应时间,如果应用程序主线程(即UI线程)在超时时间内对输入事件没有处理完毕,或者对特定操作没有执行完毕,就会出现A

2015-08-09 14:54:36 692 1

原创 linux下打patch

How to apply patch: diff -uN test_old test_new > test.patch    -r参数是连目录diff patch -p0 test.patch

2015-08-09 14:51:27 676

原创 trustzone技术

1,trustzone概念每个物理的处理器核提供两个虚拟核,一个是非安全核(Non-secure, NS),另一个是安全核(Secure, S),arm体系保证了很多硬件资源都是双份的,每个虚拟核独享自己的那份资源,大大简化了软件设计。在这二者之间切换的机制叫做monitor模式。NS核只能访问NS的系统资源,而安全核能访问所有资源。普通世界的软件可以使用SMC指令或者通过硬件异常机制的一个子

2015-08-09 14:47:30 1302

原创 linux SMP系统学习笔记

一,一个cpu在另外一个cpu上运行指定的函数int smp_call_function_single(int cpu, smp_call_func_t func, void *info, int wait)smp_call_function_single()函数,在一个指导的cpu上运行一个函数。 } else {

2015-08-09 14:42:50 8133 1

原创 Linux Per-cpu变量

1,Linux per-cpu变量的作用当创建一个per-CPU变量时,系统中的每个处理器都会获得它自己对这个变量的拷贝(副本).存取per-CPU变量时几乎不需要加锁,因为每个处理器使用的都是它自己的拷贝2,Linux per-cpu变量的使用在编译的时候声明一个per-cpu变量编译期间创建一个per-CPU变量: DEFINE_PER_CPU(in

2015-08-09 14:14:37 1801

原创 [Linux内存]页缓存和块缓存

1, 内核为设备提供了两种通用的缓存方案:a, 页缓存(page cache)b, 块缓存2,内核管理页缓存所用的数据结构内核通过基数树(radix tree)来管理页缓存的,3,内核如何回写内存中修改的数据到物理设备a, 内核的守护进程在后台运行,为pdflush,这些守护进程周期性激活,b, pdflush的第二种运作模式是:如果缓存中修改的数据项目

2015-08-01 17:42:25 3496

原创 linux页表pgd的含义

pgdPGD: Page Global DirectoryLinux系统中每个进程对应用户空间的pgd是不一样的,但是linux内核 的pgd是一样的。当创建一个新的进程时,都要为新进程创建一个新的页面目录PGD,并从内核的页面目录swapper_pg_dir中复制内核区间页面目录项至新建进程页面目录PGD的相应位置,具体过程如下:do_fork() --> cop

2015-07-18 15:23:40 8900

转载 linux proc文件系统节点

8,/proc/pid>/ 目录下各个文件的含义,以com.android.chrome为例cmdline:   com.android.chromeenviron:  这是个比较有用的文件,里面记录了当前进程的一些环境变量exe:       这个就是气这个进程的执行文件,bin文件fd目录:   该目录下记录的是该进程打开的所有文件的文件描述符limit

2015-07-18 15:21:49 1146

转载 匿名内存

1,匿名内存的概念匿名内存是指那些在文件系统里没有相对应的”储备文件“的那些内存,堆和栈空间的内存都属于匿名内存。匿名内存的用途:当一个程序很久没有运行的时候,需要要将程序占用的堆 栈交换到swap分区,而程序打开的文件则不需要放到swap分区,因为打开的文件直接可以放到其文件系统,swap分区还包括堆栈中的一些状态和变量数据等2,A

2015-07-18 15:19:46 2861

原创 [Linux中断]中断数据结构以及ARM处理中断流程

1,中断相关的数据结构 在linux kernel中,对于每一个外设的IRQ都用struct irq_desc来描述,我们称之中断描述符(struct irq_desc)在linux kernel中,使用struct irq_desc来描述一个外设的中断,我们称之中断描述符,具体代码如下:http://www.wowotech.net/irq_subsystem/irq_han

2015-07-18 15:13:25 636

转载 Linux Zram的概念

linux zram技术 zram就是在发生swap事件的时候,不要把置换的页面置换到外部存储中,直接置换到一块内存中压缩起来,这样发生swap事件的时候所花费的时间就是压缩和解压的时间,这样可以大大提高性能。ZRAM是以块设备的形式注册进内核的,在高通平台其文件路径是:LINUX/android/kernel/drivers/staging/zram/zram_drv.c

2015-07-18 15:08:19 2141

转载 Linux Cgroups概念

以下转自:linux cgroupCgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。Cgroup的相关概念1.任务(task)。在cgroups中,任务就是系统的一个进程。2.控制族群(control g

2015-07-18 15:06:21 632

转载 cpu hotplug的流程

以下内容参考: http://loda.hala01.com/2011/08/android-筆記-linux-kernel-smp-symmetric-multi-processors-開機流程解析-part3-linux-多核心啟動流/1,cpu hotplug机制Linux Kernel支援CPU hotplug机制,并可透过全域变数cpu_hotplug_disabled决定处理器

2015-07-18 14:51:06 9055

转载 [Linux同步]读写信号量

以下内容转自: 信号量一,信号量和自旋锁的区别信号量与自旋锁有一定的区别,信号量在无法得到资源时,内核线程处于睡眠阻塞状态,而自旋锁处于忙等待状态。因此,如果资源被占用时间很短时,使用自旋锁较好,因为它可节约调度时间。如果资源被占用的时间较长,使用信号量较好。二,信号量相关的API信号量的相关API函数定义功能说明sema_ini

2015-07-05 08:27:27 615

原创 debug相关--其它

1,spin lock相关的debug方法spin lock原理linux 内核中Spin lock工作原理,当某一个线程持有lock的时候next值加1,释放锁的时候owner值加1,

2015-05-10 10:35:12 463

转载 [Linux内存]slub分配器学习笔记(一)--基本概念

slub分频器学习笔记slub分配器(一)---概述1,基本原理以及重要的数据结构struct kmem_cacheslub把内存分组管理,每个组分别包含2^3、2^4、...2^11个字节,在4K页大小的默认情况下,另外还有两个特殊的组,分别是96B和192B,共11组。每一个组都是用一个kmalloc_cache[]数组表示的。每个数组元素对应一种大小的内存,可以把一个km

2015-05-10 10:22:16 657

转载 [linux]进程(五)——进程调度(实时进程调度)

点击打开链接1,实时进程和普通进程调度的差别实时进程需要严格按照优先级的顺序执行,比如在八核平台上,必须是优先级最高的八个进程得到调度,如果此时八个优先级最高的进程都在某一个cpu的rt队列上,那么此时的调度就会涉及到了进程在不同cpu的迁移。2,实时调度算法概述该实时调度器主要为了解决以下四种情况:(1). 在唤醒任务时,待唤醒的任务放置到哪个运行队列

2015-05-10 10:11:00 2474

转载 linux设备树

linux设备树1,DTS (device tree source).dts文件是一种ASCII 文本格式的Device Tree描述,此文本格式非常人性化,适合人类的阅读习惯。基本上,在ARM Linux在,一个.dts文件对应一个ARM的machine,一般放置在内核的arch/arm/boot/dts/目录。由于一个SoC可能对应多个machine(一个SoC可以对应多个产品和电路板

2015-05-10 09:27:04 537

原创 git常用命令学习

1,使用git blame命令可以很容易找出罪魁祸首。这个命令可以将文件中的每一行的作者、最新的变更提交和提交时间展示出来。git blame [file_name]2,

2015-05-10 09:14:52 428

转载 [Linux内存]slab分配器学习笔记(三)--实现

1,分配对象cache_grow用于缓存的增长,它会从伙伴系统获取内存。其流程如图所示:2,释放对象:

2015-04-19 16:09:43 626

转载 CPU CACHE学习

点击打开链接wiki1,CPU CACHE的概念缓存块(Cache Block\Cache Line): 每个缓存块存储具有连续内存地址的若干个存储单元。在32位计算机上这通常是一个字(word),即四个字节对应每个cache line,都有这样一个结构data bolck存放的是缓存行中所保存的就是从主存取过来的数据,tag表示的是数据

2015-04-19 12:54:03 1269

原创 [Debug]Kernel panic学习笔记(三)——常见分析

1,Poison overwritten点击打开链接2,具体backtrace的分析1. 11, pgd = c39d8000 2. [00000000] *pgd=339cf031, *pte=00000000, *ppte=00000000 3. Internal error: Oops: 817 [#1]  4. last sysf

2015-04-03 22:37:18 1759

原创 ARM-64学习(一)

1,ARM-64学习New 64-bit general purpose registers(X0-X30), 32-bit(w0-w30)AArch64 introduce the “zero” register,  XZR and WZR(reads as 0,writes ignored)Separate link registers(X30 and ELR_EL

2015-04-03 22:23:42 1527

原创 ARM-32学习(一)

1, ARM modeARM cores are divided in lastest versions to three main lines:§  Cortex-M cores, used for really small devices, usually with on-chip memory and simpler operations§  Cortex-R

2015-04-03 22:20:37 573

原创 Trace32相关

1, Trace32的配置步骤当拿到trace32的安装包后找到bin目录下的t32start.exe可执行文件,打开该文件然后配置(是要进行GDB调试还是在线调试ARM板子等等)2,Trace32的相关命令Trace32是不区分大小写的,所以以下命令字母大小写都可以。查看当前的栈帧: f 命令查看某一个内存地址对应的值: d.dump  %address

2015-04-03 22:10:29 9454

原创 一些脚本

shell@ss:/ $ while truewhile true> dodo> lsls> sleep 10sleep 10> donedone

2015-03-20 21:55:16 497

原创 [Debug]Kernel panic学习笔记(二)

1,发生kernel panic后相关的调试方法点击打开链接点击打开链接example:[] el1_irq+0x68  其中:ffffffc0002035a8 表示函数地址,+0x68表示的是偏移。2, 如何分析linux的dump文件3,ARM各个寄存器的相关含义pc 程序计数器, 指向当前指令的下条指令的地址lr 链接

2015-03-20 21:52:28 1189

原创 watchdog相关

1,watchdog原理Watchdog bark:  processor在规定的时间内没有踢狗导致watchdog timer硬件reset processorWatchdog bite:  即使watchdog踢狗但是在某个时间内(比如3s)processor不能处理reset的中断,最后导致watchdog bite发生watchdog  bark(watch

2015-03-20 21:45:35 3040

原创 linux android memory相关问题的一些debug方法

1,android的procrank命令  点击打开链接  procrank -h 命令2,  linux的proc文件系统,   查看某个进程占用的内存时候用到的一些节点,·         /proc//statm·         /proc//maps·         /proc//smaps查看系统的一些内存/proc/meminfo点击

2015-03-20 21:42:40 1425

转载 在linux下安装软件

以下转自 点击打开链接apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之後运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的。 apt-get install packagename——安装一个新软件包(参见下文的aptitude) apt-get remove pa

2015-03-20 21:35:15 417

原创 奋斗是一辈子的事情

越来越觉得奋斗是一辈子的事情,每个人出身不一样,小时候的教育和家庭有很大关系,城里的小孩小时候就是各种兴趣班辅导班,而农村的孩子大部分出于散养的状态,这个时候城市里的孩子确实比农村里的孩子受到的教育更好,综合素质也会更高,但人生几十年,小时候也只是占了不到人生的五分之一,所以在长大后还是完全可以追回来,有些人初中高中成绩很好然后考上很好的大学,有些人可能初中高中的时候比较贪玩,上的大学不怎么好,但

2015-03-05 21:08:39 662

原创 perl学习笔记八——文件读写

一,perl对文件读写的处理点击打开链接检查当前目录下是否有test.pl的文件,如果有则提示:@test=`dir 2>&1`;if (open(MYFILE, ">>cycle5_log.txt")) {print MYFILE (@test); }else{ print "creat new file error!\n

2015-03-05 20:49:03 408

转载 Linux 性能监控、测试、优化工具

在网上看到一篇文章,讲了linux下各个模块涉及的各个工具,感觉自己以后可能会用到,转载以防以后用到。

2015-03-04 21:00:16 367

原创 程序员自我修养第三章__链接.

程序员自我修养第四章读书笔记一,静态链接:链接就是将几个输入的目标文件加工合并成一个输出文件,加工合并的方法是将几个输入文件中相似的段合并,比如将所有输入文件的“.text”合并到一个输出文件的“.text”段。现在连接器一般将整个链接过程分为两步:1,空间与地址的分配,扫描所有输入的目标文件,获得它们各个段的长度和属性,位置,并且将输入目标文件中所有的符号(Symbol)

2015-02-13 16:04:57 456

原创 Driver Structure

1,Driver Loading and InitializationNT drivers are dynamically loaded,in NT 4,drivers are almost loaded during system bootup, When a driver is loaded,the IO Mangaer calls its DriverEntry entry point.

2015-02-12 14:45:38 402

转载 github学习笔记

一,先附上几个别人写的比较好的。github权威github简明指南git教程

2015-02-12 10:09:50 487

原创 程序员自我修养第三章__ELF文件

一,四种ELF文件格式可重定位文件   linux下的.o文件可执行文件       比如/bin/bash共享目标文件    linux的.so文件核心存储文件    linux下的core dump文件linux下可以通过file命令查看文件的类型,比如 file test.o二,目标文件的格式点击打开链接点击打开链接可以通过objdump和

2015-02-11 19:19:08 543

转载 windows驱动编程学习笔记——(三)IRP

一,IRP的概念(I/O Request Package)当一个应用程序调用函数去操作某个设备时,比如调用createFile,deviceIOControl,等等时,I/O管理器为此函数创建一个IRP数据结构对象和一个IRP_STACK_LOCATION数据结构对象数组,(数组个数等于驱动程序堆栈上驱动的个数),IRP中的CurrentStackLocation指向IRP_STACK_LOC

2015-02-10 16:21:30 1795

转载 动态链接

一,动态链接:点击打开链接

2015-02-09 10:31:29 352

原创 好记性不如烂笔头

自己大概是从一年前开始养成了写博客记录的习惯,下面将我自己的一些心得体会写下,一是方便我自己以后再次查看总结,二也是希望帮助更多的人养成一些好的习惯。

2015-02-02 20:31:42 507

空空如也

空空如也

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

TA关注的人

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