- 博客(94)
- 资源 (3)
- 收藏
- 关注
转载 Linux的内存管理-2
Linux的内存管理主要分为两部分:物理地址到虚拟地址的映射,内核内存分配管理(主要基于slab)。物理地址到虚拟地址之间的映射1、概念 物理地址(physical address) 用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本
2014-02-08 06:47:40
940
转载 Linux中的内存管理
前一段时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看法和认识。我比较喜欢搞清楚一个技术本身的发展历程,简而言之就是这个技术是怎么发展而来的,在这个技术之前存在哪些技术,这些技术有哪些特点,为什么会被目前的技术所取代,而目前的技术又解决了之前的技术所存在的哪些问
2014-02-07 17:16:26
859
转载 Linux USB驱动工作流程
1. USB主机在Linux驱动中,USB驱动处于最底层的是USB主机控制器硬件,在其之上运行的是USB主机控制器驱动,主机控制器之上为USB核心层,再上层为USB设备驱动层(插入主机上的U盘、鼠标、USB转串口等设备驱动)。因此,在主机侧的层次结构中,要实现的USB驱动包括两类:USB主机控制器驱动和USB设备驱动,前者控制插入其中的USB设备,后者控制USB设备如何与主机通信。Li
2013-10-17 09:59:05
941
转载 SD Card 驱动流程分析
一、硬件接口电路 首先来看一下SD card的一个硬件应用电路,如下图所示: SD卡有两种工作模式,一个是spi接口模式,一个是SD模式,后者传输速率快些,这里讨论SD模式;SD总线包含4个数据总线(SDIO0-SDIO3),1个命令线(SDCMD)和一个同步时钟SDCLK;图上第10脚是卡检测信号。这里需注意的是传输总线必须加上拉。数据总线不
2013-09-03 20:13:14
4302
转载 Android HAL(硬件抽象层)介绍以及调用
1 HAL简介Android 的 HAL(Hardware Abstract Layer硬件抽象层)是Google因应厂商「希望不公开源码」的要求下,所推出的新观念,其架构如下图。虽然 HAL 现在的「抽象程度」还不足,现阶段实作还不是全面符合 HAL的架构规划,不过也确实给了我们很好的思考空间。ce - 许兴旺的博客" src="http://img.blog.163.com/pho
2013-08-27 21:38:43
1130
转载 MIUIrom适配之旅–认识Android手机
写这篇文章时想起我的第一部Android手机HTC Hero。买回来后,同事告诉我可以去刷机玩玩。刷机,怎么刷?同事说,你个土人,刷机都不知道,很多刷机论坛的,你去逛逛,挺简单的。我去逛了逛机锋论坛(那时还不知道MIUI),打开一看,什么recovery, radio, root各种词汇扑面而来,oh my lady gaga,这么复杂。但是为了不被鄙视,而且闲着也是闲着,还是刷着玩玩吧。后来就结
2013-08-26 16:17:03
1633
原创 recovery 模式下如何使用adb进行调试和抓取recovery LOG
在recovery中的init.rc中加入如下代码export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin加入adb可执行程序的环境变量,以便程序自定执行调用mount ext4 emmc@android /system wait ro commit=1,noauto_da_a
2013-08-21 15:20:39
16485
1
转载 Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节
Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节 Recovery服务毫无疑问是Recovery启动模式中最核心的部分。它完成Recovery模式所有的工作。Recovery程序对应的源码文件位于:/gingerbread0919/bootable/recovery/recovery
2013-05-31 08:47:20
3155
转载 Android init.rc解析
Android初始化语言由四大类声明组成:行为类(Actions),命令类(Commands),服务类(Services),选项类(Options). * 初始化语言以行为单位,由以空格间隔的语言符号组成。C风格的反斜杠转义符可以用来插入空白到语言符号。双引号也可以用来防止文本被空格分成多个语言符号。当反斜杠在行末时,作为折行符。 * 以#开始(前面允许有空格)的行为注释行。
2013-05-22 09:45:59
832
转载 Android init.rc解析
Android初始化语言由四大类声明组成:行为类(Actions),命令类(Commands),服务类(Services),选项类(Options). * 初始化语言以行为单位,由以空格间隔的语言符号组成。C风格的反斜杠转义符可以用来插入空白到语言符号。双引号也可以用来防止文本被空格分成多个语言符号。当反斜杠在行末时,作为折行符。 * 以#开始(前面允许有空格)的行为注释行。
2013-05-22 09:45:35
677
转载 双向链表listnode
在init源代码中双向链表listnode被使用地很多。android源代码中定义了结构体listnode,奇怪的是,这个结构体只有用于链接节点的prev和next指针,却没有任何和”数据“有关的成员变量。那么代码中如何通过一个节点来找到该节点“存储“的数据呢?关键是下面这个宏。#define node_to_item \ (container *) (((char *) (node)
2013-05-13 19:35:03
4448
转载 patch
1,制作补丁(git 代码管理的):$git diff > tmp.patch //本地库代码到当前代码修改状态的所有文件的补丁tmp.patch$git diff filename > tmp.pacth //本地库代码到当前代码修改状态的某个文件filename的补丁tmp.patch$git diff 版本号1 版本号2 > tmp
2013-05-10 18:48:01
3921
转载 GPIO
1、读取每个GPIO的参数adb shell cat /sys/devices/virtual/misc/mtgpio/pin打印出来的参数从左到右分别是Pin:mode pullsel din dout pullen dir dinv(inversion) 2、修改GPIO的参数adb shell echo -w=[pin]:[mode] [pullsel] [din] [d
2013-05-08 16:54:59
1251
转载 container_of 用法解析
在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the
2013-05-02 17:15:09
928
1
转载 sysfs 文件系统
sysfs 文件系统sysfs是一个基于内存的文件系统,它的作用是将内核信息以文件的方式提供给用户程序使用。该文件系统的目录层次结构严格按照内核的数据结构组织。除了二进制文件外(只有特殊场合才使用),sysfs文件内容均以ASCII格式保存,且一个文件只保存一个数据,另外,一个文件不可大于一个内存页(通常为4096字节)。sysfs提供一种机制,使得可以显式的描述内核对象、对象
2013-05-02 13:57:58
1491
转载 Linux设备驱动模型之底层数据结构
本文简单介绍构成Linux设备驱动模型的最底层的数据结构:kobject、kset和kobj_type等等。kobject是组成设备模型的基本结构,在sysfs中显示的每一个对象,都对应着一个kobject,而kset是一组具有某种相似性的kobject的合集。每个kobject都需要一个相应的kobj_type结构。 一、kobject 不多废话,首先看kobjec
2013-05-02 13:09:46
1214
转载 设备模型结构
设备模型结构如表2-1,Linux设备模型包含以下四个基本结构:类型所包含的内容内核数据结构对应/sys项设备(Devices)设备是此模型中最基本的类型,以设备本身的连接按层次组织struct device/sys/devices/*/*/.../
2013-05-02 13:08:49
1377
转载 Bootloader详解
引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。3. 文件系统。包括根文件系统和建立于
2013-04-28 10:51:25
1956
转载 破解Android:谈谈Root与刷机
只要是Android的使用者,相信对「刷机」、「Root」、「刷Rom」等名词并不陌生。Android是个开放平台,也由此衍生出许多定制化的界面、系统,像是MIUI、Facebook Home等诸多样貌。此文跟大家谈谈何谓Root以及刷ROM,当然也会提到如此做的风险,让各位Android玩家有个初步的认识。也由于Android的开放特性,许多电信商、系统商、硬件商都喜欢在上面做一些更
2013-04-23 18:51:39
1622
转载 Linux中断浅析
作者:独孤九贱;版权所有,转载请注明出处。一、概述中断,本质上是一个电信号,早期的计算的并没有中断这一概念,这使得CPU与外围设备的交互变得困难,CPU需要不断的轮询,以探测外围设备是否有数据需要处理。这浪费大量的资源。中断的出现,将CPU从这一任务中解放出来,CPU与外设的处理,变为异步,它可以喝着茶,听着音乐,然后等待外设的报告。Linux中的中断,除了包含外围设备
2013-04-23 18:50:52
1715
转载 Linux中断(interrupt)子系统之一:中断系统基本原理
这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基于3.3。虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变。 /****************************************************
2013-04-23 10:58:53
964
原创 龙门山地震带详解
龙门山地震带详解--豆芽亲制2013-04-21 www.taobao500.com龙门山形成于中生代和早新生代。现今龙门山最显著的地貌特征就是南北分段性:北段海拔普遍处在1 000 m至2 000 m之间。沿北东方向,龙门山北段和四川盆地之间界限逐渐模糊;南段地形陡峭,盆山界限清楚。龙门山断裂带近年较活跃四川雅安发生7.0级地震, 本次地震位于龙门山断裂带
2013-04-21 12:05:25
10328
转载 哈佛商学院MBA课程安排及学制
哈佛商学院MBA课程的学制为两年,第一学年学习统一的必修课程,第二学年则进入专业课程,近90年来一概如此。HBS的课程设置已经成为几乎所有大学的商学院硕士课程的参考模式,其校现校纪也为其他学校所模仿。但是,哈佛商学院的教学计划存在着一个令人奇怪的不平衡。第一年的课程压得人喘不过气来的紧张,第二年却有些无所事事的轻松。一年级课程的典型安排是,每周上午三节80分钟的课。每节课基本安排一个案例,
2013-04-19 00:16:46
8707
转载 画图计算-- 结构体大小的计算
结构体计算要遵循字节对齐原则结构体默认的字节对齐一般满足三个准则:1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一
2013-04-15 15:21:55
664
转载 Linux内核的中断子系统
Linux内核的中断子系统Linux中断子系统主要包括了三个部分,一部分和体系结构相关,位于最底层,主要负责在中断发生之后保护CPU现场,调用内核统一的中断处理入口函数,负责从中断处理过程恢复到中断之前的流程等比较底层的工作。第二部分是内核的中断系统框架层,这部分为内核中断处理提供了一个统一的框架,对于靠上层的驱动程序,它提供中断程序注册的接口。对于体系结构相关的底层,它提供一
2013-04-12 14:58:13
1609
转载 I2C 驱动开发 实例
一、 开发背景开发环境:DM355开发板内核版本:2.6.10二、 BQ27501驱动开发的需求BQ27501是一个锂电池管理的芯片,可以向外提供锂电池的有关的信息。在用户空间用户不能直接访问bq27501的寄存器,所以要为其编写驱动,该驱动能够根据用户空间的命令,返回对应的电池信息。三、 I2C 驱动的架构
2013-04-09 16:33:09
1666
转载 实例解析linux内核I2C体系结构
刘洪涛,华清远见嵌入式学院讲师。四、在内核里写i2c设备驱动的两种方式前文介绍了利用/dev/i2c-0在应用层完成对i2c设备的操作,但很多时候我们还是习惯为i2c设备在内核层编写驱动程序。目前内核支持两种编写i2c驱动程序的方式。下面分别介绍这两种方式的实现。这里分别称这两种方式为“Adapter方式(LEGACY)”和“Probe方式(new style)”。(1)
2013-04-09 15:52:30
1177
转载 设备驱动外传 - 虚拟总线和platform device(不同于I2C的驱动编写)
1. 总论2. 系统初始化 platform device3. 驱动程序使用 platform device 1. 总论Linux-2.6.11引入了设备模型的概念,将大部分设备驱动挂载到虚拟总线上。其目的在于:1) 提供友好的用户接口,用户可以在sys/bus/platform/下找到相应的驱动和设备。2
2013-04-08 17:30:46
1252
转载 你是想读书,还是想读完书?
以前,读书前会很想读一本书,但实际读书时,经常是“想读完书”,而不是“想读书”。这种想法经常会让我的生活变得很痛苦,当你做一件事想着快点做完时,你的心思其实已经不在这件事上了。 这个问题在我大学时困扰了我很久。我没有意识到这本身其实是一个价值观问题,以至于我常在一些时间管理的书中寻找答案。那些书都只能让你更高效地“做完事”,却不能让你在做的过程中更投入一分。 直到后来离开学校,
2013-04-07 13:36:52
1011
转载 谁是下一波浪潮之巅 ——从规律中寻找答案
大约十年前,朋友送我一本书,托夫勒的《第三次浪潮》,当时该书已经是问世十年的旧书了,但书中的思想仍然熠熠生辉,让人直呼过瘾。在书中,作者展现了良好的洞见:如跨国企业将盛行;电脑发明使在家工作成为可能;人们将摆脱朝九晚五工作的桎梏;DIY(自己动手做)运动的兴起……时过境迁,如今我们才发现托夫勒天才般的预言竟大多已成为了现实,也让我牢记了一个关键词——浪潮。在我的头脑中,“浪潮”一词已经与 IT 革
2013-04-07 13:12:53
1201
转载 NFC bcm2079x驱动学习
1硬件介绍Bcm2079x型号NFC开发版,与主机有5根pin脚,分别是两根IIC通信线、中断脚、使能脚、唤醒脚。驱动需要完成IIC注册,中断的初始化,pin脚初始化。 2 驱动初始化2.1 初始化流程图bcm2079x驱动学习" title="NFC bcm2079x驱动学习" style="border-top-style:none; bo
2013-04-02 15:43:43
3902
转载 恢复出厂设置流程
恢复出厂设置流程recovery.img与boot.img的对比recovery .img和boot.img的文件结构的对比:1)recovery.img其实已经是进入了Linux系统。(2)recovery.img为了具有恢复系统的能力,比普通的boot.img目录结构中: 1、多了/res/images目录,在这个目录下的图片都是恢复时我们看到的背景画面。
2013-03-27 19:26:54
1369
转载 Android中HAL如何向上层提供接口总结
http://blog.youkuaiyun.com/luoshengyang/article/details/6573809http://blog.youkuaiyun.com/hongtao_liu/article/details/6060734建议阅读本文时先浏览以上两篇文章,本文是对上两篇文章在HAL对上层接口话题的一个总结.1 什么是HALHAL的全称是Hardware
2013-03-23 16:55:31
1137
转载 android系统开发-HAL层开发基础
Android HAL层,即硬件抽象层,是Google响应厂家“希望不公开源码”的要求推出的新概念1,源代码和目标位置源代码: /hardware/libhardware目录,该目录的目录结构如下:/hardware/libhardware/hardware.c编译成libhardware.so,目标位置为/system/lib目录/hardware/libhardware/inc
2013-03-23 11:27:49
1026
转载 十分钟掌握diff&patch用法
作为程序员,了解diff&patch命令是非常必要的。比如说我们发现某个项目有bug代码,而自己又没有svn的提交权限,那么此时最合适的解决方法就是用diff命令做一个补丁发给项目成员。项目成员通过patch命令可以立刻知道你的意图。有人会说直接传一个新文件不是更简单?不要忘了,一个patch文件尺寸更小传输更快,而且可以明显的看到都做了哪些修改。保证当前目录是demo名录:# m
2013-03-18 21:22:02
784
转载 DEVICE_ATTR
sysfs接口函数的建立_DEVICE_ATTR 2012-05-09 11:36:46| 分类:linux文件系统 | 标签:device_attr sysfs接口函数 |字号大中小 订阅说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是#define DEVICE_ATTR(_name, _mode, _show, _store
2013-03-18 21:16:42
12318
转载 Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节
Recovery服务毫无疑问是Recovery启动模式中最核心的部分。它完成Recovery模式所有的工作。Recovery程序对应的源码文件位于:/gingerbread0919/bootable/recovery/recovery.c。一、 Recovery的三类服务: 先看一下在这个源码文件中开始部分的一大段注释,这将对我们理解Recove
2013-01-03 10:33:19
1776
转载 浅析 Android recovery mode
# recovery介绍从事android的开发者对recovery一定不会陌生.它主要用来擦除数据和进行系统升级.擦除数据就是为了上层恢复出厂设置提供接口.主要有wipe data和wipe cache.升级又分为在线升级和离线升级.在线升级一般通过网络(3G,WIFI,GPRS)下载资源包,然后进入recovery进行升级.离线升级一般把下载好的update包放至SD卡,然后选择从SD
2013-01-02 21:12:27
10277
转载 Android OTA 升级(四):进入根文件系统
一、简介 从bootloader 进入Recovery 模式后,首先也是运行Linux内核,该内核跟普通模式没有区别(减轻了BSP开发者的任务)。区别从执行文件系统开始。 Recovery 模式的细节就隐藏在其根文件系统中。下面,我们就看看进入Recovery 根文件系统都干些啥。二、init.rc 和正常启动一样,内核进入文件系统会执行/init,
2013-01-02 21:03:07
3500
转载 Uboot分析
@lib_arm/board.cstart_armboot这个函数的功能是去执行一系列的函数进行底层硬件的初始化,最要中重要的初始化是进行内存的初始化。u-boot 之 gd_t 和 bd_t 数据结构简介bd_t :这个结构体是board info 的缩写 用来保存板子的信息gd_t :这个结构体是global data的缩写,用来保存全局数据的信息bd_t 和 gd_t
2013-01-02 19:01:55
1061
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人