(转载)小白的linux设备驱动归纳总结(一):内核的相关基础概念---学习总结
1. 学习总结
小白的博客讲的linux内核驱动这一块的东西比较基础,因此想通过学习他的博客,搭配着看书的方式来学习linux内核和驱动。我会依次更新在学习小白的博客的过程的感悟和体会。
2.1 内核2.6.29开发环境的建立:
在看到作者小白说他用的内核是2.6.29,我就想采用跟他一样的环境来还原他的所有实验过程。因此后面就有了找内核源码、Ubuntu系统、虚拟机安装Ubuntu系统、内核版本更换(更低版本)的方法、
现在一一讲解:
因为看这一篇文章以为内核和Ubuntu系统的内核版本必须一样,就查了一下如何如何查看内核和Ubuntu的版本信息、
- sudo lsb_release -a //查看Ubuntu版本信息
- cat /etc/issue //查看Ubuntu版本信息
- uname -r //查看内核版本信息
内核和Ubuntu系统的网址以及下载方法:
- Linux内核源代码获取教程
- 欢迎访问网易开源镜像站 ubuntu-releases为unbuntu系统的 kernel是内核的
- Ubuntu更换内核方法
- 给ubuntu换内核
- ubuntu14.04手动更换内核方法
- Ubuntu更换Linux内核版本
后来发现在不同版本的Ubuntu系统上也可以运行2.6.29的内核。
目前我试验的Ubuntu系统的版本为10.04-LTS,它的内核版本为:2.6.32
而我试验的内核与小白博主的内核一样都为2.6.29
2.2 重点内容的总结和感悟:
本文主要包括三个部分:
- 内核代码树(这个在很多内核的书中都有讲述)
- 通过增加一个目录的方式来介绍内核目录生成过程
- 模块、内核的编译命令
内核读取数据、图形界面选择,生成内核的原理如下:
- 一般我们会从/arch/arm/config目录下的拷贝一个默认配置的Kconfig文件到内核跟目录下并改名为config
- 由总Makefile决定编译的体系结构(ARCH). 编译工具(CROSS_COMPILE),并知道需要进去哪些内核根下的哪些目录进行编译。
- 由arch/$(ARCH)/Makefile,决定arch/$(ARCH)下还有 的哪些目录和文件需要编译。
- 知道了需要编译的目录后,递归的进入哪些目录下,读取每一个Kconfig的信息,生成了图形配置的界面。
- 通过我们在图形配置界面中选项为[*]、[M]或者[]。
- 保存并退出配置,会根据配置生成一份新的配置文件.config,并在同时生成include/config/auto.conf(这是.config的去注释版)。文件里面保存着CONFIG_XXXX等变量应该取y还是取m。
- 、根据Makefile包含的目录和配置文件的要求,进去个子目录进行编译,最后会在各子目录下 生成一个.o或者.a文件,然后总Makefile指定的连接脚本 arch/$(ARCH)/kernel/vmlinux.lds生成vmlinux,并通过 压缩编程bzImage,或者按要求在对应的子目录下编译成 模块。
2.3 错误以及理解不到位的地方:
- 楼主有个错误点吧-y表示编译进内核吧-m表示编译到模块
- 楼主在arch/arm/Kconfig中添加:source "drivers/test/Kconfig"并不会出现想要的目录。而如果在test1的上层目录(driver)下的Kconfig中加入source "drivers/test/Kconfig"就会出现想要的目录。
2. 参考帖子
原创链接:linux设备驱动归纳总结(一):内核的相关基础概念
(转载)小白的linux设备驱动归纳总结(一):内核的相关基础概念---学习总结的更多相关文章
- linux设备驱动归纳总结(四):5.多处理器下的竞态和并发【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-67673.html linux设备驱动归纳总结(四):5.多处理器下的竞态和并发 xxxxxxxxxx ...
- linux设备驱动归纳总结(十三):1.触摸屏与ADC时钟【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-119723.html linux设备驱动归纳总结(十三):1.触摸屏与ADC时钟 xxxxxxxxxx ...
- linux设备驱动归纳总结(十二):简单的数码相框【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-116926.html linux设备驱动归纳总结(十二):简单的数码相框 xxxxxxxxxxxxxx ...
- linux设备驱动归纳总结(十一):写个简单的看门狗驱动【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-112879.html linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxx ...
- linux设备驱动归纳总结(十):1.udev&misc【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-111839.html linux设备驱动归纳总结(十):1.udev&misc xxxxxxx ...
- linux设备驱动归纳总结(九):1.platform总线的设备和驱动【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-111745.html linux设备驱动归纳总结(九):1.platform总线的设备和驱动 xxxx ...
- linux设备驱动归纳总结(八):4.总线热插拔【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-110774.html linux设备驱动归纳总结(八):4.总线热插拔 xxxxxxxxxxxxxxx ...
- linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-110738.html linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想 xxxxxx ...
- linux设备驱动归纳总结(八):2.总线、设备和驱动的关系【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-110295.html linux设备驱动归纳总结(八):2.总线.设备和驱动的关系 xxxxxxxxx ...
随机推荐
- vs2015配置link.exe环境变量
https://www.cnblogs.com/johnwii/p/4966086.html
- selenium3 web自动化测试框架 三:项目实战中PO模型的设计与封装
po模型设计思想 Page Object 模式主要是将每个页面设计为一个class,其中包含页面中的需要测试的元素(按钮,输入框,标题等),这样在Selenium测试页面中可以通过调取页面类来获取页面 ...
- leetcode1277 Count Square Submatrices with All Ones
思路: 使用动态规划,dp[i][j]表示以(i, j)作为右下角的最大的全1矩阵的边长. 实现: class Solution { public: int countSquares(vector&l ...
- eclipse搭建springboot的项目
记录一次自己搭建springboot的经历 springboot项目创建 这里借用别的博主分享的方法 https://blog.csdn.net/mousede/article/details/812 ...
- Fiddler之基础:面板、图标介绍
1.面板介绍:菜单栏,工具栏,回话面板,监控面板 2.工具栏-图标 3.会话面板-图标 4.监控面板 5.状态栏 控制台Fiddler的左下角有一个命令行工具叫做QuickExec,允许你直接输入命令 ...
- 关于npm install 报错 EAI_AGAIN reason: getaddrinfo EAI_AGAIN registry.npmjs.org
在公司里使用了isa连接外网,刚开始使用npm 安装依赖的时候一直报错EAI_AGAIN reason: getaddrinfo EAI_AGAIN registry.npmjs.org,我们的老大给 ...
- laravel中间件的实现原理
中间件的实现原理 运用 array_reduce 以及 call_user_func 实现 interface Middleware { public static function handle(C ...
- Excel常见文本清洗函数
1.=LEFT(text,[num_chars]) 函数RIGHT具有相似功能 例如选出K列中,从左数前一个字符:= LEFT(k2,1) 2.=FIND(find_text,within_tex ...
- PAT(B) 1018 锤子剪刀布(C:20分,Java:18分)
题目链接:1018 锤子剪刀布 分析 用一个二维数组保存两人所有回合的手势 甲乙的胜,平,负的次数刚好相反,用3个变量表示就可以 手势单独保存在signs[3]中,注意顺序.题目原文:如果解不唯一,则 ...
- 1223: 输出汉诺塔问题的盘子移动步骤(Java)
一.题目 http://acm.wust.edu.cn/problem.php?id=1223&soj=0 二.代码 import java.util.*; public class Main ...