随笔分类 -  Linux内核

Linux内核(15) - 方法论
摘要:什么是方法论 方法论给人的第一感觉就是它是一个玄之又玄的很朦胧的东西,显然,学习本身就是一件很玄乎的事情,有些人整天潇潇洒洒没见怎么用心就能够获得很好的成绩,而有些人则相反,投悬梁锥刺骨也还是成绩平平收获平平。这里面很大一部分的原因就是方法论。 当然因为每个人的情况并不相同,也就没有这样一个标准的方 阅读全文

posted @ 2018-02-14 20:23 AlanTu 阅读(207) 评论(0) 推荐(0) 编辑

Linux内核(14) - 二分法与printk
摘要:人生就是一个茶几,上面摆满了杯具。内核也是一个大茶几,不过它上面的杯具是一个个的bug。确定bug什么时候被引入是一个很关键的步骤,在这个定位bug的过程中,不论有意或无意,都会很自然地用到二分查找的方法。 二分查找法的基本原理 对于二分查找法,我们不会也不应该会感到陌生。作为一种高效的查找算法,它 阅读全文

posted @ 2018-02-14 20:22 AlanTu 阅读(408) 评论(0) 推荐(0) 编辑

Linux内核(13) - 子系统的初始化之以PCI子系统为例
摘要:由Kconfig这张地图的分布来看,PCI这块儿的代码应该分布在两个地方,drivers/pci和arch/i386/pci,两岸三地都属于一个中国,不管是drivers/pci那儿的,还是arch/i386/pci那儿的,也都只属于一个PCI子系统,本着一个中国的原则,咱们要统筹的全面的考察分析位 阅读全文

posted @ 2018-02-14 20:21 AlanTu 阅读(1008) 评论(0) 推荐(0) 编辑

Linux内核(12) - 子系统的初始化之那些入口函数
摘要:内核选项的解析完成之后,各个子系统的初始化即进入第二部分—入口函数的调用。通常USB、PCI这样的子系统都会有一个名为subsys_initcall的入口,如果你选择它们作为研究内核的切入点,那么就请首先找到它。 朱德庸在《关于上班这件事》里说,要花前半生找入口,花后半生找出口。可见寻找入口对于咱们 阅读全文

posted @ 2018-02-14 20:20 AlanTu 阅读(763) 评论(0) 推荐(0) 编辑

Linux内核(11) - 子系统的初始化之内核选项解析
摘要:首先感谢国家。其次感谢上大的钟莉颖,让我知道了大学不仅有校花,还有校鸡,而且很多时候这两者其实没什么差别。最后感谢清华女刘静,让我深刻体会到了素质教育的重要性,让我感到有责任写写子系统的初始化。 各个子系统的初始化是内核整个初始化过程必然要完成的基本任务,这些任务按照固定的模式来处理,可以归纳为两个 阅读全文

posted @ 2018-02-14 20:19 AlanTu 阅读(753) 评论(0) 推荐(0) 编辑

Linux内核(10) - 内核中的链表
摘要:早上上班坐地铁要排队,到了公司楼下等电梯要排队,中午吃饭要排队,下班了追求一个女孩子也要排队,甚至在网上下载个什么门的短片也要排队,每次看见人群排成一条长龙时,才真正意识到自己是龙的传人。那么下面咱们就说说队列(链表)。 使用链表的目的很明确,因为有很多事情要做,于是就把它放进链表里,一件事一件事的 阅读全文

posted @ 2018-02-14 20:18 AlanTu 阅读(268) 评论(0) 推荐(0) 编辑

Linux内核(9) - 精华版 之 方法论
摘要:到目前为之,博客上分享的精华篇都可以归为方法论的范畴,在很多时候,都是方法论要比细节紧要得多。而这些精华篇又可细分为三个专题:Linux大史记;内核学习的方法论;驱动开发的方法论。 Linux大史记 除去那些精彩的“门”,我们生活中乏味的事情太多了,所以不希望再去按惯例花个一二页的篇幅乏味的写个“L 阅读全文

posted @ 2018-02-14 20:17 AlanTu 阅读(229) 评论(0) 推荐(0) 编辑

Linux内核(8) - 设备模型(下)
摘要:设备模型拍得再玄幻,它也只是个模型,必须得落实在具体的子系统,否则就只能抱着个最佳技术奖空遗恨。既然前面已经以USB子系统的实现分析示例了分析内核源码应该如何入手,那么这里就仍然以USB子系统为例,看看设备模型是如何软着陆的。 内核中USB子系统的结构 我们已经知道了USB子系统的代码都位于driv 阅读全文

posted @ 2018-02-14 20:15 AlanTu 阅读(335) 评论(0) 推荐(0) 编辑

Linux内核(7) - 设备模型(上)
摘要:对于驱动开发来说,设备模型的理解是根本,毫不夸张得说,理解了设备模型,再去看那些五花八门的驱动程序,你会发现自己站在了另一个高度,从而有了一种俯视的感觉,就像凤姐俯视知音和故事会,韩峰同志俯视女下属。 顾名而思义就知道设备模型是关于设备的模型,既不是任小强们的房模,也不是张导的炮模。对咱们写驱动的和 阅读全文

posted @ 2018-02-14 20:14 AlanTu 阅读(319) 评论(0) 推荐(0) 编辑

Linux内核“问题门” - 学习问题、经验集锦
摘要:陈宪章说:“学贵有疑,小疑则小进,大疑则大进。疑者,觉悟之机也,一番觉悟一番长进。” 培根说:“多问的人将多得。” 还在学校的时候导师在激情讲演之后对着会议室里形态各异但均静默不语的我们痛心疾首的说:“会提问题很重要啊,同志们!不会提问题怎么有资格做研究!” 这样铿锵有力的训诫今日想起仍觉深受刺激, 阅读全文

posted @ 2018-02-14 20:13 AlanTu 阅读(262) 评论(0) 推荐(0) 编辑

Linux内核(6) - 模块机制与“Hello World!
摘要:有一种感动,叫内牛满面,有一种机制,叫模块机制。显然,这种模块机制给那些Linux的发烧友们带来了方便,因为模块机制意味着人们可以把庞大的Linux内核划分为许许多多个小的模块。对于编写设备驱动程序的开发者来说,从此以后他们可以编写设备驱动程序却不需要把她编译进内核,不用reboot机器,她只是一个 阅读全文

posted @ 2018-02-14 20:09 AlanTu 阅读(276) 评论(0) 推荐(0) 编辑

Linux内核(5) - 内核学习的相关资源
摘要:“世界上最缺的不是金钱,而是资源。”当我在一份报纸上看到这句大大标题时,我的第一反应是——作者一定是个自然环保主义者,然后我在羞愧得反省自身的同时油然生出一股对这样的无产主义理想者无比崇敬的情绪来。 于是,我继续往下看,“因此在XXX还未正式面市之时,前来咨询的客户已经不少,这些有眼光的购房者明白, 阅读全文

posted @ 2018-02-14 20:04 AlanTu 阅读(266) 评论(0) 推荐(0) 编辑

Linux内核(4) - 内核学习的心理问题
摘要:对于学习来说,无论是在学校的课堂学习,还是这里说的内核学习,效果好或者坏,最主要取决于两个方面——方法论和心理。注意,我无视了智商的差异,这玩意儿玄之又玄,岔开了说,属于迷信的范畴。 前面又是Kernel地图,又是如何入手,说的都是方法论的问题,那么这里要面对的就主要是心理上的问题。 而心理上的问题 阅读全文

posted @ 2018-02-14 20:02 AlanTu 阅读(234) 评论(0) 推荐(0) 编辑

Linux内核(3) - 分析内核源码如何入手(下)
摘要:下面的分析,米卢教练说了,内容不重要,重要的是态度。就像韩局长对待日记的态度那样,严谨而细致。 只要你使用这样的态度开始分析内核,那么无论你选择内核的哪个部分作为切入点,比如USB,比如进程管理,在花费相对不算很多的时间之后,你就会发现你对内核的理解会上升到另外一个高度,一个抱着情景分析,抱着0.1 阅读全文

posted @ 2018-02-14 20:01 AlanTu 阅读(606) 评论(0) 推荐(0) 编辑

Linux内核(2) - 分析内核源码如何入手(上)
摘要:透过现象看本质,兽兽们无非就是一些人体艺术展示。同样往本质里看过去,学习内核,就是学习内核的源代码,任何内核有关的书籍都是基于内核,而又不高于内核的。 既然要学习内核源码,就要经常对内核代码进行分析,而内核代码千千万,还前仆后继的不断往里加,这就让大部分人都有种雾里看花花不见的无助感。不过不要怕,孔 阅读全文

posted @ 2018-02-14 20:00 AlanTu 阅读(477) 评论(0) 推荐(0) 编辑

Linux内核(1) - Kernel地图:Kconfig与Makefile
摘要:Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人。 毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗 阅读全文

posted @ 2018-02-14 19:53 AlanTu 阅读(449) 评论(0) 推荐(0) 编辑

Linux内核配置解析 - Boot options
摘要:1. 前言 本文将介绍ARM64架构下,Linux kernel和启动有关的配置项。 注1:本系列文章使用的Linux kernel版本是“X Project”所用的“Linux 4.6-rc5”,具体可参考“https://github.com/wowotechX/linux.git”。 2. K 阅读全文

posted @ 2018-02-13 22:24 AlanTu 阅读(3504) 评论(0) 推荐(0) 编辑

Linux内核配置解析 - 概述(基于ARM64架构)
摘要:1. 前言 对刚接触Linux kernel的同学来说,遇到的第一个问题就是:我该从哪里入手?、 话说Linux kernel的打开方式是多种多样的:从简单的设备驱动入手;从源代码的目录结构入手;从kernel的启动过程入手;从大的功能模块入手;等等。不管怎样,每条都是正途(条条大路通罗马嘛)。 而 阅读全文

posted @ 2018-02-13 22:17 AlanTu 阅读(5522) 评论(0) 推荐(0) 编辑

实模式与保护模式
摘要:1. 实模式,又叫实地址模式,CPU完全按照8086的实际寻址方法访问从00000h--FFFFFh(1MB大小)的地址范围的内存,在这种模式下,CPU只能做单任务运行;寻址公式为:物理地址=左移4位的段地址+偏移地址,即:物理地址是由16位的段地址和16位的段内偏移地址组成的。 2.保护模式,又叫 阅读全文

posted @ 2018-02-13 21:20 AlanTu 阅读(1375) 评论(0) 推荐(0) 编辑

Linux高速缓冲区原理
摘要:文件系统-高速缓冲区: 首先我们为什么需要高速缓冲区而不是直接访问块设备中的数据。这是因为,IO设备和内存之间的读写速度不匹配而且有一点数据需要写入或者读出磁盘就访问磁盘,磁盘很快就会损坏,而高速缓冲区就起了一个中间过程的作用,把数据存在高速缓冲区中,需要读取磁盘上的数据时,尝试匹配高速缓冲区中的数 阅读全文

posted @ 2018-02-13 21:18 AlanTu 阅读(3967) 评论(0) 推荐(0) 编辑

导航