- 博客(32)
- 资源 (4)
- 收藏
- 关注
翻译 Android Init Language介绍
Android init language用于init解析init.rc等初始化文件时使用官方的解释文档详见system/core/init/readme.txt关于Init language的解析的代码分析可参见http://blog.youkuaiyun.com/orz415678659/article/details/8769814init lang基本上由四个Statements:Acti
2013-11-29 09:45:44
919
原创 linux /dev/loop学习心得
linux下/dev/loop常用于制作文件系统镜像文件rootfs.img,以便下载到内核中挂载;http://zh.wikipedia.org/wiki//dev/loop我们日常接触到比较多的镜像文件*.iso,都是用数据文件来存储实际块设备上的数据;首先必须明确,想光盘,硬盘,软盘这样的设备上存储文件需要特定的文件系统,上面有大量的文件系统特定信息用于管理上面的文件,这些信
2012-05-16 09:18:44
6084
原创 linux内存管理阅读心得
一、Linux内存结构分为:node(节点),zone(区域),page(页框描述符)node ----{ zone-----{ page …… { zone-----{page二、映射高端内存的方法:永久映射(permanent kernel mapping)和暂时映射(temporary kernel mapp
2012-04-30 17:59:29
1724
原创 软件开发的驱动力
生活中各种软件在默默的为我们服务,那么软件开发的驱动力在哪里呢? 首先想到的是,软件开发的驱动力源于市场需求,有什么样的需求,就会相应产生软件来满足这个需求。这是毋庸置疑的。但是有没有其他驱动力呢?比如说,驱动软件开发的驱动力来源于硬件设计的改变,有什么新的硬件机制,就需要相应的驱动软件来实现这个功能,提供一个独特的功能,或给整个系统提供更好的性能。也就是说,软件的角色不
2011-12-18 17:39:50
2359
转载 Linux汇编语言学习记要
Linux汇编语言学习记要 一、Linux汇编语言的学习内容为了学习并能深刻理解Linux内核原代码,必须学习Linux汇编语言,对于Linux汇编语言的学习我觉得应该包括如下三个方面: 0)机器独立的汇编,比如:x86汇编指令,也叫instruction set,这部分需要参考处理器编程手册,比如:intel手册《Intel64 and IA-32 Architectures Software Developer Manual Volume 2A: Instruction Set Reference A-
2011-05-31 18:58:00
994
转载 svn linux usage example
url:http://cache.baidu.com/c?m=9d78d513d98205f34fede520564a902c0e54f1744dd6c7610ec3e24b84132c550026bdb47d645646c4c40f7a1cff1701bfe73605664276eb8cc8ff168afd8f7664de20377a01d501438942eb9c5b25c3229a47eba
2011-04-29 15:54:00
937
原创 从oops信息查找出错代码行
(1)从oops crash的地方开始查起,首先找到指针访问错误的代码行a)重新编译内核时,选上kernel hacking--->compile the kernel with debug info ---->kerneldebugging使得内核包含调试信息,b)然后从Oops信息中找到“PC is atfree_block+0x8c/0x168”#######
2011-04-18 16:15:00
4567
原创 PCI bar 空间可预取与不可预取概念
PCI BAR空间分为两类:IORESOURCE_IO(非可预取)和IORESOURCE_MEM(可预取),一般来说,对于BAR为寄存器空间,都要设置为IORESOURCE_IO;对于BAR为存储器空间,要设置为IORESOURCE_MEM;那么为什么要区分两种类型的空间呢? 所谓预取,重点在“取”字,这要从读取IO寄存器和RAM内存的区别来看。LDD3如果这个内存区被标识为可预取的, CPU 可缓存它的内容并且对它做所有类型的优化. 非可预取的内存存取, 另一方面, 不能被优化因为每
2011-03-10 09:56:00
10602
原创 google C++代码规范
近日google发布了c++,javascript,object-c等代码规范,甚至针对脚本cpplint来检查c++代码是否符合规范。打算翻译下来供大家参考。
2011-03-10 09:14:00
2951
原创 调试总结
<br />下面列出调试中的实战经验总结,不定时更新。<br /> <br /> <br />1.函数的栈空间有限,在函数内部申请buf的时候不能过大,比如:<br />void capture_demo()<br />{<br /> char buf[3][16*1024];<br />......<br />}<br />buf这样的临时变量size过大,超出了函数的栈大小限制,会出难查的问题;<br />如果真的需要buf有这么大的size,可以申请堆空间。<br /> <br />2.linux
2011-03-09 09:07:00
769
转载 Fedora13 Samba配置
<br /> <br /> <br /> <br />samba服务器可以实现windows与linux的文件共享,SMB协议是建立在NetBIOS协议之上的应用协议,是基于TCP138、139两个 端口的服务,NetBIOS出现之后,Microsoft就使用 NetBIOS实现了一个网络文件/打印服务系统。这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block) 协议,这个协议被用于Lan Manager和Windows服务器系统中,实现
2011-03-03 16:42:00
2459
原创 Fedora13 中 tftp配置
TFTP需求背景 在嵌入式linux开发中,交叉编译环境是必须的,那么如何把宿主机编译的结果放到目标机上面去运行呢?有很多种不同的方法可以实现,一种方法是在目标机ARM端挂载宿主机的网络文件系统,即NFS,这样就可以直接访问交叉编译的结果;但是在宿主机端编译的linux内核要想下载到arm端,必须通过tftp。 回想下读书的时候,有很多原始的办法下载内核和编译的模块,内核都是通过串口终端从USB下载到内存中,烧写到flash,驱动模块和应用程序都是通过在linux下挂载U盘去运行,现在看
2011-03-03 15:42:00
1430
转载 Fedora13 中 NFS的配置
一、开启NFS服务二、设置NFS服务器*********************************转********网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。 在嵌入式Linux 的开发过程中,开发者需要在Linux 服务器上进行所有的软件开发,交叉编译后,通用FTP 方式将可执行文件下载到嵌入式系统运行,但这
2011-03-01 19:23:00
1870
转载 linux内存管理
LINUX中的地址空间 有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间在什么范围内?内核编译后地址空间在什么范围内?要对外设进行访问,I/O的地址空间又是什么样的? 先回答第一个问题。Linux最常见的可执行文件格式为elf(Executable and Linkable Format)。在elf格式的可执行代码中,ld总是从0x8000000开始安排程序的“代码段”,对每个程序都是这样。至于程序执行时在物理内存中的实际地址,则由内核为其建立内存映射时临时分配,具体地址取决于
2010-12-13 15:06:00
829
原创 1. free(): invalid next size (fast)
<br /> free(): invalid next size (fast): 0x095f6070<br />是由于对指针0x095f6070指向的空间,进行写操作超过了他实际申请的大小<br />这个错误是由于对?:运算符使用时,没有在最外层加上括号,由于?:优先级较低,<br />导致的运算顺序错误。比如:<br />#define MAX(x,y) (x)>(y)? (x):(y)<br />缺少最外层大括号,就会导致2*MAX出问题。
2010-12-01 11:07:00
4195
转载 浅谈宏定义中“#”,“##”和“...”的使用
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏: #define WARN_IF(EXP) / do{ if (EXP) / fprintf(stderr, "Warnin
2010-11-10 09:16:00
992
1
原创 classic words
收集的关于编程和学习方法的经典名言:DEBUG definition:The process of identifying divergences between the intent and the implementation is known as debugging.The Best Method to Learn Linux Kernel Code:I would encourage aspiring developers to get their hands dirty: The best
2010-11-05 09:13:00
1077
转载 proc文件系统剪辑
proc文件系统的概念proc属于虚拟文件系统,用于linux内核空间和用户空间通信;在linux系统中,proc并不孤独,sysfs 是一个与 /proc 类似的文件系统,出现在proc之后,所以改善了proc的缺点struct proc_dir_entry { const char *name; // virtual file name mode_t mode; // mode permissions uid_t uid; // File's user id gid_t
2010-10-20 20:14:00
745
转载 使用 udev 高效、动态地管理 Linux 设备文件
<br />使用 udev 高效、动态地管理 Linux 设备文件黄 懋, 软件工程师, IBM黃懋,IBM 中国系统和技术实验室,Open Systems Interoperability Validation Lab 存储测试团队的成员。3-4 年 Linux/Unix 平台和 SAN/NAS 存储产品的测试经验。 <br />简介: 本文以通俗的方法阐述 udev 及相关术语的概念、udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和
2010-10-20 20:06:00
597
转载 使用 udev 高效、动态地管理 Linux 设备文件
<br />使用 udev 高效、动态地管理 Linux 设备文件黄 懋, 软件工程师, IBM黃懋,IBM 中国系统和技术实验室,Open Systems Interoperability Validation Lab 存储测试团队的成员。3-4 年 Linux/Unix 平台和 SAN/NAS 存储产品的测试经验。 <br />简介: 本文以通俗的方法阐述 udev 及相关术语的概念、udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和
2010-10-14 16:05:00
852
原创 udev学习总结
<br />udev 动态设备管理<br /> <br />看了不少前人总结的东西,是时候自己来做个总结了,来表达下我眼中的udev。<br />udev是什么?<br />udev是生成设备文件节点的一个方法,为了替代2.6内核之前的devfs而产生,最大的不同在于,udev是一个用户空间程序,因此是<br />硬件平台无关的。udev可以在系统发现一个新的硬件时,根据灵活的udev规则,在/dev下为该硬件生成相应的设备文件。<br /> <br />udev产生的需求是什么?<br />udev产生的
2010-10-14 15:57:00
1019
转载 udev晋级(专业人士提供)
<br />目录<br />介绍 <br /> 关于本文档<br /> 更新历史<br />概念<br /> 术语: devfs, sysfs, nodes, etc.<br /> 为什么?<br /> 内置固定命名设计<br />编写规则<br /> 规则文件和语义<br /> 规则语法<br /> 基本规则<br /> sysfs匹配属性<br /> 设备级联结构<br /> 字符串替换<br /> 字符
2010-10-13 15:08:00
941
转载 嵌入式Linux 建立udev 及有意思的udev FAQ
udev嵌入式上路经历改编自udev轻松上路第一、什么是udev? 这篇文章UDEV Primer给我们娓娓道来,花点时间预习一下是值得的。第二、为什么udev要取代devfs? udev是硬件平台无关的,属于user space的进程,它脱离驱动层的关联而建立在操作系统之上,基于这种设计实现,我们可以随时修改及删除/dev下的设备文件名称和指向,随心所欲地按照我们的愿望安排和管理设备文件系统,而完成如此灵活的功能只需要简单地修改udev的配置文件即可,无需重新启动操作系统。udev 已经使得我们对设备的管
2010-10-12 19:18:00
3227
转载 udev入门FAQ(两位仁兄写的总结文字)
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。Mandrake,Gentoo等Linux分发版本采用了这种方式。devfs创建的设备文件是动态的。但是devfs有一些严重的限制,从 2.6.13版本后移走了。目前取代他的便是文本要提到的udev--一个用户空间
2010-10-12 17:01:00
932
转载 linux恢复硬盘数据
<br />星期五的晚上,一手接电话,一手在键盘敲着命令,本该是 rm -rf /usr/local/apache2/htdocs/tmp/ 命令却少敲了tmp ,竟然运行 rm -rf /usr/local/apache2/htdocs ,这命令是要把htdocs目录下所有文件都删除啊,还好发现的快,赶紧ctrl+c,救回来了几个文件夹。但有几个重要的文件夹都没了,这目录下的文件夹有的是半年前的工作,有的是几个月前的工作,就在一瞬间消失的干干净净。恨自己为什么不备份,恨自己为什么接电话手还在键盘旁,恨
2010-10-12 17:00:00
8807
原创 Linux data stored
<br />星期五的晚上,一手接电话,一手在键盘敲着命令,本该是 rm -rf /usr/local/apache2/htdocs/tmp/命令却少敲了tmp ,竟然运行 rm -rf /usr/local/apache2/htdocs ,这命令是要把htdocs目录下所有文件都删除啊,还好发现的快,赶紧ctrl+c,救回来了几个文件夹。但有几个重要的文件夹都没了,这目录下的文件夹有的是半年前的工作,有的是几个月前的工作,就在一瞬间消失的干干净净。恨自己为什么不备份,恨自己为什么接电话手
2010-09-13 13:59:00
1132
转载 YUM INSTALL
<br />YUM INSTALL<br />目录:<br />1、实验环境<br />2、YUM 所需要软件的安装<br />3、YUM 从哪里获取仓库文件<br />4、YUM 各种方式的安装<br />5、YUM命令的使用<br />6、问题解答<br /> <br />1、 实验环境<br />物理平台:SL400 笔记本一台<br />操作系统:WINXP,虚拟机上的RHEL5.4<br /> #显示系统版本<br /> <br />#显示CPU型号<br /> <br />#显示内存
2010-09-08 15:25:00
886
原创 两个自己实现backtrce的博文
linux下打印函数调用栈(stack backtrace in Linux)2010-01-14 23:20今天遇到个这样的需求,希望能当动态链接库中抛出异常时,能把调用栈打印出来。经过在google上一翻搜寻,找到了一些线索。我的文件目录如下:当前目录下是main.cpp 和test/test下面是A.h, A.cpp(定义一个类)和backtrace.h, backtrace.cpp第一步,实现打印调用栈,backtrace函数实现如下:backtrace.cpp#include "backtrace
2010-08-24 17:52:00
1668
原创 在linux代码中打印函数调用的堆栈的方法
<br />之前一直有这样的需求,当时问到,也没搜到方法,现在竟然既问到了,也搜到了,哎,世事真是不能强求啊!<br /> <br />在linux内核调试中,经常用到的打印函数调用堆栈的方法非常简单,只需在需要查看堆栈的函数中加入:<br />dump_stack();或 __backtrace();即可。<br /> <br />dump_stack()在~/kernel/ lib/Dump_stack.c中定义<br /> <br />void dump_stack(void)<br />{<br /
2010-08-24 17:09:00
15007
原创 linux内核中的链式结构体
<br /> 在linux内核或者其他大型底层应用的开发项目中,C语言是主力军。但是在这些项目中,也会有<br />对象的需要,这个时候结构体的定义就非常必要。<br />链式的结构体定义,或者说具有特殊逻辑关系的一组结构体变量也是很常见的。下面有一个问题,<br />既然链式结构体经常见到,那么怎么组织他们呢?<br />最简单的想法是构建结构体数组,比如:<br />typedef struct{<br /> unsigned int a;<br />} _StrA;<br />_StrA str
2010-08-18 11:15:00
1093
原创 __builtin_constant_p
<br />Gcc的内建函数 __builtin_constant_p 用于判断一个值是否为编译时常数,如果参数EXP 的值是常数,函数返回 1,否则返回 0。例如: <br />++++ include/asm-i386/bitops.h <br />249: #define test_bit(nr,addr) / <br />250: (__builtin_constant_p(nr) ? / <br />251: constant_test_bit((nr),(addr)) : / <br />252
2010-08-09 09:33:00
9371
转载 container_of详解
#define container_of(ptr, type, member)({ / consttypeof(((type *)0)->member )*__mptr =(ptr); / (type *)((char*)__mptr -offsetof(type,member));})#defineoffsetof(TYPE, MEMBER)((size_t)&((TYPE *)0)->MEMBER)1.ptr为物理地址,其类型和member类型一致,最
2010-08-05 21:14:00
747
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人