当前位置: 首页 > backend >正文

【项目思维】这是一份嵌入式软件开发的大纲(简化版)

这是一份嵌入式软件开发的大纲(简化版),当然,如果你想要在这个专业上更进一步,目前的技术栈是远远不够的,项目我也仅仅介绍了项目运作的思维模型。后续如果大家需要,我会继续写下去,运用日常手搓的小项目和真实的大型项目 向您介绍项目开发的完整流程。

首先,我们要掌握基本的C语言语法:
在这里插入图片描述
因为嵌入式开发一般是跑在Linux系统上的,所以我们需要学习 Linux 的用法:

在这里插入图片描述

然后,我们开始进入单片机,需要理解单片机的大体框架(单片机都有哪些):

在这里插入图片描述

我们最常见的一些单片机(GD32,ESP32,STM32…),我们需要深入到单片机的内部:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

因为 XMIND 绘图空间有限,仅仅写了一点问答示意,实际的技术问答非常多,在面试中会逐一遇到这些内容,所以单片机的外设部分一定要精通。

然后我们进入Linux驱动 / 理解Linux内核,推荐书籍:

《深入理解Linux内核》作者:DANIEL P.BOVET & MARCO CESATI 著 —— 中国电力出版社

在这里插入图片描述
在这里插入图片描述
此处的内容写的非常简化,其中还有更多的技术内容,您可以在书的目录上找到更多分支章节。

🧭 一、嵌入式系统的分类

✅ ① MCU(微控制器)

MCU = Microcontroller Unit,适用于实时控制、低功耗场景。

📌 按位数分类:

位数代表架构典型芯片特点
8位8051C51架构简单,资源极少,学习入门
16位STC89、STC15STC 系列C51升级版,性能略高
32位ARM Cortex-MSTM32、GD32、ESP32主流嵌入式开发平台
✅ ② MPU(嵌入式 Linux)

MPU = MicroProcessor Unit,通常运行 Linux / Android 等操作系统,适合图形界面、网络通信、AI 等。

📌 常见 MPU 芯片:

平台芯片厂商特点
STM32MP1STM32MP157ST支持 Linux + Cortex-M 协处理
RK 系列RK3566、RK3588瑞芯微多媒体强、NPU支持
MTK 平台MT6765 等联发科(MTK)多用于手机/IoT
全志平台V3S、A133全志科技廉价、高性价比
海思平台Hi3516、Hi3559华为海思安防/摄像头方案用得多
✅ ③ DSP(数字信号处理器)

专门用于高速信号处理、音频/图像/雷达等领域。

厂商典型芯片应用场景
TIC6000/C2000电机控制、雷达信号处理
ADISHARC音频、滤波处理
✅ ④ FPGA(现场可编程逻辑门阵列)

用于硬件级并行逻辑控制,可实现软硬件协同或完全自定义逻辑。

厂商典型芯片
XilinxSpartan、Zynq
Intel (Altera)Cyclone、MAX

二、总览:单片机内容知识树结构

我将单片机的知识树系统整理如下五大板块:

模块说明
① 初级外设基础硬件控制,适合入门:GPIO、UART、ADC、PWM 等
② 高级外设用于图像/存储/通信等复杂系统:CAN、SDIO、DCMI 等
③ 操作系统基于 MCU 的 RTOS:FreeRTOS、RT-Thread 等
④ 外设总线(板级) 各种总线协议对应的典型外设使用
⑤ 板间通信多板卡/模块间通信方式:USB、485、WIFI、蓝牙等
📦 ① 初级外设(基础控制类)
编号模块说明
1开发环境Keil、VSCode + 插件、PlatformIO
2GPIO 控制高低电平输出、LED、按键输入等
3时钟树SYSCLK、APB1CLK、APB2CLK 配置,影响外设速度
4中断控制器NVIC 配置,外部中断、优先级管理
5定时器 / PWM定时触发、中断 / 控制舵机、LED 呼吸灯
6ADC模拟量采集(电压、光敏、温度)
7DMA内存外设之间高速搬运
8UART串口通信,串口调试、打印日志
9I2CEEPROM、OLED、RTC、音频芯片
10SPIFlash、OLED、SD 卡等高速外设通信
🧩 ② 高级外设(复杂接口类)
外设用途说明
SDIO 协议SD卡高速接口比 SPI 快,需文件系统支持
DCMI摄像头图像采集STM32F4+ 常见,图像识别
FSMC与并口 TFT 屏接口外部存储器控制器
CAN 总线工业通信车载、工业自动化广泛使用
RS-485长距离通信差分信号、抗干扰强
WIFI/蓝牙无线通信ESP32 内置,STM32 需外挂模块
🧩 ③ 操作系统支持(RTOS)
系统特点适合芯片
FreeRTOS轻量级、跨平台、工业应用广泛STM32、ESP32、GD32
RT-Thread国产 RTOS,图形化配置,组件丰富STM32、GD32、RISC-V
ESP-IDF乐鑫官方开发框架,内置 RTOSESP32 专用

📌 单片机操作系统支持 学习重点:

  • 任务调度(优先级、抢占)
  • 互斥锁 / 信号量 / 队列 …
  • 软件定时器
  • 系统 SysTick 和节拍精度
🔌 ④ 外设总线(板级接口 + 模块接入)
接口对应模块技术要点
GPIO红外、人体感应数字电平检测
单总线DHT11 温湿度单线协议,需时序控制
UARTWIFI(ESP8266),4G,GPS串口通信
I2COLED、wm8978 音频芯片、触摸屏地址访问,主从模式
SPIOLED、RC522、SD卡高速,主从模式,4线
SDIOSD 卡高速模式,需 FatFS
FSMCTFT 屏并口屏幕,需大量引脚
MIPI/DSI/DCMI摄像头 / 屏幕图像采集、显示接口

📌 常见模块推荐:

  • OLED 0.96寸(I2C/SPI)
  • RC522(SPI)
  • DHT11(单总线)
  • SD 卡(SPI/SDIO)
  • 摄像头 OV2640(DCMI)
🧩 ⑤ 板卡之间的通信方式
通信方式特点使用场景
USB高速、即插即用USB转串口、HID
UART简单、可靠单片机间通信、调试
RS-485抗干扰、远距离工厂总线、楼宇控制
RS-232老式串口协议PC通讯、工业仪表
WIFI无线、需要协议栈模块间远程通信
蓝牙近距离无线配对通信、BLE传感器等

📌 一些拓展问题解答(如图示):

  1. 通信速度排序:USB > WIFI > SPI > UART > I2C > 485 > 单总线
  2. 通信距离排序:485 > RS232 > WIFI > 蓝牙 > UART/I2C
  3. 232 与 485 的区别
    • 232 为单端通信,点对点;最大距离约15米
    • 485 为差分通信,支持多点通信,最大距离可达1200米
  4. SPI 传输距离短的原因
    • 高速信号无差分、抗干扰差
    • 可通过加缓冲芯片、屏蔽线、降低速率、加 CRC 检错等方式提升可靠性

单片机阶段推荐学习路径:

阶段内容推荐平台
基础阶段GPIO、UART、ADC、PWM、I2CSTM32F103 / GD32F103
提高阶段DMA、FreeRTOS、SPI、OLEDSTM32F407 / ESP32
项目阶段音频、摄像头、WIFI、SD卡ESP32 / STM32F4 + 模块
通信阶段485、CAN、蓝牙、WIFI通信GD32+RS485 / ESP32
系统阶段RTOS + 多任务 + 外设调度RT-Thread / FreeRTOS

单片机开发就像搭积木:先学会控制每个外设模块 + 掌握系统调度能力 + 精通通信协议,然后你就能搭建出任意嵌入式应用系统。


三、总览:《Linux 驱动开发知识结构树(初级 + 高级)》

📘 Linux 驱动开发知识树(总体结构)
Linux 驱动开发
├── 初级阶段
│   ├── 1. 系统移植与内核裁剪
│   ├── 2. 字符设备驱动框架
│   ├── 3. 设备树写法
│   ├── 4. GPIO 子系统 / pinctrl 子系统
│   ├── 5. 平台设备驱动模型
│   ├── 6. 中断处理机制
│   └── 7. select / poll 等应用层接口
│   └── 8. ...
├── 高级阶段
│   ├── 1. input 子系统
│   ├── 2. I2C 子系统
│   ├── 3. SPI 子系统
│   ├── 4. 混杂设备子系统(misc)
│   ├── 5. DRM 显示驱动框架
│   ├── 6. 触摸屏驱动(结合 input + I2C)
│   ├── 7. V4L2 视频驱动框架
│   ├── 8. 音频驱动(ASoC 框架)
│   └── 9. USB 驱动框架 / 按键设备驱动
│   └── 10. ...由于技术无远弗届,所以学到了常用的技术之后就可以开始进入项目阶段了,后续的技术在项目中用到的时候再去补充技术栈。
🧱 初级阶段

📌 1. 系统搭建与内核裁剪

  • uboot 移植、内核移植
  • uboot 启动流程分析
  • 内核启动流程、根文件系统制作
  • menuconfig 配置内核、设备树编写
  • 交叉编译工具链准备

📌 2. 字符设备驱动编写

  • 编写最小字符设备驱动框架
  • 注册主设备号:register_chrdev
  • 创建设备节点:device_create
  • file_operations 操作集:
    • openreadwriteioctl
    • 提供用户空间访问入口

📌 3. 设备树的写法

  • 设备节点定义格式
  • compatiblereginterrupts 等属性
  • 如何绑定驱动和设备树节点

📌 4. GPIO 子系统 / pinctrl 子系统

  • GPIO 描述与申请方式
  • GPIO 子系统接口使用
  • pinctrl 子系统配置方法

📌 5. 平台设备驱动模型

  • platform_device / platform_driver
  • 资源管理:IOIRQclock
  • 设备和驱动的匹配机制

📌 6. 中断上下半部机制

  • 中断注册与释放
  • 上半部(快速处理)、下半部(tasklet/workqueue

📌 7. select / poll 机制

  • 阻塞与非阻塞通信
  • 驱动层 poll 实现
  • 应用层 select 使用

🧱 高级阶段

📌 1. input 子系统

  • 驱动键盘、触摸屏、鼠标
  • input_event 上报机制
  • input_register_device 流程

📌 2. I2C 子系统

  • i2c_driver / i2c_client 注册
  • I2C 总线驱动模型
  • i2c_transfer / i2c_smbus_xxx 使用

📌 3. SPI 子系统

  • spi_driver / spi_device
  • spi_transfer / spi_sync 接口
  • 典型 SPI 外设驱动(如 Flash)

📌 4. 混杂设备子系统

  • misc_register / misc_deregister
  • 简化字符设备开发流程
  • 应用于 LED、蜂鸣器、按键等

📌 5. DRM 显示驱动框架

  • DRM 架构基本组成:CRTC、Encoder、Connector、Plane
  • 屏幕驱动开发流程
  • 分辨率配置 / 缓冲区管理

📌 6. 触摸屏驱动

  • I2C 协议通信
  • input 子系统事件上报
  • 多点触控处理

📌 7. V4L2 视频驱动框架

  • 摄像头驱动框架
  • video_device 注册
  • V4L2 ioctl 实现(VIDIOC_REQBUF 等)

📌 8. ASoC 音频驱动

  • Codec 驱动 / 平台驱动
  • DAI(音频接口)配置
  • 声卡注册流程

📌 9. USB 驱动

  • USB 总线枚举流程
  • USB 驱动模型(usb_driver
  • 按键 / 存储类设备驱动编写

📘 推荐硬件平台:

平台说明
RK3568工业级,支持多媒体、Linux 驱动开发
STM32MP157Cortex-A7 + Cortex-M4,适合 Linux + RTOS
IMX6ULLNXP 主推的嵌入式 Linux 教学平台
全志 V3S带 DDR 的国产芯片,主打低成本 Linux 驱动开发

以上。这是一份嵌入式软件开发的大纲(简化版)汇总推荐。

以上,欢迎有从事同行业的电子信息工程、互联网通信、嵌入式开发的朋友共同探讨与提问,我可以提供实战演示或模板库。希望内容能够对你产生帮助!

http://www.xdnf.cn/news/19463.html

相关文章:

  • LabVIEW自动抗乳化测试仪
  • 高效大规模创新3D重建模型iLRM
  • 进阶篇(上):大模型训练工作流(LoRA 微调实战)
  • 链表相关OJ题
  • 2025年AI智能体开源技术栈全面解析:从基础框架到垂直应用
  • RocksDB 在 macOS M 系列 上运行时报错的解决方案
  • 音视频面试题集锦第 36 期
  • Unity:XML笔记
  • 在 Qt/C++ 中查找最近点并截断 QVector<QPointF>
  • 驱动——miscdevice框架 vs 标准字符设备cdev框架
  • Android开发之add方式添加Fragment生命周期不响应
  • 单例模式
  • Selenium 自动化测试实战:绕过登录直接获取 Cookie
  • 希尔排序。
  • Java面试-微服务(业务问题)
  • QT控件QPlainTextEdit、QTextEdit与QTextBrowser的区别
  • 【秋招笔试】2025.08.31小红书秋招笔试真题
  • 解读数据中台建设汇报方案【附全文阅读】
  • 淘天二面总结
  • 链表算法知识汇总
  • lesson51:CSS全攻略:从基础样式到前沿特性的实战指南
  • 【读论文】量子关联增强双梳光谱技术
  • RabbitMinQ(模拟实现消息队列项目)02
  • 【零碎小知识点 】(四) Java多线程编程深入与实践
  • Spring Cloud ------ Gateway
  • 阿里Qoder怎么样?实测对比TRAE SOLO 和 CodeBuddy IDE
  • 【甲烷数据集】全球逐日无缝隙柱平均干空气甲烷浓度(XCH₄)
  • Solid Explorer文件管理器:功能强大的安卓文件管理器及网盘文件管理器
  • FFMPEG AAC
  • 【MySQL详解】索引、事务、锁、日志