我的内核学习之路

1>Linux内核完全剖析 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并行学
3 4并行学
5 就是把 
例如 USB协议+操作USB控制器代码+用内核基本组件装到了一个架构里面为了提高效率

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


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

研究有多深了,视频只是入门,深入还要靠自己.......

从1 走到 5 我花了一年6个月,当时我的工作,突然好久没活,可以说有大把的时候学习,,,,当时对自己好很,星期天早上8点起来学习,,,,,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值