rtt书稿 内容大讨论

19 views
Skip to first unread message

prife

unread,
Dec 26, 2011, 12:28:21 AM12/26/11
to rt-thread-cnusers
rt-thread书稿
书名定为:《RT-Thread嵌入式实时操作系统权威指南》

今天大家在rt-thread的官方QQ群里,对于rtt的第一本书的内容,大家进行了激烈的讨论。由于参与人数众多,每个人的观点都列出有些困难,因此做了稍微的整理合并,如下。(参与讨论而未列出的同学请勿介怀)

傻孩子:
目前你这本书更多的属性是一个产品手册,因此出版意义不大
如果你换一个视角,则很不一样
简单说,就是带读者走一遍,你是如何开发RT-Thread的
因为在中国人写那本书之前UCOS已经在行业中有一席之地了
因为我给他说,你的书里面有一个大实例,而且也讲了原理
他建议,把大实例作为标题的醒目部分提出来。
例如可以叫这个名字 《从0开始搭建网络收音机——使用RT-Thread》
强调实践是一个很好的市场策略——至少编辑们都很市场……
突出网络收音机,绝对是卖点
bernard,我建议你还是以电子版为起点比较好
这本书一分为二:
一本User Guide,这个作为电子版本。
一本实践指南——以STM32网络收音机为蓝本,这个出版,介绍如何用RT-Thread搭建网络收音机,但是内容必须结合User Guide来。


夏宇萧飏:
其实我一开始就建议熊哥了,写成从裸奔到系统的书 
裸奔、前后台的开发思维和习惯,跟RTOS的编码方式,思维方式差别很大
可以从这方面入手
我觉得从应用的角度来写,适用面和对RTT的推广会更有好处?
就是讲,如何使用RTT从裸奔者的角度,如何踏入这个门槛
如果想写大部头,就写成 Step By Step
建议从应用入手
比如信号量,为什么要用信号量,在应用的时候就可以穿插的讲
另一个地方,用到了邮箱,那就可以讲讲为什么这里不用信号量,而要用邮箱。这里就可以穿插讲讲线程之间通讯的方式和区别

不要想一本书就包打天下。书只能是引读者入门,入门了,才能将深入
一开始就将那么深入,虽然是好心,但没有口碑,读者很难接受的
我跟小马、傻孩子一样的观点:RTT原理部分,出电子版就好了。
写书,应该以应用为主电子版本的User Guide是必要的
但如果你有精力,有这个心愿,出版一本应用范例。这个大家都很欢迎啊

有些同学觉得,因为RTT现在不出名,所以书要将RTT完整展现一遍,然后再讲应用
其实恰好相反啊,不出名,谁会静下心来将整个原理都看一遍?
这样的情况,就是要从一个完整的应用入手来介绍才好啊
每个阶段,尽量从入门者的角度去考虑。要点提,为什么这么做
这个也是为什么这次会把STM32网络收音机拆分出来的缘由
写细了,就不会粗略了
现在的粗略,其实有一个原因。你自己是大师,很多东西你认为不需要讲的,但其实对初学者很有必要的

这个书稿,Bernard你要让初学者,入门者去看就跟白居易写诗一样

小马:
不如写如何利用rtt开发一个完整产品,比如说网络收音机
开发应用实例
因为需要看书的人,跟多的是需要知道如何用rtt开发产品
我看了书后,只要能用rtt开发自己的产品就可以了,管你什么原理啊。rtos的原理书我已经看过太多,无非就是些进程的调度,信号量等
应用实例最重要,而这方面的书不多
应用为主,穿插介绍原理,这是我的建议

天涯:
最好有技术细节 
我一定回去买一本 
没有几个人会去搞原理的。
工科的思维是: 
稳定吗?怎么用?用到产品上去 
原理可以简要的说
核心的原理用该有的,比如调度啊,中断啊
最好有实例,如果实例不多,一般人不敢用的
我这个建议,以后还可以出系列……

bernard:
从这本书的角度来说,我希望它能够成为经典,而不是标题党
希望需要使用RTOS来编写程序的,能够从书上得到基本的指引,这样也不见得会固定在RT-Thread上
所以从深度上来说,我希望能够有所体现
但是也希望面向的读者面能够更宽一些,使得初学者,能够很快的建立起概念出来
所以,这本书必然会介绍调度算法、分时调度实现、IPC实现
User Guide以后应该是没有电子版了,而是目前的API online document
按照规划,这本书应该是后续应用系列书的铺垫


--
把有限的时间投入到无限的学习中去

prife

unread,
Dec 26, 2011, 1:00:32 AM12/26/11
to rt-thread-cnusers
基本书籍
《操作系统设计与实现》 minix那本经典著作
《嵌入式系统软件教程》
              作者:美 David Simon 译者 陈向群

在大讨论中,网友推荐的嵌入式方面的不错的书籍
《基于嵌入式实时操作系统的程序设计技术》
《嵌入式实时操作系统μC OS-II原理及应用》
             作者:任哲 
目录

目录

第1章 嵌入式实时操作系统的基本概念
1.1 计算机操作系统1
1.1.1 什么是计算机操作系统1
1.1.2 操作系统的作用和功能2
1.2 嵌入式系统和嵌入式操作系统3
1.2.1 嵌入式系统的基本概念4
1.2.2 嵌入式操作系统7
1.2.3 实时操作系统需要满足的条件9
1.2.4 嵌入式系统的任务及嵌入式实时操作系统11
1.3 嵌入式实时操作系统μC/OS-II简介12
1.4 小结13
1.5 练习题14

第2章 μC/OS-II中的任务
2.1 任务的基本概念15
2.1.1 任务的状态17
2.1.2 用户任务代码的一般结构18
2.1.3 系统任务20
2.1.4 任务的优先权及优先级别21
2.2 任务堆栈21
2.2.1 任务堆栈的创建22
2.2.2 任务堆栈的初始化24
2.3 任务控制块及任务控制块链表25
2.3.1 任务控制块的结构25
2.3.2 任务控制块链表26
2.3.3 任务控制块的初始化28
2.4 任务就绪表及任务调度29
2.4.1 任务就绪表的结构29
2.4.2 对任务就绪表的操作31
2.4.3 任务的调度32
2.5 任务的创建37
2.5.1 用函数OSTaskCreate()创建任务37
2.5.2 用函数OSTaskCreateExt()创建任务39
2.5.3 创建任务的一般方法39
2.6 任务的挂起和恢复46
2.6.1 挂起任务46
2.6.2 恢复任务47
2.7 其他任务管理函数53
2.7.1 任务优先级别的修改53
2.7.2 任务的删除53
2.7.3 查询任务的信息60
2.8 μC/OS-II的初始化和任务的启动60
2.8.1 μC/OS-II的初始化60
2.8.2 μC/OS-II的启动62
2.9 一个示例64
2.10 小结72
2.11 练习题73

第3章 μC/OS-II的中断和时钟
3.1 μC/OS-II的中断74
3.1.1 μC/OS-II的中断过程74
3.1.2 中断级任务切换函数78
3.1.3 应用程序中的临界段78
3.2 μC/OS-II的时钟80
3.3 时间管理88
3.3.1 任务的延时88
3.3.2 取消任务的延时89
3.3.3 获取和设置系统时间93
3.4 小结96
3.5 练习题97

第4章 任务的同步与通信
4.1 任务间的同步和事件控制块98
4.1.1 任务间的同步98
4.1.2 事件99
4.1.3 事件控制块112
4.1.4 操作事件控制块的函数113
4.1.5 空事件控制块链表115
4.2 信号量及其操作115
4.2.1 信号量115
4.2.2 信号量的操作116
4.3 互斥型信号量和任务优先级反转124
4.3.1 任务优先级的反转现象124
4.3.2 互斥型信号量130
4.4 消息邮箱及其操作133
4.4.1 消息邮箱133
4.4.2 消息邮箱的操作133
4.5 消息队列及其操作139
4.5.1 消息队列139
4.5.2 消息队列的操作142
4.6 小结148
4.7 练习题149

第5章 信号量集
5.1 信号量集的结构150
5.1.1 信号量集的标志组150
5.1.2 等待任务链表152
5.1.3 对等待任务链表的操作154
5.2 信号量集的操作155
5.2.1 创建信号量集155
5.2.2 请求信号量集156
5.2.3 向信号量集发信号157
5.2.4 查询信号量集的状态163
5.2.5 删除信号量集166
5.3 小结167
5.4 练习题167

第6章 内存的动态分配
6.1 内存控制块168
6.1.1 可动态分配内存的划分168
6.1.2 内存控制块OS_MEM的结构169
6.1.3 空内存控制块链表170
6.2 动态内存的管理170
6.2.1 创建动态内存分区171
6.2.2 请求获得一个内存块173
6.2.3 释放一个内存块175
6.2.4 查询一个内存分区的状态179
6.3 小结184
6.4 练习题184

第7章 在51单片机上移植μC/OS-II
7.1 μC/OS-II移植的一般性问题185
7.1.1 可重入函数185
7.1.2 时钟节拍的产生186
7.1.3 任务堆栈的设计186
7.2 在51系列单片机上移植μC/OS-II187
7.2.1 改写文件OS_CPU.H187
7.2.2 任务堆栈的设计188
7.2.3 文件OS_CPU_C.C的改写194
7.2.4 几点必须注意的事项196
7.3 应用举例196
7.3.1 LED数码显示器的驱动程序196
7.3.2 51单片机串行接口的应用198
7.4 小结206
7.5 练习题206

第8章 在ARM7上移植μC/OS-II
8.1 移植规划207
8.1.1 编译器的选择207
8.1.2 ARM7工作模式的选择207
8.2 移植208
8.2.1 文件OS_CPU.H的编写208
8.2.2 文件OS_CPU_C.C的编写210
8.2.3 文件OS_CPU_A.S的编写216
8.2.4 关于中断及时钟节拍219
8.3 移植μC/OSII到LPC2000221
8.3.1 挂接SWI软件中断222
8.3.2 中断及时钟节拍中断222
8.3.3 一个基于μC/OSII和ARM的应用程序实例223
8.4 小结225
8.5 练习题225

第9章 μC/OS-II可剪裁性的实现
9.1 文件OS_CFG.H中用于系统裁剪的常量226
9.2 配置常量的解释228
9.2.1 OS_MAX_EVENTS228
9.2.2 OS_MAX_MEM_PARTS229
9.2.3 OS_MAX_QS229
9.2.4 OS_MAX_MEM_TASKS229
9.2.5 OS_LOWEST_PRIO229
9.2.6 OS_TASK_IDLE_STK_SIZE230
9.2.7 OS_TASK_STAT_EN230
9.2.8 OS_TASK_STAT_STK_SIZE230
9.2.9 OS_CPU_HOOKS_EN230
9.2.10 OS_MBOX_EN231
9.2.11 OS_MEM_EN231
9.2.12 OS_Q_EN231
9.2.13 OS_SEM_EN231
9.2.14 OS_TASK_CHANGE_PRIO_EN231
9.2.15 OS_TASK_CREATE_EN231
9.2.16 OS_TASK_CREATE_EXT_EN232
9.2.17 OS_TASK_DEL_EN232
9.2.18 OS_TASK_SUSPEND_EN232
9.2.19 OS_TICKS_PER_SEC232
附录A文件PC.C中的函数
A.1 字符显示函数233
A.1.1 显示一个字符的函数PC_DispChar()233
A.1.2 清屏幕一列显示的函数PC_DispClrCol()233
A.1.3 清屏幕一行显示的函数PC_DispClrRow()233
A.1.4 清屏函数PC_DispClrScr()234
A.1.5 显示字符串函数PC_DispStr()234
A.1.6 颜色常量的定义234
A.2 保存和恢复DOS环境的函数235
A.2.1 保存DOS环境的函数PC_DOSSaveReturn()235
A.2.2 恢复DOS环境的函数PC_DOSReturn()235
A.3 设置和获取中断向量的函数235
A.3.1 设置中断向量的函数PC_VectSet()235
A.3.2 获取中断向量的函数PC_VectGet()235
附录BμC/OS-II中使用的数据类型
附录CμC/OS-II在80x86上的移植
C.1 任务切换函数OSCtxSw()238
C.1.1 任务切换函数OSCtxSw() 238
C.1.2 任务切换宏OS_TASK_SW()239
C.1.3 中断级任务切换函数OSIntCtxSw()240
C.2 μC/OS-II的系统时钟242
C.2.1 PC中DOS的系统时钟242
C.2.2 PC中μC/OS-II的系统时钟242
C.2.3 μC/OS-II系统时钟中断服务程序244
C.2.4 在任务中安装μC/OS-II系统时钟的中断向量244
C.2.5 在任务中由μC/OS-II返回DOS环境245
附录DC51开发工具μVision2简介
D.1 C51语言的扩展246
D.1.1 数据类型246
D.1.2 存储器类型247
D.1.3 存储模式248
D.1.4 指针248
D.1.5 可重入函数250
D.1.6 与汇编语言的接口251
D.1.7 库函数251
D.2 创建项目252
D.2.1 启动μVision2并创建一个项目252
D.2.2 新建一个源文件252
D.2.3 增加和配置初始化代码253
D.2.4 为目标设置工具选项254
D.2.5 创建项目并生成HEX文件254
D.3 常用的菜单选项254
D.3.1 视图菜单View254
D.3.2 项目菜单Project255
D.3.3 调试菜单Debug255
D.3.4 外围器件菜单Peripherals256
附录EMagicARM2200教学实验开发平台简介
附录F光盘上例题代码的使用方法
F.1 光盘上的文件260
F.2 光盘上的文件使用方法260
参考文献



--
把有限的时间投入到无限的学习中去

zchong

unread,
Dec 26, 2011, 1:06:49 AM12/26/11
to rt-threa...@googlegroups.com
印象中有一本国内的书挺好,作者叫晨风,《嵌入式实时多任务软件开发基础》,可以参考一下

prife

unread,
Dec 26, 2011, 4:02:01 AM12/26/11
to rt-threa...@googlegroups.com
 去了趟图书馆了,背回来5本书。不得不说操作系统,嵌入式系统方面的书籍可以用汗牛充栋来形容。。  的确有很多书介绍原理,但大都泛泛,估计因为是介绍操作系统的书,所以不得不添加这些内容。很多网友对专门介绍原理反感,估计就是被这些书给“伤害”过。
但是原理如果不予以介绍,那么在应用时如何使用这些概念?比如IPC,调度等。大部分网友赞同在应用时,予以穿插原理,这是不是要求这些应用实例有足够的通用性?

比如涉及到生产者消费者原理的示例(mbill实现的工业级的网口转串口板的实现原理)来讲解生产者消费者问题??

其实内核的概念大致可以分为如下几个部分
线程的概念
线程调度
线程通信
每个部分可有什么好的例子?

至于使用stm32的网络收音机,因为是使用的RT-GUI实现的,里面涉及了很多gui的概念,还有文件系统,lwip,总之一大堆东西,这些东西是不是可以放在后续的书籍中介绍?

RTT是一个系统,内核,IO,内存管理,文件系统,设备驱动。还有finsh,GUI。这些到底肿么办?
面向读者是初学者时,这么多内容比操作系统课程还多,不仅读者读起来很吃力,对作者也是一个巨大的挑战吧。所以是不是将某些东西放在后续的书中在论述?

确实比较头痛。。如果是RTT的原理分析,的确很容易陷入窠臼。唉,实时系统方面经典著作很少不是没有原因的。

大家的意见? 
PS:
我觉得这两本书相当的好
《嵌入式系统软件教程》
     作者:美 David Simon 译者 陈向群
《操作系统设计与实现》
--
把有限的时间投入到无限的学习中去
1E3.gif

杨毅涛

unread,
Dec 26, 2011, 4:18:19 AM12/26/11
to rt-threa...@googlegroups.com
突然想到一个问题,那个小振动音箱的原理是什么呀?是不是网络收音机,然后加上振动音箱的一个应用会好玩些呢?
1E3.gif

bernard

unread,
Dec 26, 2011, 4:59:07 AM12/26/11
to rt-threa...@googlegroups.com
这个确实是这样,很多人对STM32网络收音机的第一眼感觉就是很重,因为包括了太多的东西,OS、Filesystem、TCP/IP协议栈、GUI、Audio……

在 2011年12月26日 下午5:02,prife <gop...@gmail.com>写道:
1E3.gif

Grissiom

unread,
Dec 26, 2011, 5:17:50 AM12/26/11
to rt-threa...@googlegroups.com
2011/12/26 prife <gop...@gmail.com>

 去了趟图书馆了,背回来5本书。不得不说操作系统,嵌入式系统方面的书籍可以用汗牛充栋来形容。。  的确有很多书介绍原理,但大都泛泛,估计因为是介绍操作系统的书,所以不得不添加这些内容。很多网友对专门介绍原理反感,估计就是被这些书给“伤害”过。
但是原理如果不予以介绍,那么在应用时如何使用这些概念?比如IPC,调度等。大部分网友赞同在应用时,予以穿插原理,这是不是要求这些应用实例有足够的通用性?

比如涉及到生产者消费者原理的示例(mbill实现的工业级的网口转串口板的实现原理)来讲解生产者消费者问题??

其实内核的概念大致可以分为如下几个部分
线程的概念
线程调度
线程通信
每个部分可有什么好的例子?

我感觉线程是针对于调度来的,如果没有调度,也就没有线程了…… 所以这两个要一起讲。

例子倒没想起什么特别的来,跑马灯?轮换在串口上输出 A、B?……

不过个人觉得书里图一定要多。好看,容易理解~ 或许可以一开始先讲解下概念,举个现实中的例子,然后在深入代码做分析~
 

至于使用stm32的网络收音机,因为是使用的RT-GUI实现的,里面涉及了很多gui的概念,还有文件系统,lwip,总之一大堆东西,这些东西是不是可以放在后续的书籍中介绍?

RTT是一个系统,内核,IO,内存管理,文件系统,设备驱动。还有finsh,GUI。这些到底肿么办?
面向读者是初学者时,这么多内容比操作系统课程还多,不仅读者读起来很吃力,对作者也是一个巨大的挑战吧。所以是不是将某些东西放在后续的书中在论述?

确实比较头痛。。如果是RTT的原理分析,的确很容易陷入窠臼。唉,实时系统方面经典著作很少不是没有原因的。

大家的意见? 

基本的概念就那些,很不容易出彩的。就看熊大的文笔了~;P

我觉得最重要的是要突出 RTT 的特色。比如,电子版手册里让我眼前一亮的就是“内核对象”模型。可能是我见的不多,不过用 C 语言搞嵌入式系统的采用面向对象的方式还是很新颖的吧…… 可以突出这里的设计考量和实现细节。

然后的特色应该就是模块和设备驱动了~ 设备驱动还没整好,或许可以放到第二版里去~ 模块这个可用性这么的东西是可以大书特书的么~;)

或许原理和应用可以分为两本书。我对出版不了解,多出一本书,除了作者劳动的付出以外,还会有什么别的物质损失么?

其实还是要看熊大的书稿了,貌似都已经差不多了?那可能改动的余地也就不是很大了……



--
Cheers,
Grissiom
1E3.gif

jianping19869999

unread,
Dec 26, 2011, 6:44:11 AM12/26/11
to rt-threa...@googlegroups.com

我认为首先应该认清出版的书是面向哪一类人群的来读,然后再来确定书的内容

我也看了国内好多关于嵌入式方面的书籍,大都没什么新意,要么互相抄袭,要么直接翻译国外的文档说明,给我们的感觉就是在浪费纸张和读者的大量宝贵时间。我知道真正的用心出版一本面向大家的书不是那么容易。

现在有些书籍只讲理论没有实例做解释说明,理论讲了一大堆,看完之后还是不知道如何来用,有的虽然有一些例子说明,但也大都泛泛的没啥用处。要是想要出一本大家都喜欢和认可书,一定要注意书中的例子要有针对性和实用性,看完例子之后既了解了理论方面的知识又知道了到底如何使用相关的知识,另外就是一定注意相关知识的前后对比,在对比中使读者知道相关的知识相似处和不同点及各自在不同的应用中的优缺点。再有就是在各个知识点及前后对比讲完之后,最好有一个很好的综合实例,不需要太复杂,但能指导我们如何把这些知识综合起来使用

我知道这些都比较难,需要作者有足够的耐心扎实的理论知识及丰富的实践经验,不过我们一直在期待国内有这样书~
这样的话可能书的内容会很多,建议出一系列的书,分为偏理论的,针对某个的应用的(如嵌入式中的TCP/IP和GUI应用完全可以出一本来详细的讲解,还有工业方面的CAN总线和RS485总线也都可以出一本书来讲解)
还有就是要有配套得开发板来实践相关的知识

加油吧,我们都一直期待着国内能有这样的那么一本或一系列书来引领我们,有一个巨人让我们站在他的肩上~


======================================================

姓 名: 田建平
电  话: 13173631946 
邮 箱: tia...@hzzh.com
QQ号码: 641426786
地 址: 浙江省杭州市滨江区东信大道69号

=======================================================

魏伟

unread,
Dec 26, 2011, 7:37:26 AM12/26/11
to rt-threa...@googlegroups.com
我是一个初学者,只有C语言基础,很是期待这本书带我进入OS的阶段,现在还在用状态机编程呢,裸奔好冷啊。
1E3.gif

sense M

unread,
Dec 26, 2011, 7:45:12 PM12/26/11
to rt-threa...@googlegroups.com
《嵌入式系统软件教程》
              作者:美 David Simon 译者 陈向群 
哪位这本书的电子版呀,传一份给我呀,3Ks
1E3.gif

周维

unread,
Dec 26, 2011, 8:18:44 PM12/26/11
to rt-threa...@googlegroups.com

我2年前在一个群里面认识了bernard,看到这个RTTOS发展成这样子真的不简单,好后悔没跟RTT一起成长,这次出书终于被我赶上了,还是很期望出的这本书能让我再次拾起RTT,不再留遗憾了.

其实,我觉得基础的书已经很多了,有一部分一直以来也都做的很好了;我们这本书可以当成已经对操作系统有认识的,读者的进修书籍.可以将多平台之间的运行细节做一些列举,
让读者明白RTT能够在不同平台上发挥的作用,可能不同的学习的人都是从不同的芯片开始的,RTT都支持了,又有细节,对于想学习的人,应该是个不错的选择.
1E3.gif
Reply all
Reply to author
Forward
0 new messages