|
本帖最后由 Gorgon_Meducer 于 2013-4-28 15:23 编辑
来龙去脉
事情是这样的:《深入浅出AVR单片机——从ATmega48/88/168开始》卖完了…… 编辑说,要不出个第二版吧……
然后,我就做了一个企划,也就是 方案A 的内容。突然有一天,我觉得这个企划很可能是有问题的,详细请见帖子:
http://www.amobbs.com/forum.php? ... p;extra=#pid6253722
于是我觉得问题很严重啊!然后就做了这么一个投票……等投票结束了,告诉大家一个好消息,有一本很不错的书就要
出版了——虽然不是我写的,但从原书(英文原版)的内容来看,是非常值得吐血推荐的……哈哈……先卖个关子。
调查结果已经比较明朗了,不卖官子了,公布结果:
日志
2013-4-28 目录初稿
2013-4月之前 企划初步确定
欢迎大家投票,在您投选任何一个方案的时候,都非常欢迎您在回帖中补充您对该方案的意见和看法。您也
可以提出新的方案,如果切实可行,我将把对应的方案加入到投票中去。
三个方案
方案A:原始方案
原始方案是这样的:
1、以《深入浅出AVR单片机——从ATmega48/88/168开始》为蓝本首先进行语言文字上的优化,简单说就是
凝练文字,挤干水分。关于这个问题,有很多网友都提出过,重要性和紧迫性不用多说;
2、将原有ICC平台改为以GCC为基础的Atmel Studio6;
3、改写甚至重写部分外设章节,比如定时器章节基本就需要重写;
4、扩展原有第三篇的内容,将部分内容展开,比如具体如何进行模块化(原有内容没有就这部分展开);比
如如何从零开始建立结构简单使用灵活扩展方便的软件构架,等等
5、加入裸机环境下多任务实现方式的讲解——以实例来推动——也就是追加循序渐进的状态机编写训练
6、增加大家感兴趣的 菜单技术——从基础的开始,到状态机环境下的菜单,到高级的动态菜单技术
7、增加实用性极强的高级串行数据处理技术
这个方案的缺点是:
1、因为书主题和书名的关系,在主要的读者人群——单片机初学者中容易产生误解,认为很多原本硬件无关
的东西是和AVR直接相关的——反过来,不了解内容的人(如果了解就不是初学者了)会因为这本书主要
介绍AVR,而自己不学AVR而放过这本书——这当然不是我愿意看到的——因为我浪费了时间写了一本没
有读者的书。
2、AVR mega系列芯片将逐渐过气,这次的改动,如果基于方案A,显然几乎是最后一次对这本书进行大规模
知识更新了。从寿命上来说,有点不划算。
3、很多人已经有了《深入浅出AVR》,可能多半不愿意再买一本,而有强烈的愿望只看更新的部分。
方案B:拼盘式的专题方案
这是网友提出的方案。主要思想总结如下:
1、重写一本与AVR关系不大的,因为大家关注的是我的思想,这部分内容实际上与具体芯片无关;
2、把论坛上已有的我的内容收集、总结、完善,以专题的形式阻止出来;
3、重点讲一讲模块化封装、状态机、调度器、工程构架的东西
4、一些热门技术,比如菜单、比如简易的GUI
这个方案的缺点:
1、重新写了一本,原来那本书每人管死活了。
2、知识不系统,我本人不喜欢部系统的东西。
3、拼盘结构,没有拳头应用支撑
4、工程量会很大
5、傻孩子是软件工程师,硬件肿么办?当然可以继续找江海波,但时间上是否有保证仍然不得而知
方案C:系统性的编写方案
这是我一直以来计划要做的事情:系统性的写一下我关于嵌入式系统开发的思想。主要构思如下:
主旨:全书以操作系统的视角重新审视不同资源环境下的嵌入式软件开发。根据FLASH和SRAM的大小
全书将嵌入式系统(主要是MCU)的资源环境划分为三类,裸机、调度器、操作系统。
主题:多任务、多任务的实现方式、多任务环境下的通信和消息机制。
方法:全书分别针对三个环境:裸机、调度器、操作系统 讨论多任务的话题。
第一部分:裸机。典型平台,AVR / M0 / M0+ / Cortex M3 系列中小资源芯片
为大家解密介绍任务和任务平面的概念——其实任务及多任务的概念是非常简单形象的。理解
这些概念后,将从简单到复杂 详细介绍状态机多任务的技术。大量实验。
亮点:完成这部分内容后,将学会定量的分析嵌入式软件的可靠性,学会评估存储器和栈的安全性
学会全状态机开发 知道所有操作系统的概念——原来裸机下就可以实现,而且本来就很简单
第二部分:调度器。典型平台 AVR / Cortex M3 / Cortex-M4 系列中较大资源芯片
由于第一部分已经把裸机的东西都讲差不多了。这部分讲放开手脚,从简到繁详细为读者推演调度器
技术和面向应用的进化方式。从最简单的指针数组,到准OS级别的复杂状态机调度器,畅快淋漓。
我可以保证,几乎覆盖了市面上所有能找到的调度器技术。
当然,也是很多例子,不过我会选择一个完整的大型架构进行讲解——比如GUI架构——这是最需要
调度器配合在裸机环境中实现实时性和功能性的平衡。
第三部分:操作系统。典型平台 Cortex M3 / Cortex M4 系列中资源较为丰富的芯片
接着准OS调度器开始,从任务切换技术开始介绍,完成从合作式调度器到抢占式调度器(也就是OS)
的过渡。考虑到市面上同类书籍的泛滥。我将只着重介绍RTOS的“任务切换”技术,而决定如何调度
的部分将只采用简单的时间片法,并且不会浪费多少口舌在调度算法上——只要掌握了核心的“任务
切换”技术,调度算法就是刀板上的肉了。
因为多任务的概念,应用的编方法,技巧已经在前面两部分介绍的很透彻了。这部分将着重介绍另外一个
难点,就是操作系统环进行下如何实现 临界区、互斥、信号量、消息队列等——操作系统DIY爱好者
喜欢的东西。是的,市面上有很多这类书籍,但我有秘诀会让这部分内容的意义大于内容本身。
第四部分:总结
通过以上的三个部分,大家明白,原来操作系统是一个概念,只不过裸机的时候这个概念完全是在开发
人员的脑子里面——你可以认为是操作系统安装在脑子里;随着资源的逐渐丰富,一部分操作系统概念
可以通过代码的方法固化下来,从而简化多任务开发;你可以认为这个时候的操作系统一部分是在脑子
里,一部分在代码中;最后,当资源丰富到一定程度,我们可以完全把操作系统放到代码中,从而获得
最简单的开发方式——你只要关注多任务间的协调和功能实现本身就可以了。
在这三个环境中,评估代码质量、安全性和栈的使用的方法其实都是类似的。
变化的是资源,适应的是方法,不变的是思想,实现的是应用。
希望大家看了这么多,应该明白,我为什么最写这本书了。另外,模块封装,工程构架,面向对象的技术都
会在整个主题的讲解中为您一点一点脚踏实地的展开,这也是所谓专题方式无法比拟的。
这个方案的缺点:
1、时间……
2、时间……
3、时间……
编写方法
虽然PlanC是一个大项目——看似无从下手,其实是有专门的方法的。借机就说下我的计划吧:
第一阶段:准备阶段
这个阶段的任务是逐步细化出编写大纲,细化的过程是这样的:
a. 首先宏观分块,宏观到什么程度呢?比如现在书分了三大块,这就是宏观分块。
b. 完成宏观分块以后,将会枚举所有希望覆盖的知识点——这个时候,知识点是分散的,不必有
具体的承接关系。我会先列举出自己想到的,到时候还要麻烦论坛上的诸位帮我补充和提点了。
c. 完成知识点枚举以后,将开始进行知识点布局,简单说就是建立知识点与知识点之间的承接关系
逻辑关系,可以考虑讲解的顺序了。
d. 完成知识点布局以后,进入章节划分阶段。顾名思义,这个阶段,要根据前面的知识点布局划分
章节。这个阶段完成后,实际上达成了以下目标:
>> 有哪些章节——目录就出来了
>> 章节要覆盖哪些知识点——章节的任务和目标就出来了
第二阶段:编写阶段
完成了以上内容,基本就完成了对本书的定义。如果没有大的必要,基本不会变更章节和章节的
任务目标以及覆盖的知识点。这个时候进入章节编写阶段。
a. 选择一个章节
b. 搜集所有和章节知识点相关的资料
c. 考虑具体的知识点串接结构,并以此设计大纲
d. 根据大纲,将章节拆分成细小的模块,每个模块的内容都很确定和具体,编写工作量控制在大约
写个 微知识 的程度。
e. 利用点滴的业余时间逐个章节编写
f. 完成一章的编写后,进行通章修订
g. 修订的版本在小范围内测试
第一阶段将充分发挥论坛的作用,直接通过专题帖子与大家互动,欢迎大家到时候积极参与。
欢迎关注新书编写官方微博:“傻孩子图书工作室”——及时了解新书进展,监督并发表您的看法。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|