http://blog.csdn.net/dreambegin/article/details/6904822 原来文章叫--编译内核之初体验.后来想了想,这篇文章让我体验了好多遍.不该叫这么大气的名字,还是改了吧.中间记录了很多在内核移植中可能遇到的问题. 还是把名字改为:愚人的内核移植札记(超曲折版) 千呼万唤始出来,让我们开始移植内核吧! 环境:Ubuntu  +  EABI-4.3.3(就是前边配置好的环境) 内核版本:linux-2.6.34.10          /*这个版本有什么…
定时器和时间管理 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要. 主要内容: 系统时间 定时器 定时器相关概念 定时器执行流程 实现程序延迟的方法 定时器和延迟的例子 1. 系统时间 系统中管理的时间有2种:实际时间和定时器. 1.1  实际时间 实际时间就是现实中钟表上显示的时间,其实内核中并不常用这个时间,主要是用户空间的程序有时需要获取当前时间,所以内核中也管理着这个时间.实际时间的获取是在开机后…
linux内核的移植性非常好, 目前的内核也支持非常多的体系结构(有20多个). 但是刚开始时, linux也只支持 intel i386 架构, 从 v1.2版开始支持 Digital Alpha, Intel x86, MIPS和SPARC(虽然支持的还不是很完善). 从 v2.0版本开始加入了对 Motorala 68K和PowerPC的官方支持, v2.2版本开始新增了 ARMS, IBM S390和UltraSPARC的支持. v2.4版本支持的体系结构数达到了15个, v2.6版本支…
我们在编译Linux内核时,往往在Linux内核的顶层目录会执行一些命令,这里我以RK3288举例,比如:make firefly-rk3288-linux_defconfig.make menuconfig.make firefly-rk3288.img.make zImage等等.先不管这具体的含义,首先提出几个疑问: (1)Linux内核如此庞大(几万个文件),目录又分为很多层,它是如何将各层目录下的文件关联起来的? (2)Linux支持如此多的架构(X86.ARM.AVR.mips等等)…
1. Linux内核链表的位置及依赖 (1)位置:{linux-2.6.39}\\include\linux\list.h (2)依赖 ①#include<linux\types.h> ②#include<linux\stddef.h> ③#include<linux\poison.h> ④#include<linux\prefetch.h> 2. 移植及注意事项 (1)清除文件间的依赖:剥离依赖文件中与链表实现相关的代码 (2)清除与平台相关代码(GNU…
原文链接:http://blog.csdn.net/xnwyd/article/details/7359373 Linux内核链表的核心思想是:在用户自定义的结构A中声明list_head类型的成员p,这样每个结构类型为A的变量a中,都拥有同样的成员p,如下: struct A{ int property; struct list_head p; } 其中,list_head结构类型定义如下: struct list_head { struct list_head *next,*prev; };…
0.目录 1.老生常谈的两个宏(Linux) 1.1 offsetof 1.2 container_of 2.Linux内核链表剖析 3.小结 1.老生常谈的两个宏(Linux) Linux 内核中常用的两个宏定义: 1.1 offsetof 见招拆招--第一式:编译器做了什么? offsetof 用于计算 TYPE 结构体中 MEMBER 成员的偏移位置. 编译器清楚的知道结构体成员变量的偏移位置 通过结构体变量首地址与偏移量定位成员变量 示例--offsetof: #include <std…
第17章 设备与模块 一.设备类型  除了以上3种典型的设备之外,其实Linux中还有一些其他的设备类型,其中见的较多的应该算是"伪设备".所谓"伪设备",其实就是一些虚拟的设备,仅提供访问内核功能而已,没有物理设备与之关联.典型的"伪设备"就是 /dev/random(内核随机数发生器), /dev/null(空设备), /dev/zero(零设备), /dev/full(满设备) 二.内核模块  Linux内核是模块化组成的,内核中的模块可以…
1, 关于操作系统理论的最初级的知识.不需要通读并理解<操作系统概念><现代操作系统>等巨著,但总要知道分时(time-shared)和实时(real-time)的区别是什么,进程是个什么东西,CPU和系统总线.内存的关系(很粗略即可),等等. 2, 关于C语言.不需要已经很精通C语言,只要能熟练编写C程序,能看懂链表.散列表等数据结构的C实现,用过gcc编译器,就可以了.当然,如果已经精通C语言显然是大占便宜的. 3, 关于CPU的知识.这块儿可以在学习内核过程中补,但这样的话你…
http://www.hzlitai.com.cn/article/ARM9-article/system/1605.html 写给Linux内核新手-关于Linux内核学习的误区 先说句正经的:其实我没资格写这篇文章,因为自己也就一两个月以来才开始有所领悟的.因此,这里与其说是关于Linux内核学习的经验,不如说是自己的教训吧,希望不要扔鸡蛋砸我^_^ 常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux. 这个……还是有点太泛了吧,我…