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启动和内核启动,书东山视频可以帮你,驱动代码就要看你内核组件
研究有多深了,视频只是入门,讲不出,,,,,
这是一位兄群里兄弟的学习之路,拿出来分享下