- 博客(15)
- 资源 (3)
- 收藏
- 关注
转载 DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)
转自:http://www.360doc.com/content/14/0116/16/15528092_345730642.shtml 首先,我们先了解一下内存的大体结构工作流程,这样会比较容量理解这些参数在其中所起到的作用。这部分的讲述运用DDR3的简化时序图。 DDR3的内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格。和表格的检索原理一样,先指定一个行(Row)
2014-01-16 16:23:05 117281 8
原创 Linux kernel suspend resume学习:2.6.35与3.0.35比较
Linux kernel suspend resume学习:2.6.35与3.0.35比较最近在学习linux kernel中suspend和resume的处理。只是一味的看代码,有点枯燥,刚好有两个项目使用了不同的内核版本,就以比较这两个间的处理差别为线索进行学习。由于列举了很多代码,为了保持连续性,整篇文章还是放到了一个blog中。首先看看公开出去的接口,都是文件/sys/po
2014-01-15 17:48:59 7134
原创 slab 着色的理解
slab 着色的理解之前对slab着色一直不怎么理解。后来查了不少资料,包括之前转的一篇blog,通过学习之后,总算大致了解了。这儿也写点总结,按照自己的思路来,以抵抗忘性。先来看看slab着色的目的。slab中倾向于把大小相同的对象放在同一个硬件cache line中。为什么呢?方便对齐,方便寻址。但这样会带来一个问题。假如有两个对象,A,B,它们size一样,都是1
2014-01-15 16:51:48 6924 4
转载 slab着色与cpu硬件高速缓存
转自:http://www.mythroad.net/2011/06/11/slab_coloring_cpu_hardware_cache/ 学习LKD的时候,在内存管理一章的slab小节中,对于slab的着色只是一笔带过,并没有详细叙述,只好翻看了很多资料,稍微有了点儿概念,其实关键在于分清所谓的cache(高速缓存,包含多个slab块)和硬件高速缓存的概念。 sl
2014-01-15 16:10:18 1904 1
原创 内存映射相关学习
内存映射相关学习以前看过一些内存映射相关的文章,最近看到相关的知识,发现一时没办法全部提起来。这个忘性!!!看样子不写点东西出来,是没办法克服忘性了。内存映射,其实就是建立物理内存与虚拟内存之间的关系。物理内存就不用说了,就是实实在在的东东,看得见,摸得着。虚拟内存是嘛呢?看名字就知道,是“虚”的,看不见,摸不着。其实就是操作系统给进程的一个空间,告诉进程有这么多“内存
2014-01-15 15:58:43 1207
转载 Linux 内存管理 -- 高端内存的映射方式
解释一: 高端内存是指物理地址大于 896M 的内存。对于这样的内存,无法在“内核直接映射空间”进行映射。为什么?因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。因此,Linux 规定“内核直接映射
2014-01-15 14:11:23 935
转载 [经典]Linux内核中ioremap映射的透彻理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的
2014-01-14 19:18:28 739
转载 C语言的编译链接过程的介绍
转自:http://soft.chinabyte.com/database/174/12454174.shtml C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下
2014-01-14 13:54:46 833
转载 linux内核休眠与唤醒
转自:http://blog.csdn.net/zhandoushi1982/article/details/5759050 在Linux中,休眠主要分三个主要的步骤:(1)冻结用户态进程和内核态任务;(2)调用注册的设备的suspend的回调函数;(3)按照注册顺序休眠核心设备和使CPU进入休眠态。 冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下
2014-01-08 11:36:22 3785
转载 Android的休眠与唤醒 && 实例
转自:http://blog.csdn.net/zhandoushi1982/article/details/5765219 Android 休眠(suspend),在一个打过android补丁的内核中,state_store()函数会走另外一条路,会进入到request_suspend_state()中,这个文件在earlysuspend.c中。这些功能都是android系统
2014-01-08 10:57:20 1440
转载 分析kernel的initcall函数
转自:http://linux.chinaunix.net/techdoc/develop/2008/07/19/1018489.shtml 分析kernel的initcall函数Author: DongasData: 08-07-15先来看看这些initcall函数的声明:/* include/linux/init.h *//* initcalls are now
2014-01-02 19:34:51 1230
原创 alsa sample rate跟踪 <4>
alsa sample rate跟踪 接下来,要看看open流程中都往pcm上挂了哪些东东。aplay的main函数中调用snd_pcm_open函数,并传入了一个snd_pcm_t指针handle的地址:static snd_pcm_t *handle; err = snd_pcm_open(&handle, pcm_name, stream, open_mode);
2014-01-02 11:06:39 2504 2
原创 alsa sample rate跟踪 <3>
alsa sample rate跟踪 接着看。还有一个疑问点,按照之前的分析,如果想要snd_pcm_hw_params被调用,需要调用snd_pcm_rate_open。但是从上面列出来的函数调用关系没有调用snd_pcm_rate_open,那么这个东东是什么时候被调用的呢?原来在函数snd_pcm_plug_hw_params中有个判断,如果client params中的参数
2014-01-02 10:52:41 2262
原创 alsa sample rate跟踪 <2>
alsa sample rate跟踪 接上篇,下面要调查:1、snd_pcm_hw_hw_params,snd_pcm_plug_hw_params,snd_pcm_rate_hw_params,snd_pcm_generic_hw_params和snd_pcm_direct_hw_params是如何被调用的。2、以及snd_pcm_hw_params和几处单独的_snd_pcm_hw
2014-01-02 10:34:56 2460 1
原创 alsa sample rate跟踪 <1>
alsa sample rate跟踪 本计划全部放在一篇中,后来发现太长。因此截取成四篇,一口气看800多行,确实够烦的!之前以为alsa lib中的rate plugin之所以被调用,是因为在asound.conf中指定了硬件的sample rate,例如rate 48000。但实际测试下来,发现不是这么回事。无论asound.conf中是否有rate 48000,驱动中得到
2014-01-02 10:29:48 4709 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人