linuxer

我认为的基本功包括两个方面:
1、linux的基本操作。内核中的很多设计都是源于应用,你不理解用户空间的操作,也就不会知道内核空间在干什么。这时候,你需要做的就是在自己的计算机上安装一个GNU/linux操作系统,Debian、Ubuntu什么的都OK,最好去掉其他的OS,这可以强迫你在linux下进行学习,工作,生活。在这个过程中,你可能需要google检索一些信息,安装一些软件,学习使用这些软件,理解一些基本的linux的背景知识......如果你想要从事底层的软件开发,那么尽量在终端下工作,这样会让你和linux kernel更接近一些,从而提供更多关于内核的基础知识。

2、第二个方面是软件相关的基础知识。你最好学习一些软件的逻辑思维,学习掌握一门语言,当然最好是c语言。掌握其基本的语法和语义,然后在linux环境下进行实际训练。这里不得不隆重推出一本经典之作《Unix高级环境编程》,仔细阅读这本书,然后动手实践,编写linux下的小程序,给自己找些乐子。

有了基本功之后,你可以选择强攻Linux kernel,不过呢我还是建议从一个小的RTOS入手,构建下面的知识体系:
1、关于OS的基本概念。什么是进程、什么是线程,什么是中断,什么是文件系统,什么是内存管理,什么是上下文,什么是设备管理等等。

2、关于处理器以及周边硬件的基础知识。可以选择ARM,也可以选择其他的处理器,主要是从软件角度来理解一个处理器,知道CPU的基本组成,知道什么是MMU,TLB,中断处理流程,总线的概念,什么是指令集等等。这时候,相信你会接触一些汇编指令,不一定要能写,但是一定要能读懂。

上面的阶段都没有接触Linux内核,但是不要着急,我们马上就要直面Linux内核了,第一个问题就是选择什么版本,不需要太新,但是越早的内核就会越简单,有助你可以把阅读linux内核代码的习惯持续下去。你有几个选择:
1、配合《Linux内核完全注释》来理解0.12内核。我没有看过这本书,听说不错。
2、配合《Linux内核情景分析》来理解2.4内核。当年就是这本书引领我来阅读内核的,我一直都对其充满感激之情
3、配合《深入理解linux内核》来理解2.6.10内核。非常好的书,强烈推荐,我基本上阅读了好几遍这本书,中文版一遍,英文版3遍,每次都有不同的收获。

阅读代码的过程有些枯燥,可以考虑撰写实际的驱动程序来调节一下,《Linux设备驱动》是不二之选。

 

最后,整理一些心得:
1、英语很重要、英语很重要、英语很重要。一定要学好英语,尽量看英文版书籍。
2、多动手,多思考,多总结。如果有机会,把自己的心得整理出来并发布,和其他工程师交流,这个过程可以有助于夯实你对Linux kernel的理解。
3、clone linux stable的代码仓库,多读一读git log,那是无穷的宝藏

https://blog.csdn.net/qq_16777851/article/details/87202588

http://www.wowotech.net/u-boot/boot_flow_1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘多拉的面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值