一个最简单的操作系统只要能完成任务管理就可以,这也可以说是操作系统的核心内容(是我个人的看法),在写单片机的这些年里,我一直在运用和探索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