打印

实用单片机系统MS3再分析--兼回农民讲习所

[复制链接]
8086|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lldwsw|  楼主 | 2007-6-19 14:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天仔细拜读了下老农先生的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一直所强调展现的东西,清晰的软件架构,良好的编程风格,开源的精神,积极学习的态度,这是我们所推崇的。从大处着眼,小处动手,然后脱离出来总体审视上升到境界和层次,这才是做技术应该追求的!


相关帖子

沙发
wszqw| | 2007-6-19 14:59 | 只看该作者

从没有抢过沙发,今天抢占一回~~

使用特权

评论回复
板凳
gyt| | 2007-6-19 18:58 | 只看该作者

很厉害啊:)

使用特权

评论回复
地板
jxyhome| | 2007-6-19 20:49 | 只看该作者

呵呵,顶下,继续关注!

使用特权

评论回复
5
dzn| | 2007-6-19 22:13 | 只看该作者

不知道lldwsw有时间带徒弟不

我觉得单片机技能要向更高层次发展就必须学会使用嵌入式操作系统,个人觉得lldwsw是一个既注重基础,又注重实际运用发开的大虾。就是不知道有没有时间(能参加付版主竞选的人能力和责任心肯定是不用说了)收几个弟子继续发扬。

使用特权

评论回复
6
IceAge| | 2007-6-20 05:19 | 只看该作者

顶楼主

使用特权

评论回复
7
yewuyi| | 2007-6-20 08:47 | 只看该作者

俺看了一点,跑来说几句废话……


main(void)
{
    init_process();                    

    MSTimerStart(100, test0);
    MSTimerStart(110, test1);
    MSTimerStart(120, test2);
    MSTimerStart(130, test3);

    while(TRUE)
    {
        switch(msg_queue_out())                        
        {
            case MSG_KEY:    
                mmi_key_process(g_MsgReturnValue);
                break;
            case MSG_UART:                        
                uart_process();
                break;
            case MSG_TEST:
                //special for test
                break;
            case MSG_NULL:
                break;
            default:
                break;
        }
    }
}


这样的结构很多人都用,用来辅导中级人员太过了把?俺看这东西用来辅导辅导那些干了很多年,但没什么技术天赋的工程师比较合适。


只是看了一点,就看一个BOOT.C拉,这个结构也不是万能的,很多时候,应用对此是有限制的,所以要做若干的变形的才能应付的拉.


至于所长大人的东西,好象一直没出完整的东西把?所长所是出书的,俺等了3年也没见到啊,郁闷^^

不过好在程序匠人最近在写书,嘿嘿,写完了没?


俺等着买几本给小弟呢^^

使用特权

评论回复
8
high| | 2007-6-20 09:24 | 只看该作者

我大概看了看,这得看怎么理解了。

回调函数是现在分层设计的基础。从而实现上层注册,下层调用。也许瞧不起,但win32也不过是这样的,tcp/ip协议栈也是这样的。

用一个定时器实现小开销的任务调度,这是主要特色。

使用特权

评论回复
9
jimoom| | 2007-6-20 09:32 | 只看该作者

在 ram 的管理上能详细说说嘛?

在有限的ram里,怎么保证各模块的独立性?

使用特权

评论回复
10
jxyhome| | 2007-6-20 14:35 | 只看该作者

说几句公道话

对MS3这个操作系统,我仔细看了下,整个程序的构架很清晰,读起来很容易,结构分明,楼上一些人很多时候没有仔细看就发言了这是不厚道的,用软件定时器来实现小开销的任务调度是这个系统的特色……这个系统的很大好处是可以让初学者参与进来,很容易互动的……说实在话所长同志的操作系统我也看过,没有兴趣看下来,很多东西都给封装了……

使用特权

评论回复
11
新好男孩| | 2007-6-20 15:13 | 只看该作者

11

typedef enum 
{
    MSG_NULL        = 0x00,                    /*have no message*/
    MSG_KEY        = 0x01,                    /*key message*/
    MSG_UART        = 0x02,                    /*uart message*/
    MSG_RTC        = 0x03,                    /*real time counter message*/
    MSG_MSTIMER    = 0x04,                    /*timer message*/
    MSG_TEST        = 0x0F,                    /*special for test message*/
}; 
去掉 MSG_TEST = 0x0F(,) "(,)"  内的分号. 

使用特权

评论回复
12
lldwsw|  楼主 | 2007-6-20 16:58 | 只看该作者

枚举问题,老的编译器支持

因为MS2在以前的编译器下编译的,当时支持,后来的编译器不支持,请大家去掉这个逗号.


本人也希望能够在21ic上碰到很有潜力的朋友,一起发展,并且通过21ic已经找到好几个,目前都在本公司,很不错.

我们会根据公司的实际需要,会招一些,同时本人也可以通过QQ跟有兴趣的朋友相互交流

使用特权

评论回复
13
fsaok| | 2007-6-20 22:48 | 只看该作者

枚举问题

我很喜欢用,

我个人的理解,对于高手来说,程序写的不是很繁琐,而是简单易读。

越是高手,程序越简洁

使用特权

评论回复
14
wswh2o| | 2007-6-21 11:18 | 只看该作者

能够把自己的积累无私的贡献出来就很难的

所以我支持楼主!

使用特权

评论回复
15
cj_win| | 2008-12-24 10:44 | 只看该作者

谢谢分享啊!

使用特权

评论回复
16
sampson21| | 2010-4-7 10:58 | 只看该作者
谢谢

使用特权

评论回复
17
hf5542| | 2011-6-8 19:01 | 只看该作者
先 mark

使用特权

评论回复
18
zhanyanqiang| | 2011-9-26 14:08 | 只看该作者
喜欢

使用特权

评论回复
19
xibeilanghf| | 2013-4-12 21:32 | 只看该作者
430单片机怎么使用这个MS3啊

使用特权

评论回复
20
xibeilanghf| | 2013-4-12 21:33 | 只看该作者
求救啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

96

主题

859

帖子

50

粉丝