在第一部分,了解完功能,又了解完工具。
那么接下来就可以尝试写一个属于自己的操作系统了。
还记不记得之前说了一大堆操作系统的功能,那哪个功能是最重要的?
在我看来,一个操作系统的最核心功能就是实现多任务的管理(同时其实这也是一个相对较为简单的功能)
这一部分总结下最常见的嵌入式软件系统的结构:
一、轮询系统。
一般由一个大的while(1)循环组成:
while(1){
if(condition)
doSomeThing();
if(condition1)
doSomeThing1();
…
if(conditionN)
doSomeThingN();
}
轮询系统非常简单,对所有执行需要执行的代码顺序并循环执行。这是最简单的一种软件结构,主程序是一段无限循环的代码,在循环中顺序查询各个条件,如果满足就执行相应的操作。
这种方案的好处是实现简单,逻辑清晰,便于掌握。但是每个事件的查询和处理时间是不能确定的。假如前面的操作时间较长,那么后面的操作必然会被延迟。
二、前后台系统
对轮询系统进行优化,引入中断和各种标志位,就成了前后台系统。
char flag1;
…
char flagN;
while(1){
if(flag1){
doSomeThing();
}
…
if(flagN){
doSomeThingN();
}
}
void interrupt1{
…