从RTOS到Linux0.12进阶之路

近些年,RTOS在国内发展迅猛,尤其是国产操作系统RT_Thread更是隐隐成为国内RTOS一哥。随着RTOS生态不断完善,资料也逐渐齐全,相信不少工程师已经涉猎颇深。

笔者也有过约两年的RTOS开发经验,对arm体系架构有一定研究,两年前曾经研读过RT-Thread/ucosiii内核,对RT-Tread常用组件的基本原理基本实现了源码级的剖析,如FS控制台、虚拟文件系统、LWIP协议栈、ulog日志、动态模块、posix接口、slab机制、AMP调度等等,受益颇深。当然也尽了自己绵薄之力,为RT-Thread提交了少数pr,算是为国产RTOS做了小小贡献。

当时自信对RTOS的掌握还是比较到位的,于是,转身投入Linux怀抱,刚开始的时候,一度天真地认为,有了RTOS基础,上手Linux应该不难。

入坑

现在看回去当初的这个认知,真想一巴掌拍死自己。

现在市场上的Linux教程,基本集中精力在教你怎么移植原厂的uboot、kernel,怎么跟着套路来写一个led驱动、iic/spi驱动、摄像头驱动、音视频驱动等等。

笔者入门Linux也是从一个led驱动开始的。有毅力跟着教程做下来,不懂多问人,倒也能把驱动做出来。刚开始做出来的时候,还是挺兴奋的,想着自己真牛逼。后来发现,原来没几个做不出来

直到有一天自己萌生了自己看linux源码的想法...

在Linux源码里面,仿佛以前掌握的RTOS知识变得一文不值了...

在RTOS里面,任务没法独自占有全部内存空间,没有二级查表、没有特权级转换、没有系统调用、没有内核态/用户态的区别、没有TTS保存内核堆栈、没有全局描述符、没有中断描述符...

我内心是崩溃的,这些东西对我而言,就是一个黑盒子。我这么一个linux驱动工程师,熟练掌握各种驱动开发,uboot/内核移植,却对Linux的构造竟然一无所知。

我不服气却又不得不服,想要深入了解却投学无门,市面上内核分析的书籍大部分都是x86架构,部分arm架构的书籍也是晦涩难懂,于是我选择了难度最小的Linux0.11开始研究。

一番学习总结,总算对Linux有了一个整体的认识,而不再似懂非懂,内心的痛苦也逐渐减轻。赵炯博士的《Linux完全剖析基于0.12内核》,对我帮助非常大,是一本难得的好书。虽然在今天,Linux0.12已经没有工程价值,也与今天的Linux系统差异甚大。

但是,麻雀虽小,五脏俱全,Linux0.12有汇编、组成原理、硬件控制和操作系统理论的基础。用三、四个月啃完一遍之后,酣畅淋漓的感觉,非常爽!完全弥补了RTOS与Linux之间的鸿沟

虽然《Linux完全剖析基于0.12内核》注释详尽,但是其中硬件寄存器这一块的描述比较抽象,篇幅较长,而且x86架构的硬件知识和x86汇编对嵌入式Linux工程师意义不大,投入过多时间性价比不高。因此笔者志在用一期短小精悍的文章把硬件部分知识总结起来,用精简的代码把cpu提供的硬件机制给描述清楚,每篇文章将配套相应的实验,代码可以在qemu中进行模拟验证,也可以在实体pc机上运行,还是比较富有趣味性的,希望能让大家无痛过渡到Linux0.12内核源码的核心阅读中去。

后续有精力会再出二期,阐述各种linux内核有趣的原理,比如虚拟地址怎么玩、进程如何独占4G内存空间、自己解析运行一个elf文件、自己设计一套Unix经典文件系统等等,体验在RTOS上难以感受的快感。

志在从RTOS过渡到Linux内核的小伙伴,不妨尝试从Linux0.12开始入手。一起讨论进步,一起向Linux 2.x/3.x/4.x/5.x迈进!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值