(好久没有更新linux了,现在筑波要猛攻嵌入式了TvT,后面如果学习到了使用嵌入式linux开发,我会继续更新的~~~)

目录

一,嵌入式系统

(1)嵌入式系统概述

       嵌入式系统的定义

       嵌入式系统的特点

       嵌入式系统的应用 

四、延伸:嵌入式系统的发展趋势

 (2)嵌入式系统的体系

       硬件架构

       软件层次

1,设备驱动层

BSP(板级支持包)的三大核心功能

一、系统上电时的硬件初始化

二、为嵌入式操作系统提供硬件驱动支持

三、集成软硬件相关的操作系统所需模块

总结:BSP 的 “桥梁” 价值

2,OS层 

3,应用层

 (3)嵌入式硬件系统

       嵌入式处理器分类

       典型嵌入式处理器

一、嵌入式微处理器(Embedded Microprocessor Unit, EMPU)

二、嵌入式微控制器(Microcontroller Unit, MCU)

三、数字信号处理器(Digital Signal Processor, DSP)

四、片上系统(System on Chip, SoC)

五、可编程片上系统(System on Programmable Chip, SOPC)

六、应用场景对比

       存储系统

嵌入式系统中的存储系统分类及特点

1. 随机存取存储器(Random Access Memory, RAM)

分类及特点

嵌入式场景应用

2. 只读存储器(Read-Only Memory, ROM)

分类:

3. 闪存存储器(Flash Memory)

分类及特点

嵌入式场景应用

       I/O接口

       人机接口

       电源及其他设备

 (4)嵌入式操作系统

       嵌入式操作系统的分类

       嵌入式实时操作系统的功能

       常用的嵌入式操作系统

1. VxWorks

2. QNX

3. FreeRTOS

4. Linux(嵌入式 Linux)

5. Windows Embedded

 (5)嵌入式系统的设计

设计流程图:

       嵌入式系统流程设计

1. 需求分析和产品定义

2. 系统方案设计

3. 软硬件协同设计

4. 系统联合调试与测试

       嵌入式系统开发环境搭建

1. 宿主机(Host Computer)

2. 目标机(Target Device)

3. 嵌入式系统交叉调试

一、交叉调试环境核心组件

二、交叉调试方法分类及应用场景

1. 基于 JTAG 的片上调试(直接访问内存)

2. 基于调试代理的远程调试

三、调试方法选择逻辑


一,嵌入式系统

(1)嵌入式系统概述

       嵌入式系统的定义

1. 标准定义
嵌入式系统是一种 “以应用为中心、以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统”。其核心在于 “嵌入式”,即系统嵌入到实际设备中,而非独立存在的通用计算机。

2. 系统组成

  • 硬件层面:由处理器(如 ARM、MIPS)、存储器(RAM/ROM)、外设接口(GPIO、UART、SPI 等)及传感器 / 执行器等组成,硬件配置根据应用场景定制。
  • 软件层面:包含嵌入式操作系统(如 Linux、FreeRTOS)、设备驱动程序、应用程序,软件通常固化在存储介质中运行。

3. 与通用计算机的区别

维度 嵌入式系统 通用计算机
用途 完成特定任务(如控制、监测) 通用计算、多任务处理
硬件资源 资源受限(低功耗、小体积) 资源丰富(高性能 CPU、大内存)
软件特性 实时性、可靠性要求高 通用性强,可灵活安装软件

       嵌入式系统的特点

专用性

  针对特定应用设计,如智能家电的控制逻辑、汽车电子的安全系统,功能单一但高效。

 :智能温控器仅负责温度监测与调节,无需支持复杂多媒体功能。

资源受限

  硬件限制:处理器性能较低(如 8 位 / 32 位 MCU),内存和存储容量小,功耗需严格控制(如   物联网传感器采用低功耗 MCU)。

  软件优化:程序需轻量化设计,避免冗余代码,例如使用精简的 RTOS 替代完整操作系统。

实时性要求高

  硬实时系统:需在确定时间内响应事件,如工业机器人控制,延迟可能导致安全事故。

  软实时系统允许一定延迟但需保证用户体验,如智能家居设备的指令响应。

可靠性与稳定性

  常工作于恶劣环境(高温、振动、电磁干扰),需通过硬件冗余(如双电源备份)和软件容错(如看门狗机制)确保持续运行

  例:医疗设备中的嵌入式系统需 7×24 小时无故障运行。

开发复杂度高

  采用 “交叉开发” 模式:在 PC 上编写代码,通过工具链编译后下载到目标设备运行。

  需兼顾硬件驱动与上层应用的协同开发,例如调试传感器接口与数据处理逻辑。

       嵌入式系统的应用 

  1. 消费电子领域

    1. 应用场景:智能手机、智能手表、智能家居设备(扫地机器人、智能门锁)。
    2. 案例:小米智能门锁通过嵌入式 MCU 处理指纹识别与蓝牙通信。
  2. 汽车电子领域

    • 应用场景:车载娱乐系统、自动驾驶辅助(ADAS)、发动机控制系统(ECU)。
    • 案例:特斯拉 Autopilot 的嵌入式计算平台负责图像识别与路径规划。
  3. 医疗设备领域

    • 应用场景:心电图仪(ECG)、核磁共振(MRI)设备、胰岛素泵。
    • 案例:迈瑞医疗的病人监护仪通过嵌入式系统实时监测生命体征数据。
  4. 物联网(IoT)领域

    • 应用场景:智能电表、环境监测传感器、农业大棚自动化控制。
    • 案例:LoRaWAN 传感器节点通过低功耗嵌入式系统实现远程数据采集。
  5. 航空航天与军事领域

    • 应用场景:导弹制导系统、无人机飞控、卫星姿态控制。
四、延伸:嵌入式系统的发展趋势
  • 与 AI 结合边缘计算芯片(如 NVIDIA Jetson)集成 AI 加速模块,实现本地智能决策(如智能摄像头的实时人脸识别)。
  • 低功耗与安全性:随着 IoT 普及,LPWAN(低功耗广域网)技术(如 NB-IoT)与硬件加密芯片(如 TrustZone)成为重点。

 (2)嵌入式系统的体系

       硬件架构

嵌入式系统的硬件架构,以嵌入式处理器为核心,由存储器,外围设备,通信模块,电源,及复位等必要的辅助接口组成。

    所有电路均可根据需求和成本进行裁剪、定制,这使得嵌入式系统具备极高的灵活性和针对性。随着技术发展,以微处理器为核心集成多种功能的 SoC(片上系统)芯片,以及结合 SoC 和 PLD 技术优点的 SOPC(可编程片上系统),逐渐成为嵌入式系统的核心,它们极大提升了系统在线升级能力。以 SoC/SOPC 为核心,搭配最少的外围器件构建应用系统,是嵌入式系统发展的重要方向。​

人机接口​

    人机接口是实现人与嵌入式系统交互的桥梁,常见的包括触摸屏、键盘、鼠标等设备。触摸屏通过电容或电阻感应技术,将用户的触摸操作转化为电信号,经控制器处理后传递给系统;键盘则通过扫描电路识别按键状态,将按键编码发送给处理器;鼠标利用光电或机械传感器检测位移,实现光标在界面上的移动。这些接口不仅方便用户输入指令、设置参数,还能让系统以图形、文字等形式向用户反馈信息,如智能仪表通过触摸屏展示实时数据和操作菜单,提升用户体验。​

看门狗电路​

(理解为正常运行时,按时(清零计数器)喂狗,死循环了就喂不了狗(无法出循环去清理计数器))

    看门狗电路是保障嵌入式系统可靠性的关键部件。其工作原理是:在系统正常运行时,软件周期性地看门狗电路发送 “喂狗” 信号(即复位看门狗计数器);若系统因程序跑飞、死循环等故障无法按时 “喂狗”,看门狗计数器超时溢出,进而触发硬件复位信号,强制重启系统,使系统恢复到正常工作状态。例如在工业控制领域,看门狗电路能确保设备在遭遇意外干扰时自动恢复运行,避免生产中断和事故发生。

       软件层次

嵌入式系统软件的开发方式分为直接面向硬件机程序开发基于操作系统嵌入式程序开发

如果嵌入式系统应用复杂硬件平台结构也更为复杂,此时就需要一个嵌入式操作系统来管理和调度内存、多任务、周边资源等。

操作系统通过对进程和任务的管理,合理分配 CPU 资源;同时提供统一的驱动接口屏蔽硬件差异,使设计人员无需关注底层硬件细节,专注于应用程序开发,从而有效减轻工作负担。

嵌入式软件一般包括三个层面:设备驱动层,OS层,应用层。

1,设备驱动层

一般由板级支持包(BSP)驱动程序组成,是嵌入式系统中不可或缺的部分。设备驱动层的作用是上层程序提供外围设备的操作接口并且实现设备的驱动程序上层程序可以不管设备内的实现细节,只需调用设备驱动的操作接口即可

BSP是所有与硬件相关的代码体的集合上层的驱动程序提供了访问硬件的寄存器的函数包,使之能更好的运行于主板硬件。

———————————————————————————————————————————

BSP(板级支持包)的三大核心功能

一、系统上电时的硬件初始化
  • 核心作用:在嵌入式系统启动阶段,为硬件设备 “搭建舞台”,确保底层硬件处于可工作状态。
  • 具体操作
    • 内存初始化:配置 RAM/Flash 的地址映射、时序参数(如读写周期),确保 CPU 能正确访问存储介质。
    • 寄存器配置:初始化处理器内部寄存器(如时钟控制寄存器、中断屏蔽寄存器),设定系统时钟频率、中断优先级等。
    • 设备与中断初始化:激活外设接口(如 UART、SPI),注册中断服务程序(ISR),使硬件中断能被系统捕获并处理。
二、为嵌入式操作系统提供硬件驱动支持
  • 核心作用:充当操作系统与硬件之间的 “翻译官”,将操作系统的抽象指令转换为硬件可执行的操作。
  • 具体功能
    • 驱动接口封装:为外设(如传感器、通信模块)编写驱动程序,提供统一 API(如uart_send()i2c_read()供操作系统调用
    • 中断处理适配将硬件中断映射到操作系统的中断管理机制中
三、集成软硬件相关的操作系统所需模块
  • 核心作用:将与硬件强相关的底层代码(如启动加载程序)和硬件无关的通用模块(如文件系统)整合,形成完整的系统运行环境。
  • 具体模块
    • 硬件相关模块:启动引导程序(Bootloader,如 U-Boot)、底层硬件初始化代码(汇编语言编写的 CPU 启动序列)。
    • 硬件无关模块:C 库函数、标准 IO 接口、网络协议栈(如 TCP/IP)的部分通用逻辑。
总结:BSP 的 “桥梁” 价值
硬件(CPU/外设) ← BSP(初始化+驱动+模块集成)→ 嵌入式操作系统 ← 应用程序
  • 若无 BSP:操作系统需为每款硬件重写底层代码(如不同 MCU 的时钟配置差异),移植成本极高。
  • 有了 BSP:例如 STM32 芯片的 BSP 已封装好 GPIO、ADC 等驱动,开发者基于此移植 FreeRTOS 时,仅需修改 BSP 中少量硬件参数,无需重写底层逻辑,大幅提升开发效率。

——————————————————————————————————————————

硬件抽象层(HAL)

应用程序依托嵌入式操作系统提供的接口实现功能。由于不同应用的硬件平台功能、硬件配置差异大、种类繁多,移植嵌入式操作系统到新硬件平台十分耗时。为解决该问题,在嵌入式操作系统硬件平台间加入硬件抽象层(HAL)。有了 HAL,操作系统和应用程序无需关注底层硬件细节,与硬件相关的内核代码也无需因硬件变化而频繁修改,只要 HAL 能提供必要服务,就能屏蔽硬件差异,简化系统移植。通常,HAL 以函数库形式完成对具体硬件的操作

~~~~~~~~~~~~~~~~~~~~不知道你们看得懂不,我看不太明白啊~~~~~~~~~~~~~~~~~~~~~~~~

搞个例子:包看懂的~~~

把嵌入式操作系统想象成 “跨国公司的管理者”,应用程序是 “公司员工”,不同的硬件平台则是 “各个国家”,每个国家有不同的语言和文化(就像硬件有不同的操作方式和特性)。管理者和员工原本要和不同国家合作时,得专门学习对应国家的语言和文化,十分麻烦。而硬件抽象层就像 “万能翻译官”,它了解各个国家的语言和文化,管理者和员工只需和翻译官沟通,翻译官再把指令和需求准确传达给不同国家,并把反馈带回。这样一来,管理者和员工不用再为学习各国语言文化发愁,无论对接哪个国家,都能高效开展工作 ,这就是硬件抽象层在嵌入式系统中屏蔽硬件差异、简化操作的作用。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2,OS层 

嵌入式操作系统是支持嵌入式系统应用的操作系统软件,作为嵌入式系统的重要组成部分,通常包含与硬件相关的底层驱动软件、系统内核、驱动程序、工具集及应用程序等。

从应用领域来看,嵌入式开发操作系统主要分为两类:

  • 面向控制、通信领域的嵌入式实时操作系统(RTOS):例如 VxWorks、PSOS、QNX、μC/OS-II、RT-Thread、FreeRTOS 等。这类系统强调实时性,适用于对响应速度要求严格的场景,如工业控制、航空航天等。
  • 面向消费电子产品的嵌入式非实时操作系统:典型代表有 Linux、Android、iOS 等,广泛应用于智能手机、机顶盒、电子书等设备,更注重用户交互和多功能性。

与通用操作系统相比,嵌入式操作系统具有以下突出特点:

  • 实时高效性:能快速响应外部事件,确保任务在规定时间内完成。
  • 硬件依赖性:与硬件紧密相关,需针对特定硬件平台定制开发。
  • 软件固态化:通常以固件形式存储在硬件中,保证系统稳定性和可靠性。
  • 应用专用性:针对特定应用场景设计,功能精简且高效,如智能家居设备的系统仅集成必要功能。

同时,它也具备通用操作系统的基本功能:

  • 有效管理复杂的系统资源,优化硬件性能。
  • 通过硬件虚拟化技术,让开发人员无需深入处理驱动程序移植和维护工作,降低开发难度。
  • 提供库函数、设备驱动接口、通信协议、图形界面、标准化浏览器等组件,支持应用程序开发。

3,应用层

嵌入式系统由硬件抽象层、操作系统和应用层构成硬件抽象层通过 API 为上层提供统一接口,Windows 的 HAL 底层直接操作硬件Linux 的 HAL 在用户空间以文件形式抽象设备。

应用程序通过调用操作系统 API 实现特定功能,可借助信号量、队列等工具实现多任务通信与管理。良好的 API 设计能降低系统耦合、提高内聚,增强可维护性与扩展性。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 (3)嵌入式硬件系统

嵌入式硬件系统以嵌入式处理器为核心搭配外围设备构成。

       嵌入式处理器分类

     常见分类包括嵌入式微处理器(如 ARM、MIPS)、微控制器、DSP (嵌入式数字信号处理器)和 SOC(片上系统)。设计时优先选择集成度高的 SoC/SOPC 芯片,减少硬件构件,以满足应用需求。

       典型嵌入式处理器

一、嵌入式微处理器(Embedded Microprocessor Unit, EMPU)

  • 特点
    具备通用处理器的高性能(如 32/64 位架构),但针对嵌入式场景优化了功耗和体积,通常需外扩存储器和外设接口。
  • 典型架构与产品
    • ARM 架构(应用最广泛):
      • Cortex-A 系列(高性能):用于智能手机(如骁龙 8 Gen 系列采用 ARM Cortex-A 内核)、平板电脑、智能电视。
      • Cortex-R 系列(实时性):汽车电子(如发动机控制单元)、工业控制。
      • Cortex-M 系列(低功耗):物联网设备、可穿戴设备(如小米手环)。
    • MIPS 架构
      • 曾广泛用于路由器(如思科部分型号)、数字电视,现逐渐被 ARM 取代,但在特定领域仍有应用。
    • PowerPC 架构
      • 工业控制、航空航天(如早期苹果 Macintosh 电脑、F-35 战斗机航电系统)。

二、嵌入式微控制器(Microcontroller Unit, MCU)

  • 特点
    将 CPU、存储器、外设(如 ADC、PWM)集成在单芯片中,成本低、功耗极低,适合控制类场景。
  • 典型产品
    • 8 位 MCU
      • 51 系列(如 STC89C52):低成本消费电子、教学实验。
      • AVR(如 ATmega328P):Arduino 开发板核心。
    • 16 位 MCU
      • MSP430(德州仪器):超低功耗应用(如智能电表、无线传感器)。
    • 32 位 MCU
      • STM32 系列(意法半导体):工业自动化、机器人、无人机(如大疆部分产品)。
      • ESP32(乐鑫科技):集成 Wi-Fi/BLE,物联网设备首选(如智能家居控制器)。

三、数字信号处理器(Digital Signal Processor, DSP)

  • 特点
    专为高速数字信号处理优化,具备强大的浮点运算能力,适合实时信号处理。
  • 典型产品
    • TI C2000 系列:工业电机控制(如变频空调压缩机控制)。
    • TI C6000 系列:通信基站(如 4G/5G 信号处理)、音频处理(如专业音响设备)。
    • ADSP-BF533(ADI):早期便携式多媒体设备(如 MP3 播放器)。

四、片上系统(System on Chip, SoC)

  • 特点
    将 CPU、GPU、内存控制器、通信模块等集成在单芯片,形成完整系统,大幅减小体积。
  • 典型产品
    • 应用处理器
      • 骁龙(Qualcomm):智能手机(如小米 14 搭载骁龙 8 Gen3)。
      • 苹果 A 系列:iPhone、iPad(如 A17 Pro)。
    • 专用 SoC
      • Raspberry Pi(树莓派):BCM2711 芯片,低成本开发板,用于机器人、DIY 项目。
      • 海思 Hi3516:安防监控摄像头(支持 H.265 编码)。

五、可编程片上系统(System on Programmable Chip, SOPC)

  • 特点
    基于 FPGA(现场可编程门阵列),可按需定制硬件电路,兼具灵活性与高性能。
  • 典型产品
    • Xilinx Zynq 系列
      • 集成 ARM Cortex-A 处理器 + FPGA,用于高端工业自动化、5G 通信(如基站前传设备)。
    • Intel Cyclone V
      • 工业控制、汽车 ADAS(高级驾驶辅助系统)。

六、应用场景对比

处理器类型 典型应用 代表产品
嵌入式微处理器 智能手机、工业控制、高端路由器 ARM Cortex-A、PowerPC
微控制器(MCU) 智能家居、传感器节点、小家电 STM32、ESP32、MSP430
数字信号处理器(DSP) 音频处理、电机控制、雷达信号处理 TI C2000、ADI Blackfin
片上系统(SoC) 平板电脑、智能手表、无人机 骁龙、苹果 A 系列、树莓派
可编程片上系统(SOPC) 高端通信设备、定制化工业控制 Xilinx Zynq、Intel Cyclone V

       存储系统

嵌入式系统中的存储系统分类及特点

1. 随机存取存储器(Random Access Memory, RAM)

定义
允许数据随时读写访问,且访问时间与数据存储位置无关的存储器,断电后数据丢失。

分类及特点
类型 工作原理 优点 缺点 典型应用
静态 RAM(SRAM) 利用触发器电路存储数据,无需刷新。 速度极快(纳秒级)、功耗低(待机时)、接口简单。 集成度低、成本高、容量较小 CPU 缓存、高速数据缓冲、实时控制系统。
动态 RAM(DRAM) 利用电容存储电荷,需定期刷新(约 64ms)以维持数据。 集成度高、容量大(GB 级)、成本低。 速度较慢(微秒级)、需刷新电路、功耗较高。 主内存(如嵌入式系统的运行内存)。
嵌入式场景应用
  • SRAM:用于对速度要求极高的场景(实时),如 FPGA 内部存储实时信号处理的缓冲。
  • DRAM:作为系统运行内存,支持多任务处理和大型程序运行(如嵌入式 Linux 系统的内存)。
2. 只读存储器(Read-Only Memory, ROM)

定义
数据写入后不可随意修改(或需特殊方式修改)断电后数据不丢失的存储器主要用于存储固定程序(如启动代码、固件)。

分类:

掩膜 ROM(Mask ROM)  可编程 ROM(PROM) 可擦除可编程 ROM(EPROM)

  • 电可擦除可编程 ROM(EEPROM)

     EEPROM(Electrically Erasable Programmable Read-Only Memory)即电可擦除可编程只读存储器,是一种非易失性存储技术。它允许数据在断电后保留,可通过电信号进行擦除和重新编程,无需像早期 ROM 那样依赖紫外线或物理方式修改内容。

3. 闪存存储器(Flash Memory)

定义
基于 EEPROM 技术发展而来,支持批量擦除和快速读写,兼具非易失性高存储密度的存储器,是嵌入式系统中最常用的存储介质之一。

分类及特点
类型 架构特点 优点 缺点 典型应用
NOR Flash 存储单元与逻辑电路同平面,支持随机地址访问(类似 RAM)。 读取速度快(可直接运行程序)、接口简单。 擦写速度慢、容量较小(MB 级)、成本高。 启动代码存储(如 BIOS、Bootloader)、固件升级。
NAND Flash 存储单元垂直堆叠,以块为单位擦除(4KB~128KB / 块),需通过控制器访问。 容量大(GB~TB 级)、成本低、擦写速度快(比 NOR 快 100 倍以上)。 不能随机访问、需 ECC(错误校验)、存在擦写寿命(约 10 万~100 万次)。 数据存储(如嵌入式系统的硬盘、SD 卡、U 盘)。
嵌入式场景应用
  • NOR Flash直接存储和运行启动程序(如 MCU 的 Bootloader),无需加载到 RAM,适合对启动速度要求高的场景。
  • NAND Flash:作为大容量数据存储介质(如手机的内置存储、工业设备的日志存储),需搭配文件系统(如 FAT、EXT4)使用。

       I/O接口

定时器 / 计数器:由带有保存当前值寄存器加法器逻辑电路组成,可连到周期性时钟信号用于测量时间间隔(定时器),或连到非周期性信号用于计外部事件发生次数(计数器)。作用包括为嵌入式操作系统的任务调度、软件时钟提供定时信号,作为通信电路的波特率发生器,还可用于处理器监控、液晶显示控制器、动态存储器控制器等。此外,通过增加额外电路可构成脉宽调制(PWM)器,用于电机调速、LED 亮度调节等;增加锁存器等可实现捕获功能。

模 / 数(A/D)转换器和数 / 模(D/A)转换器:D/A 转换器将输入数据值连续转换成模拟输出信号;A/D 转换器将连续变化的模拟信号转换为数字信号,转换前需对模拟输入进行采样并保持,典型的 A/D 转换器接口除模拟输入外还有两个主要数字接口,其类型有并行比较型 Flash、逐次比较型 SAR、Σ-Δ 型等,选用时需根据转换速度、精度、价格等因素综合考虑。

       人机接口

输入设备

  • 键盘:是标准输入设备,广泛用于嵌入式产品,可输入数字型数据或选择控制设备操作模式,分为接触式(如直接作用式机械键、薄膜式按键)和非接触式(如电容式、感应式按键),按操作方式可分为机械动作式和触摸式。
  • 触摸屏:是覆盖在输出设备上的输入设备,常用的有电阻式触摸屏和电容式触摸屏。

输出设备

  • LED 显示:发光二极管显示,具有亮度高、响应速度快、寿命长等优点,可用于简单的状态指示或数字显示。
  • LCD 显示器:液晶显示器是一种被动显示设备,需在周围环境光下使用,显示图案或字符时能耗低,一般可直接驱动或通过帧缓冲区驱动。

       电源及其他设备

电源:为嵌入式系统提供电能,对于便携式嵌入式系统,通常采用智能型电源管理设备和智能型电池,以实现节能和延长电池使用时间的目的。

其他设备

  • 时钟电路:为嵌入式系统提供时钟信号,是系统运行的基础,确保各个组件能够同步工作。钟信号的频率决定了处理器和其他设备的运行速度。
  • 复位电路:用于在系统出现异常或启动时,将嵌入式处理器和其他相关设备恢复到初始状态,保证系统能够正常启动和稳定运行。
  • 通信设备接口:如通用异步收发器(UART)、USB 设备、蓝牙设备、I2C、SPI、LIN、CAN、I2S、HDLC 等,用于实现嵌入式系统与其他设备之间的数据通信。例如,UART 是典型地用于计算机与异步串行设备的接口,可将计算机外部传来的串行数据转换为字节供计算机内部使用,也可将计算机内部的并行数据转换为串行数据输出,并能处理奇偶校验、同步管理等问题。

 (4)嵌入式操作系统

嵌入式操作系统(Embedded Operating System,简称 EOS)是一种专为嵌入式设备设计的操作系统软件。它运行在各类嵌入式系统中,这类系统通常由专用硬件(如微控制器 MCU、数字信号处理器 DSP)和定制化软件组成,目标是实现特定功能(如控制、监测、通信等),而非通用计算(如 PC 或服务器)。

       嵌入式操作系统的分类

根据系统特性与应用场景,嵌入式操作系统可分为以下几类:

  1. 实时嵌入式操作系统(RTOS)

    特点:具备严格的实时性要求,能在确定时间内响应外部事件并完成任务,确保系统稳定性和可靠性。
  2. 非实时嵌入式操作系统

    特点:不强调严格的时间约束,更注重功能完整性和用户体验,允许一定的任务延迟。
  3. 轻量级嵌入式操作系统

    特点:资源占用少、内核精简,适合硬件资源有限(如低功耗 MCU、传感器节点)的设备。应用场景:智能家居传感器、穿戴设备、小型物联网节点等。

       嵌入式实时操作系统的功能

实时操作系统的核心功能围绕 “实时性” 和 “任务管理” 展开,主要包括:

     1,任务管理:支持多任务并发执行,通过优先级调度、时间片轮转等算法分配 CPU 资源,确保高优先级任务优先执行。提供任务创建、删除、挂起、恢复等操作接口,实现任务生命周期的管理。

     2,实时调度机制: 采用抢占式调度策略,当高优先级任务就绪时,可立即中断低优先级任务的执行,保证响应时间的确定性。支持时间触发事件触发两种调度方式,满足不同场景的实时性需求。

     3,中断处理快速响应外部硬件中断,缩短中断延迟时间,确保关键事件(如传感器信号、设备故障)被及时处理。

     4,内存管理:提供内存分配与回收机制,支持静态内存分配(避免动态分配的碎片化问题)和内存保护,确保系统稳定性。

     5,通信与同步机制:支持信号量、互斥锁、消息队列、管道等同步原语,解决多任务间的资源竞争和数据交互问题。

     6,电源管理:针对嵌入式设备功耗敏感的特点,提供低功耗模式(如休眠、待机)的管理,延长设备续航时间。

     7,设备驱动支持: 封装硬件接口,为外围设备(如串口、ADC、LCD)提供统一的驱动程序,简化应用开发。

       常用的嵌入式操作系统

典型嵌入式操作系统的特点与应用场景(了解一下就好):

1. VxWorks
  • 特点:实时性强、可靠性高,内核精简且可裁剪,支持多种处理器架构(如 ARM、PowerPC)。
  • 应用:航空航天、军事设备、工业自动化、高端医疗设备等对可靠性要求极高的领域。
2. QNX
  • 特点:基于微内核架构,安全性和实时性突出,支持热升级和容错机制,兼容性强。
  • 应用:汽车电子(如车载信息娱乐系统、自动驾驶控制器)、医疗设备、工业控制。
3. FreeRTOS
  • 特点:开源、轻量级、易移植,支持多任务调度和基本的实时功能,资源占用极低。
  • 应用:消费电子、小型物联网设备、低成本嵌入式系统(如传感器、智能家居节点)。
4. Linux(嵌入式 Linux)
  • 特点:开源、功能丰富、生态完善,支持多任务和网络协议,可通过裁剪适配不同硬件。
  • 应用:工业控制、智能家居、医疗设备、路由器、高端消费电子(如智能电视、机器人)。
5. Windows Embedded
  • 特点:基于 Windows 系统,界面友好、开发工具成熟,适合需要图形化交互的嵌入式设备。
  • 应用:POS 机、工业平板电脑、自助终端、医疗诊断设备。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 (5)嵌入式系统的设计

设计流程图:

       嵌入式系统流程设计

1. 需求分析和产品定义
  • 核心目标:明确系统功能、性能、成本及约束条件,形成需求规格说明书。
  • 关键步骤

用户需求收集:调研应用场景(如工业控制、消费电子),梳理功能点(如传感器采集、数据通信)。

技术可行性分析:评估硬件选型(如 MCU 算力、功耗)、软件方案(是否需 RTOS)的可行性。

产品定义:确定系统指标(如实时性要求、工作温度范围)、接口规范(如通信协议)和开发周期。

2. 系统方案设计

架构设计:划分硬件模块(处理器、存储、外设)和软件模块(驱动、应用、操作系统),明确模块间接口。例:工业传感器系统可分为 “MCU 核心 + ADC 采集 + 无线通信” 硬件架构,搭配 FreeRTOS 实时系统。

方案验证:通过原型设计(如使用 Arduino 快速验证功能)或仿真(Proteus 模拟硬件行为)降低设计风险。

3. 软硬件协同设计

硬件设计:基于方案选型处理器(如 STM32F4)、外设芯片(ADC、WiFi 模块),绘制 PCB 原理图和版图。考虑 EMC(电磁兼容)、功耗优化(电源管理电路)和可调试性(预留 JTAG 接口)。

软件设计开发驱动程序(如 GPIO、UART 接口)、操作系统移植(如 FreeRTOS 内核裁剪)、应用逻辑(任务调度、算法实现)。采用模块化设计,如将通信功能封装为独立模块,降低耦合性。

4. 系统联合调试与测试

硬件调试使用示波器、逻辑分析仪检测信号完整性,排查电源纹波、时序错误等硬件问题。通过 JTAG/SWD 调试器下载程序,验证硬件初始化(如时钟配置、外设初始化)是否正常。

软件调试:利用串口日志(printf)、断点调试(单步执行)定位逻辑错误,测试任务调度、中断响应的实时性。

  • 性能与可靠性测试

压力测试:长时间满负荷运行,验证系统稳定性(如高温环境下的死机概率)。

可靠性测试:模拟异常场景(如断电、通信中断),测试系统恢复能力。

       嵌入式系统开发环境搭建

    嵌入式系统通常是一个资源受限的系统,不能在嵌入式系统上编写软件,并且,嵌入式系
统处理器的体系架构一般与通用计算机的处理器体系架构不同。

    因此:一般先在宿主机(通用计算机)上编写程序,然后使用交叉编译器(支持嵌入式系统处理器体系)生成在目标机(嵌入式系统)上可以运行的二进制代码格,然后使用调试器或烧写器将目标代码下载到目标机.
    在宿主机的集成开发环境(交叉开发软件)和调试器或烧写器的配合下对目标机的程序进行调试
和分析,直到程序功能满足系统要求,最后目标机就可以直接脱离宿主机独立运行工作了.

    搭建一个嵌入式系统交叉开发环境,般需要宿主机、交叉开发软件、调试器、目标机或
评估电路板等。

交叉开发环境结构如图所示:

1. 宿主机(Host Computer)
  • 定义:用于开发、编译和调试嵌入式软件的 PC 或工作站,通常运行 Windows/Linux 系统。
  • 核心组件
    • 开发工具
      • 集成开发环境(IDE,如 Keil MDK、Eclipse+CDT);
      • 交叉编译工具链(如 GNU Arm Embedded Toolchain,将 PC 端代码编译为目标机可执行文件);
      • 调试工具(GDB、IDE 内置调试器)。
    • 辅助工具
      • 串口调试助手(如 SSCOM)、网络抓包工具(Wireshark),用于测试通信功能。
2. 目标机(Target Device)
  • 定义:嵌入式系统的硬件平台,即最终运行软件的设备(如 STM32 开发板、树莓派)。
  • 关键要素
    • 硬件配置:处理器架构(ARM、RISC-V)、内存容量、外设接口(USB、UART);
    • 调试接口:JTAG/SWD(硬件调试)、UART(日志输出)、网络接口(远程调试)。
3. 嵌入式系统交叉调试
一、交叉调试环境核心组件

交叉调试依赖两类关键工具:

  1. 交叉编译器:在宿主机(如 PC)上将代码编译为目标机(如 ARM 芯片)可执行的二进制文件,解决架构不兼容问题(如 x86 编译 ARM 程序)。
  2. 交叉调试器:实现宿主机与目标机的调试交互,分为基于 JTAG 的硬件调试基于代理的软件调试。
二、交叉调试方法分类及应用场景

1. 基于 JTAG 的片上调试(直接访问内存)
  • 原理:利用 JTAG 国际标准协议(IEEE 1149.1),通过调试器(如 J-Link、ST-Link直接访问目标机芯片寄存器和内存支持单步执行、断点设置等操作
  • 流程:将固件(系统、应用、配置文件)烧录到目标机存储区宿主机 IDE(如 Keil MDK、IAR)通过调试器将调试命令转为 JTAG 指令,控制目标机运行
  • 适用场景
    • 资源紧缺型系统(内存 < 2MB):如裸机程序、运行 FreeRTOS/μC/OS-III 的消费电子(传感器、小家电)
    • 底层开发:驱动调试、裸系统初始化验证、单应用功能测试。
  • 典型工具:J-Link 调试器(支持 RDI 接口标准)、ST-Link(适配 STM32 系列 MCU)。
2. 基于调试代理的远程调试
  • 原理目标机运行调试代理程序(如 gdbserver、stub),与宿主机调试器通过串口或网络通信,利用软件中断(如陷阱指令)接管 CPU 实现调试
  • 分类及差异
    方式 特点 适用场景
    gdbserver 独立运行于目标机系统,需操作系统支持(如嵌入式 Linux),调试应用程序。 资源宽裕型系统(内存≥几十 MB)。
    stub 调试 与目标程序链接运行,需针对芯片架构移植,调试系统程序(如内核)。 半裸机或轻量级系统调试。
  • 适用场景
    • 资源宽裕型系统:运行 Linux 的工业控制板、支持 TCP/IP 的智能设备(需较大内存运行代理和驱动)。
  • 通信基础基于串口协议(如 UART)或 TCP/IP 协议,需目标机支持对应驱动。
三、调试方法选择逻辑
  • 资源紧缺型系统(如 MCU):优先选 JTAG 硬件调试或串口打印(如 printf 日志),避免代理程序占用内存。
  • 资源宽裕型系统(如嵌入式 Linux):使用 gdbserver 远程调试,支持复杂应用和系统级调试,充分利用内存资源。
  • 底层开发(驱动、Bootloader):JTAG 调试更直接,可访问未初始化的硬件资源;上层应用开发则适合远程调试,效率更高。

示例:调试 STM32 单片机(资源紧缺)用 ST-Link+Keil MDK(JTAG 调试);调试树莓派(嵌入式 Linux)用 gdbserver+Eclipse,通过网络远程调试。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(万事开头难呐,大家有耐心看完的话,还是可以对嵌入式理解更上一个层次的,加油加油~~)

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐