1.学校学习
对Linux的认识是在大三时接触的,学校开了门嵌入式的课程,上学期血ARM的架构,下学期学Linux入门。
主要学习的知识:
学习ARM架构。
Linux基本的指令操作。
NFS文件的挂载。
ui部分的简单学习。
makefile文件的编写,简单的应用程序编写,gcc工具,vi,gdb工具的使用。
基本是简单的入门学习,还没有到内核驱动部分的学习。
2.自学
后来自己买了块FL2440开发板,学习了几个月,主要是按照开发板的教程一步步的学习,在这段时间主要看到下面书籍
阅读了《Linux设备驱动开发详解》-------大部分的知识都不理解 。
看国嵌的视频,大概看了整体视频。
自己测试者编写简单的驱动--------知道了驱动编写的模型,驱动编辑进内核,驱动的加载修改的东西。
这段时间的自学发现很多东西不了解,特别是操作系统相关的知识。
3.工作了陆续的学习
在工作着2年的时间,用周末的时间在公司看书,阅读操作系统相关书籍。
操作系统相关书籍:
《深入理解计算机系统》 --是一本很经典的书,看这本书的收获,理解了内存管理,链接详细的过程,计算机体系架构,虚拟内存管理,代码优化相关知识。
《操作系统--精髓与设计原理》--这本书主要讲解操作系统相关的知识,还是线程进程相关的知识,内存管理,进程调度,并发操作相关的知识。
阅读了这两本书,对操作系统相关的知识有里深入的理解,接下来阅读Linux内核相关的书籍。
Linux内核相关书籍:
《Linux内核设计与实现》--这本书相对于其他的Linux内核书籍简单,看完这本书对Linux内核有了整体的理解。
《深入Linux内核架构》--这本书没有完全看完,主要是和Linux内核设计与实现掺合这看,内容更加详细些,可相互的补充。
《深入理解Linux内核》--这本书看起来比较难理解,没有完全看完,主要还是掺合这看。
上面书籍的阅读收获对虚拟文件系统,进程地址空间,物理内存管理部分有里深入的理解。
又重新看里下《Linux设备驱动开发详解》,和上面的内核书籍结合一起看,对内核的驱动部分的驱动模型,sysfs,设备的热插拔,驱动模块化,驱动的加载相关的内容有了更深里理解。
期间阅读的其他相关书籍
《c专家编程》
《C陷阱与缺陷》--这两本书是很好的书,主要是多C语言进一步学习和理解。
《程序员的自我修养--装载,链接与库》--学习了静态链接,动态链接,库相关的操作。
《代码大全2》--这本上的收获太多了,好的编程习惯,防御式编程,表驱动法。
能力有限,这些书籍理解的也是有限。。。。。。