嵌入式系统学习笔记(Part.1)

什么是嵌入式系统

**嵌入式系统的定义:**嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)
嵌入式系统的三要素:嵌入、专用、计算机

换句话来说:

  1. 一个嵌入式系统就是一个具有特定功能或用途的计算机软硬件集合体
  2. 即以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统
  3. 嵌入式系统发展的最高形式——片上系统(SOC)

嵌入式系统的三个组成部分:

  1. 硬件。处理器;存储器(ROM、RAM);输入输出设备;其他部分辅助系统完成功能。
  2. 应用软件
  3. 实时操作系统(Real-Time Operating System,RTOS) 该系统用来管理应用软件,并提供一种机制,使得处理器分时地执行各个任并完成一定的时限要求

嵌入式处理器的分类和现状

嵌入式处理器的分类主要分为下面几种:

  • 微控制器(MCU)
  • 数字信号处理器(DSP)
  • 片上系统(SOC)
  • 可编程片上系统(SPOC)

**MCU: **
MCU的典型代表就是单片机,在单片机中集成了各种必要的功能和所需要的外设
特点:MCU处理能力非常有限,总线宽度一般为4位、8位和16位,处理速度有限,一般在几个MIPS,进行一些复杂的应用很难,想要运行OS就更难

MPU:
MPU是由计算机的CPU演变而来(80386-80387)与计算机处理器不同的是,在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。

DSP:
专门用于数字信号处理方面的处理器。
DSP是运算密集处理器,一般用在快速执行算法,做控制比较困难。为了追求高执行效率,不适合运行操作系统,核心代码使用汇编。

SOC:
片上系统,是IC设计的发展趋势。采用SOC设计技术,可以大幅度地提高系统的可靠性,减少系统的面积和功耗,降低系统成本,极大地提高系统的性能价格比

SOPC:
首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能
其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能

ARM处理器的特点:
总的来说:低功耗、低成本、高性能
具体的特点如下

  • 采用RISC指令集
  • 使用大量的寄存器
  • ARM/THUMB指令支持
  • 三/五级流水线

采用RISC指令集:

  1. 固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种;
  2. 使用单周期指令,便于流水线操作执行;
  3. 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率

大量使用寄存器:
ARM 处理器共有37个寄存器,被分为若干个组,这些寄存器包括:
31个通用寄存器,包括程序计数器(PC 指针),均为32位的寄存器;
6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位

高效的指令系统:
ARM微处理器支持两种指令集:ARM指令集和Thumb指令集。
ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。

其他技术

  • 除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗。
  • 所有的ARM指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。
  • 可用加载/存储指令批量传输数据,以提高数据的传输效率。
  • 可在一条数据处理指令中同时完成逻辑处理和移位处理。
  • 在循环处理中使用地址的自动增减来提高运行效率。

嵌入式操作系统(EOS)

操作系统(OS,Operating System):是隐藏底层不同硬件的差异,向在其上运行的应用程序提供一个统一的调用接口。
**操作系统主要完成三项任务:**内存管理、多任务管理和外围设备管理。

EOS是相对于一般操作系统而言的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件处理等外,还有以特点:

  • 强稳定性,弱交互性:具有很强的稳定性;
  • 较强的实时性;
  • 可伸缩性:开放、可伸缩性的体系结构;
  • 外设接口的统一性:提供各种设备驱动接口。

嵌入式系统的开发过程

嵌入式系统的应用开发一般由5个阶段构成:

  1. 需求分析
  2. 体系结构设计
  3. 硬件/软件设计
  4. 系统集成
  5. 代码固化

你可能感兴趣的:(学习,嵌入式)