小白日志(一)

嵌入式开发系统的简介

嵌入式系统是一种以硬件为载体,以计算机技术为基础,以应用程序为核心,满足特定功能、要求以及应用环境的专用计算机系统。所谓“嵌入式”,顾名思义,嵌入到某个物体中,使其一定程度上的智能化,自动化,由原来的不可控变为可控,由随机性趋于规律性。例如,在一套制冷制热系统上加上“嵌入式”就可以打造空调,在一个音响上加入“嵌入式”就拥有自己的“小i同学”。

嵌入式系统的主要特点

  1. 功耗限制
    在空间有限的开发板上,嵌入式系统的功耗问题是首要因素,或许开发板的能源提供只是几节电池而已。
  2. 低成本
    包含硬件成本和软件成本。硬件成本来源于微型处理器;软件成本一般难以预测,取决于设计方法。
  3. 专用性强
    嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念
  4. 多速率
    同时运行多个实时性任务,系统必须同时控制这些动作,但这些动作有些速度慢,有些速度快。
  5. 系统内核小
    由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。例如ENEA公司的OSE实时OS,内核只有5K,而Windows的内核则要大得多。
  6. 不可垄断性
  7. 产品稳定性

嵌入式系统的分类

类型 举例
系统级 各种类型的工控机、PC104模块
片级 各种以单片机、DSP、微处理器为核心的产品
板级 各种类型的带CPU的主板及OEM产品

嵌入式系统的软/硬件框架


简单解释一下图中一些名词:

  • D/A:数模转换器,又称D/A转换器,简称DAC,是把数字量转变成模拟量的器件。

  • A/D:模数转换器,又称A/D转换器,简称ADC,是把模拟量转变成数字量的器件。
    “看到这里,电子类自动类的同学有没有很亲切,没错,数电模电就是搞这个东西。”

  • I/O:输入/输出(Input/Output)分为IO设备和IO接口两个部分。在一些POSIX兼容的系统上,如Linux系统,I/O的操作可有多种方式。

  • ROM:只读存储器(Read-Only Memory),一种只能读出事先所存数据的固态半导体存储器。

  • SDRAM:同步动态随机存取内存,也就是我们现在常说的“内存”,如今已经发展出多代,其中DDR便是SDRAM中的一种,是我们今天普遍使用的内存条。

  • BSP/HAL(板级支持包/硬件抽象层):研究这部分的都是些“大牛”,你可以就理解为操作系统和硬件对接的一个“润滑层”,没有这个“润滑层”,用户不能很流畅的操作硬件。

实时操作系统(RTOS)

实时操作系统是一段在嵌入式系统启动后首先执行的背景程序,他是嵌入式系统的“大脑”,用户的应用程序是运行于RTOS之上的各个任务,RTOS根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在RTOS支持的系统中, 每个任务均有一个优先级,RTOS根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。

实时操作系统特点

IEEE 的实时UNIX分委会认为实时操作系统应具备以下的几点:

  • 异步的事件响应
  • 切换时间和中断延迟时间确定
  • 优先级中断和调度
  • 抢占式调度
  • 内存锁定
  • 连续文件
  • 同步

总的来说实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内作出响应。它强调的是实时性可靠性和灵活性, 与实时应用软件相结合成为有机的整体起着核心作用, 由它来管理和协调各项工作,为应用软件提供良好的运行软件环境及开发环境。

嵌入式操作系统的优缺点

  • 优点

1.使程序的设计和扩展变得容易,大大提高了开发效率
2.充分发挥32位CPU多任务的潜力,实现多任务设计,能够充分利用硬件资源和实现资源共享。
3.实时性和健壮性能够得到更好的保证。

  • 缺点
    嵌入式操作系统会增加ROM/RAM等额外开销,以及5~10%的CPU额外负荷。

有关嵌入式操作系统的一些零散概念——

前后台系统

任务

一个任务,也称作一个进程,是一个简单的程序,该程序可以认为CPU完全属于该程序自己。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。

  • 任务切换
    当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态,即保存CPU寄存器中的全部内容。这些内容保存在任务的当前状态保存区,也就是任务自已的栈区之中。入栈工作完成以后,就把下一个将要运行的任务的当前状态从任务的栈中重新装入CPU的寄予存器,并开始下一个任务的运行。这个过程就称为任务切换。这个过程增加了应用程序的额外负荷。CPU的内部寄存器越多,额外负荷就越重。做任务切换所需要的时间取决于CPU有多少寄存器要入栈。
  • 任务优先级
    任务的优先级是表示任务被调度的优先程度。每个任务都具有优先级。任务越重要,赋予的优先级应越高,越容易被调度而进入运行态。
内核

多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信。内核提供的基本服务是任务切换。使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核需要消耗一定的系统资源,比如2%~5%的CPU运行时间、RAM和ROM等。内核提供必不可少的系统服务,如信号量、消息队列、延时等

  • 非占先式内核
    非占先式内核要求每个任务自我放弃CPU 的所有权。非占先式调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。

  • 占先式内核
    当系统响应时间很重要时,要使用占先式内核。因此绝大多数商业上销售的实时内核都是占先式内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪状态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。

中断

中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)上下文,即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到:

  1. 在前后台系统中,程序回到后台程序;
  2. 对非占先式内核而言,程序回到被中断了的任务;
  3. 对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。

  • 时钟节拍
    时钟节拍是特定的周期性中断。这个中断可以看作是系统心脏的脉动。中断之间的时间间隔取决于不同应用,一般在10ms到200ms之间。其作用:时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。时钟节拍率越快,系统的额外开销就越大。
资源

程序运行时可使用的软、硬件环境统称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器。资源也可以是一个变量、一个结构或一个数组等。

  • 共享资源
    可以被一个以上任务使用的资源叫做共享资源。为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫做互斥。

嵌入式系统的应用

“第一次写东西,欢迎各路大神指点,希望做出补充和提出建议”

嵌入式开发系统的简介相关推荐

  1. Linux播放器MPlayer嵌入式开发系统中的应用

    摘要:本文论述了MPlayer在嵌入式开发系统中的应用,说明了如何在嵌入式开发板的平台上实现MPlayer的配置.编译.安装及调试过程. 关键词:嵌入式系统:MPlayer:MEncoder 引言 嵌 ...

  2. 2019年嵌入式开发系统详细分析告诉你是否还值得去学习

    如今嵌入式可以说是当下比较火热的IT技术之一了,很多数字包括手机.电子字典.可视电话.数字相机.数字摄像机.机顶盒.智能玩具医疗仪器和航空航天设备等都是典型的嵌入式系统.所以,现在可以说嵌入式真的很火 ...

  3. 【嵌入式开发系统04】Unbuntu下图像处理开源软件库 Opencv3.4.11的安装、编译及应用初步

    本文目的是主要介绍了怎样安装opencv,如何用opencv编译程序打开一个图片或者摄像头等,并为之后的人脸识别系统打了基础. 文章目录 (一)什么是Opencv? (二)Opencv的下载 1.安装 ...

  4. 嵌入式VxWorks系统开发与应用

    免费下载地址: http://www.vxworks.club 本书详细介绍了当今流行的嵌入式操作系统VxWorks,首先概括VxWorks操作系统的基本知识,如任务管理.任务间通信机制.内存管理以及 ...

  5. 嵌入式开发每天都做什么?

    大家现在对嵌入式已经都很熟悉了,我国每年嵌入式开发的缺口大约在五十万左右,嵌入式现在已经成了最受欢迎的职业之一,那么嵌入式开发每天都做什么呢?下面一起来了解下吧. 点击获取1V1嵌入式学习规划,现在还 ...

  6. 1.嵌入式系统的简介

    1.嵌入式系统的简介 1.1 课程规划与学习方法 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,但同时也是最难以掌 握的学科之一,很多踌躇满志的同学最终没能成为一名合格的嵌入式工程师,很大 ...

  7. 构建一个适合stm32mp157系列开发板的嵌入式Linux系统

    在线课堂:https://www.100ask.net/index(课程观看) 论  坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taoba ...

  8. 嵌入式linux系统应用开发

    关于嵌入式系统   平时大家说的嵌入式其实范围比较广的,是一种软硬件可裁剪,以应用为中心开发的专用系统,硬件平台可以是单片机,或者以ARM系列的处理器.单片机一般直接裸奔程序,不过现在有了好多基于单片 ...

  9. 嵌入式Linux系统开发入门宝典(第2版)

    距离<嵌入式Linux系统开发入门宝典>第1版已经有6年了,由于是第一次写作,对章节的划分,语言的组织,知识点的推敲,以及本人习惯用五笔输入法打字,有很多地方出现一些诡异的文字.另外,既然 ...

  10. 嵌入式开发(7)系统定时器(SysTick)之延时函数运用

    目录 一.系统定时器 1. 简介 2.工作原理 3.频率的概念 二.库函数SysTick定时器操作 系统定时器配置 三.寄存器SysTick定时器操作 1.系统定时器的用途 2.寄存器 3.官方示例 ...

最新文章

  1. 红帽linux终端快捷键,二、回忆redhat各种基本命令
  2. Coding Interview Guide--打印两个有序链表的公共部分
  3. 数字信号处理学习笔记(四)|实现巴特沃斯型模拟低通滤波器
  4. 转:ORACLE 中ROWNUM用法总结!
  5. 螺旋测微器 flash_使用测微计收集应用程序指标
  6. Linux服务-bind
  7. @程序员,我最多再等你两天!
  8. 拓端tecdat|R语言异方差回归模型建模:用误差方差解释异方差
  9. SEO—搜索引擎优化初探
  10. kibana是什么_三千字带你搞懂什么是ELK
  11. mx350显卡天梯图_2020年显卡天梯图(2020.04月更新)
  12. Vba实现工作薄和工作表密码破解
  13. OceanBase 安装-采用OCP安装
  14. 计算机等级考试计算器吗,算天数转单位Win7计算器能做得更多
  15. 秦曾昌人工智能课程---3、机器学习中的哲学
  16. Elasticsearch——Bboss
  17. 亚马逊跨境电商平台怎么入驻?
  18. 除了ARM架构,还有其他的架构吗?有没有可能开发出比ARM架构还好的? RISC-V是未来的趋势吗?
  19. DOM的readyState属性
  20. 计算机专业大一期末总结

热门文章

  1. java 开源mis系统框架_开源 MIS 系统解决方案 jeeww
  2. 计算机教程打字方法,技巧:打字指法和关键位置教程_IT /计算机_信息
  3. Emulator: Process finished with exit code -1073741515 (0xC0000135)错误
  4. Oracle物化视图的刷新
  5. CPT203-Software Engineering
  6. 电脑系统优化清理工具CCleaner
  7. hdu 1862 hdoj 1862
  8. Python初学者必刷的五个项目,你做过几个?
  9. go 的基本命令详解
  10. Bugzilla 下载和安装