rovershen 阅读(830) 评论(5)

很多时候,我们要在嵌入式系统上实现比较多的功能,但是并不需要用到OS的支持。但是为了开发方便最后还是选择使用OS,例如linux,这样比较占存储器空间。实际上,不带OS的系统也可以很简单,只要认真的规划。
我的思想来自于PC,PC在引导OS之前,要执行BIOS程序,而且引导OS之后,很多对硬件的操作也是通过BIOS完成的。我将系统分成3个部分:Loader,Bios和App。
1. Loader。在嵌入式系统中,程序一般存储在flash上。nor flash里面可以直接运行程序,但是速度很慢。因此需要一段代码将程序主体(其实是BIOS)装载到RAM,然后运行。这个工作便由Loader完成。Loader只完成最基本的初始化,然后加载BIOS到RAM里运行。
2. Bios。类似PC,Bios进一部对系统进行初始化,然后装载App并运行。可以将常用外设支持过程放在Bios里,如串口,定时器等等。我的实现办法是将为每个设备定义一个结构,将常用的操作函数指针放在结构里,然后将所有的设备结构放在固定的地方,这样App就可以直接调用了。Bios的另外一大功能是实现程序的更新,即下载Loader,Bios和和App,并写入flash。Bios还有一个非常重要的功能就是管理中断,而且要留接口给App,以便App能处理对它特别的中断。Bios可以根据一定的条件,如某个端口的状态,从flash载入不同的App来运行,这样也节省了存储器空间。
3. App。App比较简单,对Bios已经支持的设备,可以直接通过指针来调用。这样可以只处理需要自己处理的东西。不同的功能可以用不同的App来实现。


评论列表
oshj
re: 不带OS的嵌入式系统软件实现
等你这么完成了,一个嵌入裸OS也就出来了
rovershen
re: 不带OS的嵌入式系统软件实现
呵呵,我已经完成了。当然比OS要简单很多,尺寸就更小了,一共才几十K:)
一笑
re: 不带OS的嵌入式系统软件实现
支持task调度么?
rovershen
re: 不带OS的嵌入式系统软件实现
有了task调度已经可以叫OS了!呵呵
shiyouc
re: 不带OS的嵌入式系统软件实现
呵呵。我用的别人的Thread

发表评论
切换编辑模式