前言
如何学习本书
本书是首本系统讲解RT-Thread的中文书籍,共分为两个部分。第一部分重点讲解RT-Thread的原理实现,从0开始,不断迭代,教你把RT-Thread的内核写出来,让你彻底学会线程是如何定义的、系统是如何调度的(包括底层的汇编代码讲解)、多优先级是如何实现的等操作系统的最深层次的知识。当你拿到本书开始学习的时候,你一定会惊讶,原来RTOS的学习并没有那么复杂,反而是那么有趣;原来自己也可以写RTOS,成就感立马爆棚。
当彻底掌握第一部分的知识之后,再学习其他RTOS,可以说十分轻松。纵观现在市面上流行的几种RTOS,它们的内核实现差异不大,只需要深入研究其中一种即可,没有必要对每一种RTOS都深入地研究源码,但如果时间允许,看一看也并无坏处。第二部分重点讲解RT-Thread的移植、内核中每个组件的应用,比起第一部分,这部分内容掌握起来应该比较容易。
全书内容循序渐进,不断迭代,尤其在第一部分,前一章是后一章的基础,必须从头开始阅读,不能进行跳跃式的阅读。在学习时务必做到两点:一是不能一味地看书,要把代码和书本结合起来学习,一边看书,一边调试代码。如何调试代码呢?即单步执行每一条程序,看程序的执行流程和执行的效果与自己所想的是否一致。二是在每学完一章之后,必须将配套的例程重写一遍(切记不要复制,即使是一个分号,但可以照书录入),做到举一反三,确保真正理解。在自己写的时候难免错误百出,要珍惜这些错误,好好调试,这是你提高编程能力的最好机会。记住,程序不是一气呵成写出来的,而是一步一步调试出来的。
本书的编写风格
本书第一部分主要以RT-Thread Nano 3.0.3官方源码为蓝本,抽丝剥茧,不断迭代,教你如何从0开始把RT-Thread内核写出来。书中涉及的数据类型、变量名称、函数名称、文件名称、文件存放的位置都完全按照RT-Thread官方的方式来实现。学完这本书之后,你可以无缝地切换到原版的RT-Thread中使用。要注意的是,在实现的过程中,某些函数中会去掉一些形参和冗余的代码,只保留核心的功能,但这并不会影响我们学习。
本书第二部分主要介绍RT-Thread的移植和内核组件的使用,不会再去深入讲解源码,而是着重讲解如何应用,如果对第一部分不感兴趣,也可以跳过第一部分,直接进入第二部分的学习。
本书还有姊妹篇——《FreeRTOS内核实现与应用开发实战指南:基于STM32》,两本书的编写风格、内容框架和章节命名与排序基本一致,语言阐述类似,且涉及RTOS抽象层的理论部分也相同,不同之处在于RTOS的实现原理、内核源码的讲解和上层API的使用,这些内容才是重点部分,是读者学习的核心。例如,虽然两本书的第一部分的章节名称基本类似,但内容不同,因为针对的RTOS不一样。其中,关于新建RT-Thread工程和裸机系统与多线程(任务)系统的描述属于RTOS抽象层的理论部分,不具体针对某个RTOS,所以基本一样。第二部分中,对于什么是线程(任务)、阻塞延时和信号量的应用等RTOS抽象层的理论讲解也基本类似,但是具体涉及这两个RTOS的原理实现和代码讲解时则完全不同。
如果读者已经学习了其中一本书,再学习另外一本的话,那么涉及RTOS抽象层的理论部分可跳过,只需要把精力放在RTOS内核的实现和源码API的应用方面。因为现有的RTOS在理论层基本都是相通的,但在具体的代码实现上各有特点,所以可以用这两本书进行互补学习,掌握了其中一本书的知识,再学习另外一本书定会得心应手,事半功倍。
本书的参考资料和配套硬件
关于本书的参考资料和配套硬件的信息,请参考本书附录部分。
本书的技术论坛
如果在学习过程中遇到问题,可以到野火电子论坛www.firebbs.cn发帖交流,开源共享,共同进步。
鉴于水平有限,书中难免有错漏之处,热心的读者也可把勘误发送到论坛上以便改进。祝你学习愉快,RT-Thread的世界,野火与你同行。