01、STM32-嵌入式系统

一、嵌入式系统概述

嵌入式系统的特点是集成度高、体积小、成本低、省电,它的功能可以使不同用户的要求得以满足。因而,嵌入式技术在社会的各个方面得到了十分广泛的应用。

1.1、嵌入式系统的概念

嵌入式操作系统:Embedded Operation System, EOS

IEEE:Institute of Electrical and Electronics Engineers 电气电子工程师协会。

IEEE定义嵌入式系统是:用于控制、监视或者辅助操作机器和设备的装置。

国内定义:一个具有特定功能或用途的计算机软、硬件集合体。即嵌入式系统就是嵌入对象体系中的专用计算机系统。它具有三要素:嵌入型、专用线和计算机。

嵌入式系统的特点:

  1. 可裁剪性。支持开放性和可伸缩性的体系结构
  2. 强实时性。可用于各种设备控制中
  3. 统一的接口。提供设备统一的驱动接口
  4. 操作方便、简单,提供友好的图形 GUI 和图形界面,追求易学易用。
  5. 提供强大的网络功能,支持 TCP/IP 协议及其他协议,提供 TCP/UDP/IP/PPP 协议支持及统一的 MAC 访问层接口,为各种移动计算设备预留接口
  6. 强稳定性,弱交互性。EOS 开始运行是不需要用户过多干预的,要求负责系统管理的 EOS 具有较强的稳定性。EOS 的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。
  7. 固化代码。EOS 和 应用软件被固化在嵌入式系统计算机的 ROM 中。
  8. 具有更好的硬件适应性,即良好的移植性。
  9. 嵌入式系统和具体应用有机地结合在一起,具有较长的生命周期。

1.2、嵌入式系统的发展

真正意义的嵌入式系统是在 1970 年出现,发展至今已有 50 多年的历史,大致经历四个阶段:

  1. 第一阶段:以单芯片为核心的可编程控制器形式的系统。
    应用于一些专业性强的工控系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制。
    主要特点是:系统结构和功能单一,处理效率较低,存储容量较小,几乎没有用户接口。以前在国内工业领域应用较为普遍。
  2. 第二阶段:以嵌入式 CPU 为基础、以简单操作系统为核心的嵌入式系统。
    其主要特点是:CPU 种类繁多,通用性比较弱;系统开销小,效率高;操作系统达到一定的兼容性和扩展性;应用软件较专业化,用户界面不够友好。
  3. 第三阶段:以嵌入式操作系统为标志的嵌入式系统
    其主要特点是:嵌入式操作系统内核小、效率高,能运行于各种不同类型的微处理器上,兼容性好;具备文件和目录管理、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口API,开发应用程序较简单。
  4. 第四阶段:以互联网为标志的嵌入式系统。
    其主要特点:随着互联网的发展以及其技术与信息家电、工业控制技术结合日益密切,嵌入式设备与互联网的结合将代表嵌入式系统的未来。

1.3、嵌入式系统的分类

嵌入式系统不等同于嵌入式处理器,只有将嵌入式处理器构成一个计算机系统并作为嵌入式应用时,系统才可称为嵌入式系统。因此嵌入式系统作为一个专用计算机系统,要不断地向计算机应用系统发展。嵌入式系统可进行如下分类:

1.3.1 按硬件分类:根据系统组成的硬件可分为

  1. 芯片级嵌入式系统:
    在处理器芯片中含有程序或算法。
  2. 模块级嵌入式系统:
    在系统中含有某个核心模块。
  3. 系统级嵌入式系统:
    包含完整系统并有嵌入软件的全部内容。

1.3.2 按实时性分类:分为实时系统和非实时系统

  1. 实时系统:
    实时系统是一种能够在严格的时间周期内,进行处理和响应的计算机系统。 实时系统主要分为硬实时系统和软实时系统。
  2. 非实时系统:
    非实时系统并不要求在特定的时间内响应外部事件。

二、嵌入式系统组成

一个嵌入式系统装置通常由嵌入式计算机和执行装置组成(被控对象)。执行装置可以接收嵌入式计算机系统发出的控制指令,执行所规定的操作或任务。

2.1 嵌入式系统硬件组成

嵌入式处理器的体系结构可以采用 冯·诺依曼 体系或 哈弗 体系结构;
指令系统可以选用精简指令集计算机系统(Reduced Instruction Set Computer , RISC)和复杂指令集计算系统 CISC (Complex Instrution Set Computer)。

2.1.1 嵌入式微处理器

嵌入式微处理器是嵌入式系统硬件部分的核心处理单元。发展有 3 种趋势:经济性、微型性和智能型。

  1. 专用性:嵌入式微处理器通常针对特定功能进行优化
  2. 低功耗:许多嵌入式微处理器在较低的功耗下运行,以延长电池寿命或减少散热。
  3. 小尺寸:微处理器的尺寸通常较小。
  4. 实时性:实时性能非常重要。
  5. 集成度高:现代嵌入式微处理器往往集成了多种功能,减少外部组件的数量。嵌入式微处理器包含的类型如下图所示。

|------|-------------------------------|------------|
| 缩写 | 英文全称 | 词义 |
| IPC | Industrial Personal Computer | 工业 PC |
| MPU | Micro-Processor Unit | 微处理器单元 |
| MCU | Micro-Controller Unit | 微控制单元(单片机) |
| DSP | Digital Signal Processor | 数字信号处理器 |
| SoC | System on a Chip | 片上系统 |
| SoPC | System on a Programmable Chip | 片上可编程系统 |

2.1.2 存储器

嵌入式系统用存储器来存放和执行代码。存储器包含 Cache、主存储器和辅助存储器。

  1. Cache:容量小、速度快的存储器阵列,位于嵌入式处理器内核与主存储器之间。
    在嵌入式系统中,Cache 全部都集成在嵌入式处理器内,可分为数据 Cache 、指令 Cache或混合 Cache。
  2. 主存储器:嵌入式处理器能直接访问的寄存器,用来存放系统和用户的程序及数据。位于微处理器的内部或外部,其容量为 256K ~ 1GB。有 ROM 与 RAM 两类。(内存条)
  3. 辅助存储器(外存储器):用来存放大数量量的程序代码或信息,用于长期保存用户的信息。有硬盘、NAND Flash、CF 卡、MMC 和 SD 卡等。

2.1.3 通用设备接口的 I/O 接口

  1. 嵌入式系统和外界交互需要一定形式的通用设备接口,通过与片外其他设备的或传感器的连接,实现微处理器与外部设备的输入/输出。
  2. 每个外设通常都只有单一的功能
  3. 可以在芯片外,也可以内置芯片中

2.2 嵌入式系统软件组成

2.2.1 中间层

中间层为硬件抽象层(Hardware Abstract Layer, HAL)或板级支持包(Board Support Package, BSP),连接硬件层与软件层。降低开发复杂性,实现软件的灵活性与可移植性。

通过 BSP 层提供的接口进行开发,分离上层软件与底层硬件,与硬件无关。 底层硬件的初始化,数据输入/输出操作,硬件设备的配置和管理。 通过有效的中间层设计,上层软件开发人员无需了解底层硬件细节,系统可以实现更高的灵活性和可扩展性。

2.2.2 系统软件层

系统软件层:

  1. 实时多任务操作系统(Real-time Operation System,RTOS)
    RTOS是嵌入式应用软件的基础和开发平台
  2. 文件系统
  3. 图形用户接口(Graphic User Interface,GUI)
  4. 网络系统及通用组件模块

2.2.3 应用软件层

嵌入式应用软件开发,是应用软件开发的一种。

  1. 在嵌入式操作系统平台上,写各种应用程序,实现各种功能
  2. 操作系统控制着应用程序编程及其与硬件的交互作用
  3. 应用程序控制着系统的运作和行为

三、嵌入式系统应用及发展趋势

3.1 嵌入式系统应用

  1. 工业设备。
  2. 信息家电和安防
  3. 消费类电子
  4. 交通管理和环境监测
  5. 汽车电子
  6. 军事国防武器
  7. 社会发展方面

3.2 嵌入式系统的发展

随着科技的不断进步和社会的不断发展,嵌入式系统也在不断发展。下面是未来嵌入式系统发展方向

  1. 定制化
  2. 集成化
  3. 网络化
  4. 智能化

3.3 嵌入式人工智能的发展

  1. 人工智能技术在各个领域得到了广泛的应用和发展,越来越多的嵌入式系统要求具备"人工智能" (Embedded Artificial Intelligence,EAI)。
  2. 嵌入式人工智能是将人工智能技术应用于嵌入式系统中的一种方法,其目标是在嵌入式系统中实现智能化,并在设备上进行实时的决策和响应。
  3. 嵌入式人工智能系统主要由模型、数据和算力三个模块组成。

四、嵌入式系统开发流程

4.1 嵌入式硬件开发流程

  1. 项目需求和计划阶段
  2. 原型阶段
  3. 开发阶段
  4. 验证阶段

4.2 嵌入式软件开发流程

4.2.1 交叉编译

使用交叉编译工具链,将源代码从宿主机上编译成,目标机能够执行的二进制代码。交叉编译器能够将针对宿主机的代码,转换为在目标硬件上可执行的格式。

4.2.2 交叉调试

在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试.。调试流程

  1. 在宿主机上启动调试器,配置与目标机的连接
  2. 将编译生成的二进制文件下载到目标机中
  3. 启动目标机的程序,并在宿主机上调试器中设置断点、监视变量、检查内存状态等。

调试工具和环境

  1. GDB (GNU Debugger):一种常见的开源调试工具,支持交叉调试。
  2. IDE:许多集成开发环境(如 Eclipse、Keil、IAR Embedded Workbench 等)
  3. 专用调试硬件:如 JTAG、SWD(Serial Wire Debug)接口等,能够更高效地进行调试。
相关推荐
码农三叔2 小时前
(6-4-02)IMU融合与机体状态估计:综合实战:腿式机器人的IMU关节融合与状态估计(2)
人工智能·嵌入式硬件·机器人·人机交互·人形机器人
qq_397562313 小时前
RV1106的安装使用 + linux的编程运行
单片机·嵌入式硬件
良许Linux3 小时前
ASIC的设计和制造
单片机·嵌入式硬件·fpga开发·程序员·嵌入式·制造
雨洛lhw4 小时前
DMA技术
嵌入式硬件·dma
旭日初扬4 小时前
N32H762IIL时钟树
单片机·嵌入式硬件
良许Linux4 小时前
汽车电子技术和汽车网络
网络·单片机·嵌入式硬件·汽车·嵌入式·制造
forAllforMe4 小时前
STM32 中断分组解析 说明,以及优先级
stm32·单片机·嵌入式硬件
不脱发的程序猿4 小时前
嵌入式Linux:阻塞式I/O与非阻塞式I/O
linux·服务器·单片机·嵌入式硬件·嵌入式
炸膛坦客4 小时前
单片机/C语言八股:(三)C 语言编译器的优化功能,包括 keil(仅作了解)
c语言·单片机·嵌入式硬件