新手问个白痴问题,请高手们指点
为什么要在单片机上移植操作系统,比如51移植uc/OSii,是为了用操作系统的中断机制嘛(这里不会表达- -)
[解决办法]
本帖最后由 wangfan027 于 2013-08-21 14:35:25 编辑 举个例子
一设备,要求如下
1. 显示每秒刷新5次(每次刷新理论耗时Xms)
2. 需要通过外部ADC芯片不停的对传感器进行AD转换,要求每秒至少N次(每次从ADCA芯片处读出AD耗时Yms)
3. ADC结果需要通过UART主动或者USB被动上传到上位机,要求每秒至少上传N个数据(每次耗时Zms)
4. 有键盘
5. 需要对电池进行检测,速度不要求很快
如果不用OS处理,楼主可以想想一下光用定时器来实现的工作量
[解决办法]
注意,中断是硬件机制,操作系统是在中断上建立的,而不是反过来的。即使是裸机下也是可以用中断。
采用操作系统,就单片机的话,编程的模型,或者说编程的思维就能从前后台(也叫死循环)的方式换到多线程的编程方式。从而减少多个功能模块之间的耦合和关联关系。
如果你的单片机系统中用前后台系统的话,有多个功能模块的话,你会体会到这一点的。
如果在这个系统里再继续加新功能,你会觉得越来越来,因为要考虑原来的功能。但是用多线程,就算是你说的操作系统的话,就不需要太关心其他功能模块了。
在嵌入式下(相对单片机系统,功能复杂),如果操作系统还带内存管理的话,系统里面可以跑多个独立的程序,编程模型和编译模型也更简单了相对于前后台系统。
总的来说,我个人觉得用操作系统,主要是改善编程人员的编程模型和编程思维,让编程更容易。操作系统来解决很多底层问题,让程序员不用过多关心底层细节,专注于功能本身,提高开发和维护的效率。
文件系统就不说了。
[解决办法]
嵌入系统的意义是更好的管理硬件资源
如果,硬件资源没有复杂到前后台管不过来的层次,那就先考虑一下用OS的意义
不能为了用OS而用
[解决办法]
不用OS,你就像个光杆司令,什么都得自己做;有了OS,你就像个真司令,很多事动动嘴皮就有人替你做了。