我的linux内核学习之路(送新手)

时间:2022-12-13 16:13:35
1>LINUX 0.11 这本书 ---学这个主要是懂内核结构和心脏,他专门实现操作系统,不太注重效率
         2.6为了实现效率出现了好多新的数据结构和概念,直接看不行,抓不着头脑
2>单片机 单片机好多外围接口,比如IIC USB SDIO SPI UART都是直接操作控制器的
       学习这个更直接,更明白硬件,比如学习USB USB协议+USB主从硬件+3代码
  LINUX 驱动把单片机程序封装在一个架构里面,直接看跟本不行,要有单片机基础
  
3>学习2.6内核 《LINUX内核设计与实现》为主,《深入理解LINUX内核》为附,
前一本讲的不深能入门,后一本讲的深,直接深入不进去
    ---这两本书 缓存管理,文件系统,块层,我都是大体的看下,没有太深入
intertupt,workqueue,tasklet,waitq,kthread,notification_chain,kfifo,klist,
这些内核组件是内核代码组成的根本,会用不行,要搞明白原理,比如 waitq
他由派生出来的 信号量,互斥体,完成变量,这些都会修改CPU的执行顺序,
内核代码或驱动代码跟应用层不太一样,他不是按 main函数顺序调用走下去的,
他是在进程间调度来调度去,好多你看到的都是代码片段,跟本不能按函数顺序
调用跟踪代码
------带着这个问题可以研究下,为什么中断上下文中不能用延时函数
 
CNBLOG里面有人写《Linux内核设计与实现》读书笔记,相当的好,
 http://www.cnblogs.com/wang_yb/archive/2013/05/23/3095907.html#2924986
 
 
4>开发板子,开始学习 移植UBOOT 内核 文件系统,先搞明白ARM的硬件组成,和板子的组成
            这个主要用到编译的知识,就是makefile+shell
要求搞明白那个 zImage生成过程和组成结构,UBOOT和内核启动过程,
   《深入理解LINUX网络技术内幕》有一章<组件初始化的内核基础架构>很好
要求明白文件系统的挂载过程,各种文件系统的区别,多看内核启动日志



5>看驱动程序,/linux/drivers/。。。工作中用着那个研究那个去吧


----不了解上面的基本组件和调度原理,根本不知道程序怎么顺序走--------




如果基本组件搞明白了,5就很容易懂了,,,
看看你少那块知识,不是你看不懂,而是你还没有学习相关的知道
直接上来就驱动,,,头大,




1 2并行学
2 3 并行学
5 就是把 
例如 USB协议+操作USB控制器代码+用内核基本组件装到了一个架构里面为了提高效率

我当时是先学习的 1  3  4  5 ,2 没有学,不过现在知道这个2的重要性了,好多时候,
我都看STM32的书,STM32资料写的太全了


上面是我学习内核之路,高人不笑啊,哈哈,,有了上面的基础,真正的学习才刚刚开始
多看高人写的BLOG,UBOOT启动和内核启动,书东山视频可以帮你,驱动代码就要看你内核组件

研究有多深了,视频只是入门,讲不出,,,,,

这是一位兄群里兄弟的学习之路,拿出来分享下