关于简单操作系统原理的实现

 一个最简单的操作系统只要能完成任务管理就可以,这也可以说是操作系统的核心内容(是我个人的看法),在写单片机的这些年里,我一直在运用和探索UCOS,UCLINUX,WINCE,QNX,RTOS和ECOS等操作系统,这其中UCOS和RTOS是最为简单的小型操作系统,但是单是这最简单的操作系统内核在编译后仍有10K左右,所以在单片机的使用中(小型单片机)始终得不到广泛的运用.在早期,我写程序时就是用一个大的LOOP循环来完成,但是总要考虑很多的环节,事件处理的前后顺序,两个事件同时发生该如何响应.反正总为这些事烦恼,到后来就想写一个又小,有可以像操作系统那样的可以管理任务的东西出来,在大部分情况下,单片机所要处理的东西都是有限的.大概的思路是这样:

1. 系统初始化,初始化外围电路;

例如:初始化串口,或其他硬件设备;

        systeminition()

        {

                init_uart0();

                other_devices_init();

        }

 

2. 在主程序用一个LOOP循环做消息判断;

例如:

              for (;;)

              {

                   switch(getmessage)

                   {

                          case 1 :

                                       do1;

                                       getmessage=0;

                                       break;

                          case 2 :

                                       do2;

                                       getmessage=0;

                                       break;

                                       .

                                       .

                                       .

                          case n:

                                       don;

                                       getmessage=0;

                                       break;

                    }

3. 用一个TIMER做事件的产生源和消息的产生源;

例如:

                 void TIMER() INTERRUPT 1

                  {

                       if (event_increase<=n)

                       {

                          if (getmessage==0)

                          {

                                getmessage=event_increase;

                          }

                          event_increase++;

                        }

                        else

                        {

                              event_increase=0;

                        }

                  }

 

//    by bill.zhang

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值