前序
最近在整理多年来Linux内核开发/linux驱动开发的过往知识点,都是知道的或者以及用过的一些零零散散的知识点,记录下来,以供来日翻翻看看:
干货
- Linux内核基本都是由C语言编写的,部分跟架构相关的由汇编完成,其实汇编在整个linux内核中的所占的比例非常的低。
- Linux内核使用的是GNU C 和GNU 工具链开发而成的,它符合了ISO C89的标准,也使用了标准中没有使用到的一些扩展,不完全支持标准C,所以,一些标准C的写法,在内核开发中获取得不到支持也不见怪。
- Linux的发展已经经过了数十个版本的更迭,今天已经进入了linux-4.x.x的版本开发中,今天最新的版本已经更新到了linux-4.7.2了,里面大部分的哲学思想没有被更新,内核的主要精华保留下来了。
- Linux内核中的设备模型已经产生了一定的变化,但至今已经比较稳定了,在Linux-2.6.35之后,稳定的设备模型由3大部分组成:总线、设备、驱动,这3个部分构成了内核驱动模块的核心。
- 如果对Linux内核开发一无所知,可以先了解一些社区的网站http://www.kernelnewbies.org
- 如果你实在不知道该如何进行linux的内核开发,可以尝试在kernelnewbies上找一些简单的任务做做,做熟了就大概知道要做一些什么了,入口在这http://www.janitor.kernelnewbies.org
未完待更新
更新:2016年9月12日 10:55:57
- Linux内核与U-Boot中使用的汇编指令根式遵照的是AT&T的格式,与X86所遵循的INTEL格式有差异
- AT&T汇编使用的小写字母的格式,比如 mov r0, r1
- INTEL汇编使用的大写字母的格式,比如 MOV R0,R1