项目合作
项目1
时间:2003/03/10
题目:大家有没有兴趣合作设计一个免费的RTOS平台呢!?

当然,自己做的跟商业代码没法比啦,他们提供的开发环境、编译系统、调试环境、第三方软件、售后服务、解决方案、强大的技术支持、不断提供的新技术和符合标准化的设计是个人根本不可能做到的也没必要做(社会分工嘛)。我的意思是能不能利用网络,大家一起开发一个RTOS平台玩玩,这对于学习OS知识、更好地使用现有操作系统很有帮助。比如我移植了uCOS51后,对操作系统各项指标的含义有了切身体会,每一项都能找到实例对应,在挑选、比较、应用OS中就有了直觉。以前听过VxWorks的讲座,总觉得象广告,现在不同了能琢磨出一些门道。此项目的主要目的是给大家提供一个讨论交流具体OS的平台,没有时间表,没有固定合作方式,有问题/意见/建议请提出,有答案的请共享,平台的开发测试维护由爱好者们共同完成。
我想以uCOS51为蓝本进行开发,逐步过渡到针对32位MCU的强大系统(单CPU-多CPU)。我的设想如下:

目前想到的新特色:
1。任务和优先级彻底分离,支持64级优先级,结构上支持2^16/2^32个任务。
2。抢占式内核,支持时间片轮转调度算法。
3。支持优先级继承算法(或优先级极限算法)。
4。支持SOCKET接口的TCP/IP协议栈。
5。支持GUI和FAT文件系统,支持保护模式。(再说吧)

要求:
任务创建/调度/删除/挂起时间确定(可预测),与任务数无关。
兼容性好,与uC/OS-II接口差别小。
可裁剪,不用的代码不占资源,伸缩自如。

实现方案:
1。在优先级调度后(与uC/OS-II算法一样),再进行一次任务调度,使用TCB区分不同任务,每个TCB对应一个整形/长整形任务ID号。
2。将同一优先级的任务TCB用双链表连接起来构成一个环形,使其在结构上支持轮转。因为双链表记录了前后指针,所以插入/挂起/删除任务时间是确定的,一次操作就可以完成,不必顺链查找。这些操作用C编写,每一优先级提供环链队头指针,内核的汇编代码只要完成当前指针到下一任务的转换就成了。新创建的任务挂在环链队尾,挂起恢复的任务挂在环链队头,以减少挂起恢复时间。一共建3个环行链表结构:空闲链、就绪链、挂起链。空闲链存储未被使用的任务TCB;就绪链是时间片轮转算法的核心数据结构;挂起链存储被挂起的任务TCB。每个任务TCB中存有所属优先级,挂起恢复时一次恢复到位。时间片配额由宏定义给出,每个tick时间片减一,直至为0才切换到同级下一任务,本任务可被高优先级任务抢占。
3。这个实现我到目前还没搞懂,应该有个信息收集学习过程吧。VxWorks上说要有任务队列,我想是不是通过任务队列收集与这个资源(信号量/队列)有关的任务,在某个任务等待此资源时,提高释放资源的任务的优先级到这个任务的级别。不过这样会造成开始阶段的继承问题,需要过一段时间才能真正实现优先级继承。不知我这样理解是否正确,哪位大侠知道答案的别总是潜水,望不吝赐教,底下偷偷告诉我也行啊。呵呵!
4。我感觉TCP/IP本身不难写,写好了却不容易,细节和标准太多了。我见到的大多数嵌入式TCP/IP代码都被精简,以适应系统成本要求。我觉得主要是写好协议栈结构框架,结构不动,只改内容。基于SOCKET的架够无疑是最合适的,但具体怎么实现呢?哪位有高见?TCP/IP除了NE2000网卡(实现WEB SERVER支持动态页面),还想支持MODEM,走PPP协议(硬件上作个带MODEM的板子,实现Email自动收发信机)。主要参考为:Linux、Apache、ucip、lwip等源码。

综上所述,第1、2条实现起来不太难,第3、4条稍有难度(一层窗户纸而已),可先在51上验证,以后移植到其他32位MCU易如反掌。第5条对于8位机不现实,保护模式用在嵌入式里还有异议(实时性)。
我知道CMX和Nucleus等已有源码提供,写得很好,但我目前还没有见过,只看了介绍,相信看过后一定能有不少长进,希望有机会看到源码的朋友能多给些提示。
总之,欢迎感兴趣的朋友们参与,各尽所能吧。不管最后怎样,大家一起玩玩吧!


项目2
时间:2003/04/15
题目:基于web(ASP+ACCESS)的企业研发平台软件。
要求:1。自动生成文档--由软件严格保证其标准规范,消弭由于开发人员水平参差不齐造成的问题。
2。信息共享--研发、市场、生产、财务、库房信息共享,同步更新。
3。交流方便--支持研发项目小组讨论,内部QQ。互相帮助,共同提高。
4。自动考核--自动记录研发轨迹,系统定期上报任务考核参考表格,节省研发人员时间提高准确度,同时有利于有经验的项目负责人指导工作和及时发现问题。
5。自动汇聚处理分析信息--在不断地使用中变得更有价值。
意义:通过克隆自己的思想,把其复制到成千上万的计算机上,让它不知疲倦地工作,将是多么有意思的事情!