我们知道,在单片机的「裸机系统」中,是用一个while死循环保证程序的运行,偶尔加点中断去执行其他的功能。这种方式的优点就是简单,方便理解,我们初学者刚开始接触的就是这种方式。

但是这种方式的缺点也很显然:

「1.实时性不强,不能优先保证重要或者优先级较高的程序的运行」

在一些代码较少的程序中还不明显,但是如果程序功能复杂,代码量大,运行时间长,这种方式就显得更加难以运行下去。因为这种裸机while循环的方式相当于走的流水线,你得等CPU运行到了这里才能执行,即使你是个极度紧急的程序,任何之前的延时都可以让这段程序延后运行。

「2.程序中如果发生了延时,那么所有的程序都要等这个延时(中断除外)」

这个时间相当于CPU没干啥正经事,白白的浪费了强大的算力。

「3.维护性与可读性较差」

大家可以试想,所有处理都在一个while循环中,要在这里头去加代码加功能,是不是很容易就会影响到其他代码呢,可能同时还需要在其他的地方加上各种补丁,麻烦事儿一堆。

实际在工作的项目中基本不会去跑裸机,结合之前的两点即效率太低了不合适,无法支撑大型的项目。

因此我们就引入了「操作系统」,将每个小功能模块可以做成一个任务,由调度器统一调度任务,什么时候运行什么任务,这也是每个操作系统最核心的部分。当我们有一个任务因为延时等待不需要继续运行的时候,就可以把CPU的运行权交给其他的任务,把对CPU的利用发挥到极致。当有紧急任务准备好需要处理时,CPU的控制权马上又回到这个任务处理紧急事务。如果有新的功能模块需要添加,适当的可以做成一个任务,这样将对其他任务的影响降到最小。阅读代码或者人员分工就可以根据各个模块的任务进行划分,化整为零,提高工作的效率。

如此,操作系统便完美的解决了裸机运行的缺点~

【嵌入式】嵌入式开发为什么要跑操作系统?相关推荐

  1. 嵌入式底层开发为什么选择C语言

    嵌入式底层开发为什么选择C语言 嵌入式系统的编写语言主要是C语言,部分底层代码会用到汇编语言. 嵌入式(C/C++):在软件(嵌入式应用开发)和硬件(嵌入式硬件开发)中嵌入操作系统(嵌入式底层开发). ...

  2. Ubuntu下嵌入式Qt开发环境配置全攻略

    本文以友善之臂的Mini6410嵌入式开发板为目标板,介绍ubuntu 12.04系统下,配置嵌入式Qt开发工具的过程.本文中介绍的工具.大部分步骤和脚本来自开发板附带资料光盘,但其默认配置环境为老旧 ...

  3. 嵌入式系统开发-学习路线

    嵌入式系统开发 课程链接 随着嵌入式设备的普及,嵌入式应用的需求量也随之增大,本课程将重点培养基于linux系统下的嵌入式应用开发,包括5个阶段,其中课程涵盖了linux系统下的多进程.多线程嵌入式开 ...

  4. 入门嵌入式,开发板应该怎么选?

    作者 | 学益得智能硬件 入门嵌入式,开发板应该怎么选择?网上推荐的太多,不知道该如何选择. 选择开发板,无非考虑三点因素: 配套学习资源(源码.视频.书籍): 性能(能不能运行学习用到的程序); 性 ...

  5. 嵌入式物联网开发,linux,单片机32(仅供借鉴,代码不共享 自行编写)

    嵌入式物联网开发,linux,单片机32 一.嵌入式介绍 二.linux系统介绍 1.ubuntu使用安装 以下自行查阅资料学习,内容较多不是一时半会能学完的编程内容,最基本是C语言的熟练掌握 2.s ...

  6. 嵌入式系统开发学习如何起步、如何深入?(转)

    学习有捷径吗?俺认为是有的,正确的道路就是捷径. 就好象是爬山,如果有导游图,那就能找到一条最正确的路线:如果没有导游图,自己瞎琢磨,东问西问,也未必能找到最佳的路线. 有时候回首前尘,会谓叹,要是当 ...

  7. 基于arm的嵌入式QT开发(课程设计)

    一. 项目要求 配置QT5.7基于x86及arm 等两种CPU架构的调试及开发环境: 移植arm编译后的QT5.7及屏幕校准工具tslib1.4至CORTEX ARM9实验平台: 开发基于QT5.7的 ...

  8. qt工程在linux系统里颜色显示错误_【飞凌嵌入式RK3399开发板试用体验】+QT开发环境搭建测试(二)...

    作者:飞扬的青春 在拿到开发板之后,已经体验了Android操作系统,接下来就是体验Linux下的开发,本次以QT的一个小案例来测试下. 首先是自己先搭建了一个Ubuntu18.04的虚拟机,使用真机 ...

  9. 嵌入式定制开发合作伙伴应该这样选择

    随着物联网行业对嵌入式设备强劲需求,近来嵌入式也跟着火起来了,嵌入式定制开发的需求正急速上升.中国作为装备制造业的大国,已经加入到了嵌入式设备的生产浪潮中,嵌入式市场需求量也形成了很大缺口.嵌入式广泛 ...

最新文章

  1. Stream Part.4
  2. 隐藏在mock之后的‘快感’
  3. Linux下C程序的内存映像
  4. js 设备条形码字体_蚌埠食品袋激光打码机设备-青岛博泰格睿特
  5. Building designing UVA - 11039
  6. 让百度地图API支持HTTPS
  7. JAVA泛型只能用引用类型_Java泛型和设计模式:不参数化对泛型类型的引用总是一件坏事吗?...
  8. 51Nod-1002 数塔取数问题【DP】
  9. Perl语言入门笔记(一)
  10. VSTO之一:Word外接程序
  11. 银河麒麟系统10服务器安装教程,麒麟系统下安装win10的详细教程
  12. 打造企业云三级火箭,EasyStack未来五年计划凸显雄心壮志
  13. html5平板游戏列表
  14. 程序员得浪漫--十款表白小程序 一个比一个浪漫 赶紧收藏起来吧!!!
  15. 'font:12px/1.5 Tahoma' 其中12px/1.5表示什么
  16. 一个sql语句的编写 写出不及格门数大于等于2的学生的姓名和平均成绩
  17. RDMA简介相关内容
  18. onbeforeunload与onunload事件总结:
  19. 计算机专业中专排名,中专学校排名前十
  20. 基于PLECS的离网(孤岛)并联逆变器的Droop Control下垂控制仿真

热门文章

  1. 城市电力地下电子标识器定位仪CK-GTR680双频段多星座GNSS系统说明
  2. 解线性方程组之LU分解算法实现
  3. Uniapp-APP后台保活插件(安卓后台保活)
  4. 单独使用elementui_Vue在单独引入js文件中使用ElementUI的组件
  5. js中了解什么是事件对象event
  6. 在window系统安装虚拟linux系统以及搭建web环境教程
  7. 艾伟:memcached全面剖析–2.理解memcached的内存存储
  8. java编写的浏览器_Java编写简单的网页浏览器
  9. 两个关于vlan间通信的实验
  10. 鱼鱼Chen之学写自己的apk(六)ListView带动画图标