昨天仔细拜读了下老农先生的common_mcu操作系统…… 老农先生是技术很高明,我本人十分敬佩,但真理面前人人平等,所以有一些话我必须要说……我也不妄自评论别人,这次只谈我对我这个MS3的一些看法,当然我首先要纠正上次的一个说法,其实我看来我和老农先生的架构完全不一样,我的操作系统更侧重于软件架构……
下面是我具体的一些分析:
1.结构上,纯软件架构,并没有将一些过多的硬件外设编程放进去……扩展性很强。
2.数据封装格式上普遍采用枚举与结构体,这样清晰明了,很方便开发者阅读,其实在很多涉及操作系统的开发中枚举与结构体,这样可以提高开发者的软件水平和软件规范化.
3.采用指针结构,可以节省存储空间,动态灵活应用指针,可以简化程序,也可以提高MCU从业人员的软件水平。
4.非抢占式操作系统内核。消息处理机制比较简单,由于MCU尤其是51内部存储空间太小,不适合抢占式内核以及多任务并发处理,没有必要采用内存管理。 5.为了实现时间的精确性,满足实时性要求,具有软件定时器,可以模拟最多8个,这个软件定时器优点很大,可以做比如动画之类的东西,这样可以不受硬件定时器的数量限制,他是MS系统的标配,他的应用非常灵活,并且在MS3里面采用了两种软件定时器,一种是回调函数直接在中断里面处理,另外一种是在boot.c里处理,适合开销大的程序。甚至可以实现伪任务的概念。
6.采用了同步的消息传递进制,对任务的执行时间进行了精确的控制。
7.具有统一的按键处理,标准化了,并且软硬件费用最少,可靠性高。按键处理机制考虑了多种情况,按键扫描程序清晰简单,对长/短按键以及误按键都有良好的处理,并采用了按键映射方式。
8.多处采用了16bit的数据类型,可以有效地防止8bit下出现的一些问题,比如猜火车的情况,假如换成16bit的话临界点会到65536。
9.整体来说,作为一个操作系统更应该注重的是软件上的架构清晰,当然MS3有一些地方还是有一些混乱,但总体来说结构是很清楚,很容易让人明白的。另外作为51操作系统来说做到非抢占式内核就已经够了,没有必要对内存进行管理(尽管这个很高明),因为作为开发人员来说会尽量避免两个进程占用同一资源的情况。
10.其实如果从c51过渡到嵌入式以及手机软件开发(其实也是嵌入式),很多程序上的改变是软件架构,而非细节,细节可以慢慢学,整个软件架构的思想却是必须要养成的良好习惯,比如尽量多采用结构体、指针,使用动态指针,将数据分配在堆上有利于空间动态利用和回收,多用宏定义等。熟悉数据类型以及对编译器的要求的,熟悉Makefile,这才是关键。
这也是我这个MS系列操作系统从第一版本到现在MS3一直所强调展现的东西,清晰的软件架构,良好的编程风格,开源的精神,积极学习的态度,这是我们所推崇的。从大处着眼,小处动手,然后脱离出来总体审视上升到境界和层次,这才是做技术应该追求的!
|