嵌入式铁头山羊STM32-各章节详细笔记-查阅传送门(点击传送)


嵌入式开发是将软硬件结合,让设备(如51单片机、STM32 MCU、Linux系统设备)实现特定功能的完整过程。以下是主要阶段:

  1. 需求分析与系统规划
  2. 硬件设计与选型
  3. 软件开发(单片机、MCU、Linux应用或底层驱动)
  4. 软硬件集成与调试
  5. 测试与验证
  6. 部署与量产

以开发两个示例设备说明:基于STM32的温湿度传感器(联网上传数据)基于Linux的智能摄像头(人脸识别+云端报警)


1. 需求分析与系统规划

通俗解释

这是“定目标”的阶段,决定设备要干啥。比如,STM32温湿度传感器要把数据通过Wi-Fi传到手机或云端;Linux智能摄像头要识别人脸并联网报警。团队得搞清楚:

  • 设备功能:显示温度?联网?人脸识别?
  • 性能要求:实时性?低功耗?
  • 成本目标:卖100块还是1000块?
  • 联网方式:是本地控制(点对点通信,如手机直接访问设备网页),还是需要云端后端(数据存储、远程访问)?
专业角度
  • 功能需求:明确设备功能点。
    • STM32温湿度传感器:支持DHT11传感器、Wi-Fi联网(ESP8266)、数据上传。
    • Linux摄像头:支持H.264编码、人脸识别、云端报警。
  • 非功能需求:功耗(电池续航)、实时性(数据刷新频率)、环境适应性(高温/低温)。
  • 联网需求
    • 点对点通信:本地控制,如手机通过Wi-Fi访问STM32的Web服务器查看温湿度。
    • 后端服务:远程访问、数据存储,如温湿度数据上传到阿里云IoT,摄像头视频流存到AWS。
    • Web显示:设备生成网页(如STM32 Web服务器、Linux应用Web界面)供用户访问。
  • 系统架构
    • 硬件平台:51单片机、STM32 MCU、Raspberry Pi Linux系统。
    • 操作系统:无OS(51)、RTOS(STM32)、Linux。
    • 协议:MQTT(云端)、HTTP(Web显示)、TCP/UDP(点对点)。
  • 例子
    • 51单片机:简单任务(如LED控制),无联网需求。
    • STM32 MCU:温湿度传感器,Wi-Fi联网,可选Web服务器(本地)或云端后端(远程)。
    • Linux系统:智能摄像头,运行复杂应用(人脸识别),需后端支持云存储。

产出:需求文档(SRS)、系统架构图、硬件/软件选型方案、联网方案(点对点或后端)。


2. 硬件设计与选型

通俗解释

这是“搭积木”的阶段,选芯片、传感器、通信模块,设计电路板。比如,STM32温湿度传感器需要DHT11传感器、ESP8266 Wi-Fi模块;Linux摄像头需要高性能SoC(如NXP i.MX8)、摄像头模块。

专业角度
  • 硬件选型
    • 单片机/MCU
      • 51单片机:如AT89C51,8位,适合简单任务(无联网)。
      • STM32 MCU:如STM32F103(Cortex-M3),32位,支持SPI/I2C/UART,搭配Wi-Fi模块(如ESP8266)实现联网。
      • 其他MCU:ESP32(自带Wi-Fi/蓝牙)、PIC、AVR,选型看性能、功耗、成本。
    • Linux平台:Raspberry Pi、NXP i.MX、Allwinner SoC,适合跑Linux,支持AI和联网。
    • 外设:传感器(DHT11)、通信模块(ESP8266 Wi-Fi、LoRa、ENC28J60以太网)、电源管理芯片。
    • 联网模块:Wi-Fi(ESP8266)、以太网(W5500)、蓝牙(HC-05),支持点对点或云端通信。
  • 电路设计
    • 原理图:确定芯片与外设连接(如STM32通过UART接ESP8266)。
    • PCB设计:用Altium Designer、KiCAD,确保信号完整性、电磁兼容性(EMC)。
  • 电源与功耗:优化低功耗(如STM32睡眠模式),支持电池供电。
  • 联网相关
    • 点对点通信:硬件需支持Wi-Fi/以太网模块(如ESP8266)。
    • 后端服务:硬件需可靠通信模块,确保云端连接稳定性。
  • 例子
    • 51单片机:简单电路,接LED、按键,无联网。
    • STM32:含ESP8266 Wi-Fi模块,支持Web服务器或MQTT云端通信。
    • Linux:选NXP i.MX8 SoC、摄像头模块、Wi-Fi芯片,设计多层PCB。

产out:硬件原理图、PCB文件、物料清单(BOM)。


3. 软件开发

根据硬件平台,分为单片机/MCU开发Linux应用程序开发Linux底层驱动开发,以下明确后端服务、Web显示、点对点通信的角色。

单片机/MCU开发(51、STM32等)
通vulgar解释

给芯片写“指令”,让它控制硬件。比如,51单片机点亮LED,STM32读温湿度并通过Wi-Fi发出去。就像教芯片“干活”,还能让它当“迷你服务器”(Web显示)或直接跟手机“聊天”(点对点)。

专业角度
  • 开发环境:Keil(51)、STM32CubeIDE(STM32)、IAR。
  • 编程语言:C语言,少量汇编(优化性能)。
  • 开发内容
    • 初始化:配置MCU时钟、GPIO、中断(如STM32配置I2C读DHT11)。
    • 逻辑实现:主循环或RTOS任务,处理传感器数据、通信逻辑。
    • 联网功能
      • Web显示:运行LwIP协议栈,实现HTTP服务器,生成简单网页(如温湿度显示)。
      • 点对点通信:用TCP/UDP协议,直接与手机/PC通信(如手机App控制LED)。
      • 后端服务:用MQTT/HTTP协议,发送数据到云端(如阿里云IoT)。
    • 优化:降低内存占用、功耗(STM32低功耗模式)。
  • 例子
    • 51单片机:C代码控制LED闪烁,无联网。
    • STM32
      • 用FreeRTOS,任务1读温湿度,任务2通过ESP8266发数据。
      • Web显示:运行HTTP服务器,手机浏览器访问IP查看数据。
      • 点对点:手机App通过UDP发送指令,STM32回复温湿度。
      • 后end:用MQTT将数据发到云端,App通过云查看。
  • 后端/Web/点对点使用场景
    • Web显示:本地控制,手机浏览器访问STM32 IP(192.168.1.100),无需后端。
    • 点对点:手机App直接连STM32,适合简单本地通信。
    • 后端:远程监控、数据存储,数据发到云端。

产出:固件代码(.hex或.bin文件)。

Linux应用程序开发
通俗解释

给智能设备写“App”,比如智能摄像头的人脸识别程序或联网界面。就像写电脑软件,还能生成网页让用户访问,或者跟云端“聊天”。

专业角度
  • 开发环境:Linux PC(交叉编译)、VS Code、Qt Creator(界面)。
  • 编程语言:C/C++、Python、Java(少量)。
  • 开发内容
    • 功能实现:用C++写人脸识别(OpenCV)、用Qt做界面。
    • 联网功能
      • Web显示:用Flask/Django生成Web界面,用户通过浏览器访问设备。
      • 点对点:用socket编程,设备与手机/PC直接通信。
      • 后端:用MQTT/HTTP与云端交互,上传视频流或接收指令。
    • 优化:减少CPU占用,适配嵌入式Linux资源。
  • 例子
    • 为Raspberry Pi写C++程序,调用摄像头API,用TensorFlow Lite跑人脸识别。
    • Web显示:用Flask生成网页,浏览器访问设备IP查看视频。
    • 点对点:手机App通过TCP连接设备,控制摄像头。
    • 后端:视频流上传到AWS,触发云端报警。
  • 后端/Web/点对点使用场景
    • Web显示:本地监控,浏览器访问设备网页,无需后端。
    • 点对点:本地App控制,适合简单场景。
    • 后端:远程访问、AI分析、数据存储。

产出:可执行文件(如.elf)、用户界面程序。

Linux底层驱动开发
通俗解释

给硬件写“翻译官”,让Linux能跟摄像头、传感器“对话”。驱动本身不直接处理联网,但支持应用层的Web显示或后端通信。

专业角度
  • 开发环境:Linux内核源码、交叉编译工具链。
  • 编程语言:C,少量Rust(2025年趋势)。
  • 开发内容
    • 驱动编写:基于内核框架(如V4L2、I2C),写设备驱动。
    • 硬件交互:配置寄存器,处理中断(如摄像头数据中断)。
    • 调试:用printk、JTAG排查问题。
  • 联网相关
    • 驱动不直接实现联网,但为应用层提供硬件支持(如摄像头驱动支持视频流上传)。
    • Web显示/点对点:应用层基于驱动实现Web界面或TCP通信。
    • 后端:驱动支持的数据(如视频流)可通过应用层发到云端。
  • 例子
    • 为NXP i.MX8写V4L2驱动,支持OV5640摄像头。
    • 应用层用驱动捕获视频,生成Web界面或上传云端。

产出:内核模块(.ko文件)或集成到Linux内核。


4. 软硬件集成与调试

通俗解释

把“软件”和“硬件”合体,检查能不能跑。比如,STM32固件烧到芯片,测试Wi-Fi能不能发数据;Linux驱动和应用装到设备,检查摄像头能不能拍视频。

专业角度
  • 固件烧录
    • 单片机/MCU:用ST-Link、J-Link烧录固件到51或STM32。
    • Linux:通过SD卡或网络烧录内核、驱动、应用。
  • 调试工具
    • 硬件:示波器、逻辑分析仪检查信号;万用表测电压。
    • 软件:GDB、JTAG单步执行,查看寄存器/日志。
  • 联网调试
    • Web显示:检查STM32 Web服务器是否响应浏览器请求,Linux Web界面是否加载。
    • 点对点:测试手机App与设备的TCP/UDP通信。
    • 后端:验证MQTT/HTTP数据是否正确上传到云端。
  • 问题排查
    • 单片机:检查GPIO、Wi-Fi模块配置(如ESP8266 AT指令)。
    • Linux驱动:检查设备树、驱动加载。
    • Linux应用:检查API调用、内存泄漏。
  • 例子
    • STM32:调试I2C读取DHT11,检查ESP8266是否连接Wi-Fi,测试Web服务器。
    • Linux:调试V4L2驱动,检查摄像头画面,测试Web界面或云端上传。

产出:可运行的软硬件系统,初步验证功能。


5. 测试与验证

通俗解释

这是“找茬”阶段,试试设备在各种情况下的表现。比如,STM32温湿度传感器高温下会不会死机?Linux摄像头弱网下还能不能传视频?

专业角度
  • 功能测试:验证功能是否正确(如STM32读温湿度、Linux摄像头识别人脸)。
  • 性能测试:测试实时性、功耗、响应速度(如STM32任务切换、Linux CPU占用)。
  • 环境测试:高温、低温、电磁干扰下测试稳定性。
  • 联网测试
    • Web显示:测试浏览器访问STM32/Linux网页的稳定性。
    • 点对点:测试本地TCP/UDP通信的可靠性和延迟。
    • 后端:测试云端数据上传/下载,检查弱网环境表现。
  • 自动化测试
    • 单片机:脚本模拟传感器输入,验证输出。
    • Linux:Python脚本测试应用,或Ceedling测试驱动。
  • 安全测试(2025年重点)
    • 检查Web服务器是否支持TLS加密,防止黑客攻击。
    • 验证后端通信是否加密(如MQTT over TLS)。
    • 测试点对点通信是否防篡改。

产出:测试报告,修复后的系统。


6. 部署与量产

通俗解释

设备没问题后,准备“量产卖货”。比如,批量生产STM32温湿度传感器,烧录固件;或部署Linux摄像头到安防系统。

专业角度
  • 量产准备
    • 硬件:优化PCB,降低成本;采购可靠元器件。
    • 软件:固化固件或系统镜像,确保批量烧录效率。
  • 部署
    • 单片机:自动化烧录固件到STM32。
    • Linux:部署系统镜像,配置网络和云端服务。
  • 联网部署
    • Web显示:配置设备IP,确保用户可通过浏览器访问。
    • 点对点:提供App或PC客户端,连接设备IP。
    • 后端:配置云平台(如阿里云IoT),支持远程管理和OTA更新。
  • 维护:提供OTA功能,修复Bug或更新功能。
  • 例子
    • STM32:量产温湿度传感器,OTA更新固件,支持Web显示或云端后端。
    • Linux:部署智能摄像头到智慧城市,支持云端管理。

产出:量产产品、维护方案。


全流程中的平台对比

平台 开发特点 典型应用 全流程角色 联网方式
51单片机 简单、低成本、资源有限,C语言开发 LED控制、简单传感器 小型项目,调试简单 无联网,极少用Web/点对点/后端
STM32 MCU 高性能、支持RTOS,复杂外设,C语言开发 物联网设备、工业控制 中型项目,软硬件协同,调试复杂 Web显示(HTTP服务器)、点对点(TCP/UDP)、后端(MQTT云端)
Linux应用 复杂功能、联网、AI,C/C++/Python开发 智能摄像头、智能家居 面向用户功能,开发较易 Web显示(Flask网页)、点对点(socket)、后端(云存储)
Linux驱动 硬件控制、内核开发,C/Rust语言 摄像头驱动、传感器驱动 面向硬件,调试复杂 间接支持(应用层实现Web/点对点/后端)
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐