实时操作系统,Kernel部分完成于2006年上半年,其IPC部分甚至是年中时才具备相 应的雏形。最开始时是因为要为朋友做一个小型的手持设备,而本人起初又是另一国内老牌 实时操作系统:DOOLOO RTOS开发人员,但这个团队在2005年底已经解散。但朋友的系统要 上,用其他小型系统吗,一不熟悉,二看不上。答应朋友的事,总得有解决方法吧,即使是原来 的DOOLOO RTOS,因为其仿VxWorks结构,导致它的核心太大,包括太多不必要的东西(一套 完整的libc库),这些方案都否决了。怎么办?当时朋友那边也不算太急,先自己写一套内核吧。 这个就是源头!(后来虽然朋友的项目夭折了,但这套OS则保留下来了,并开源了,万幸)
1 序 3
1.1 RT-Thread诞生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 艰难的发展期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 一年增加0.0.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Cortex-M3的变革 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 面向对象设计方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6 文档结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 实时系统 7
2.1 嵌入式系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 实时系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 软实时与硬实时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 快速入门 11
3.1 准备环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 初识RT-Thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 系统启动代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4 用户入口代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.5 跑马灯的例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.6 生产者消费者问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4 RT-Thread简介 25
4.1 实时内核 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2 虚拟文件系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.3 轻型IP协议栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4 shell系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.5 图形用户界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.6 支持的平台 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5 内核对象模型 29
5.1 C语言的对象化模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2 内核对象模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6 线程调度与管理 39
6.1 实时系统的需求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39