📚 嵌入式全栈修炼手册
Current Focus: C++ 基础 & Buildroot 系统构建
Last Updated: 2025-02-05
🛠️ 技能树进度总览
| 领域 | 核心模块 | 细分任务 | 状态 | 备注/计划 |
|---|---|---|---|---|
| C/C++ | C++ 基础 | 语法与核心机制 | 🟡 | 正在攻克,配合 AI 刷题中 |
| C++ 17 | 现代特性进阶 | ⏸️ | 暂停,待基础夯实后再启动 | |
| Embedded | 系统裁剪 | Kernel + Debian (鲁班猫) | ✅ | 已完成,流程已通 |
| Buildroot 构建 | ⭕ | 待学习 (Hi3519/RV1106 重点) | ||
| Linux 编程 | 进程/线程/IPC | ⭕ | 待学习,需结合 C++ 实战 | |
| 嵌入式Linux基础 | Linux命令、介绍 | 基于imx6ULL | ✅ | 已基本学习完,剩余细节暂无补充计划 |
📝 状态图例
✅ 已达成 (Done) | 🟡 进行中 (Doing) | ⭕ 待启动 (Todo) | ⏸️ 挂起 (Paused)
Guide 板块导读
本板块收录了嵌入式开发全栈学习路径的核心教程,涵盖 Linux 基础、单片机开发、编程语言进阶、机器人操作系统 (ROS2) 及综合项目实战。
一、嵌入式 Linux 基础与应用
从开发环境搭建到系统编程,构建嵌入式 Linux 开发的完整知识体系。
- 前言:介绍学习笔记的来源与定位,涵盖嵌入式 Linux 基础与 C 语言编程概览。
- 如何学习 Linux 开发:提供嵌入式 Linux 开发的宏观学习路线图。
- i.MX 系列芯片简介:解析 ARM 体系架构、授权方式及 Cortex A7 内核特性。
- Linux 系统简介:介绍 Linux 的起源、内核构成及主流发行版本。
- 虚拟机安装 Ubuntu 系统:指导在 VMware 中安装 Ubuntu 及配置共享文件夹。
- Linux 文件目录:详解 Linux 目录层次标准 (FHS) 及各核心目录用途。
- 用户管理与文件权限:讲解 Linux 用户登录流程及 passwd、shadow 等核心文件。
- Linux 命令行:介绍 Shell 概念、命令格式及 Tab 补全等常用技巧。
- 使用编辑器:对比 gedit 与 vim 编辑器的区别及基础使用方法。
- 运行开发板与串口终端登录:指导开发板的启动流程与串口终端登录操作。
- 查看开发板系统信息:利用
/proc目录查看 CPU、内核版本等系统运行信息。 - 命令行点灯和检测按键:通过
/sys目录使用 Shell 命令控制 LED 和检测按键状态。 - 使用脚本测试硬件:利用出厂脚本快速测试 LED、按键、蜂鸣器等板载外设。
- 认识系统镜像和固件:介绍镜像文件格式及野火 Debian 镜像的版本差异。
- 烧录 Debian 镜像至 SD 卡:使用 Etcher 工具将 Debian 镜像烧录至 SD 卡的完整步骤。
- fire-config 工具简介:介绍野火开发板系统配置工具的功能与菜单操作。
- 项目资料下载-git:介绍 Git 版本控制的特点及 GitHub/Gitee 项目源码下载方法。
- 挂载 NFS 网络文件系统:搭建 NFS 网络环境,实现主机与开发板之间的文件共享。
- [GCC 和 Hello World](./嵌入式LInux基础/21.GCC和Hello World.md):解构 Hello World 程序在 Linux 下的编译过程及 GCC 工具链。
- ARM-GCC 和开发板的 HelloWorld:演示在 ARM 开发板上运行交叉编译程序的过程与架构差异。
- [Linux 系统下的 Hello World](./嵌入式LInux基础/23. Linux系统下的Hello World.md):深入剖析 Linux 系统下 Hello World 程序的运行机制与执行流程。
- [Makefile 简介](./嵌入式LInux基础/24. Makefile简介.md):引入 Makefile 的概念,解决多文件编译的依赖管理问题。
- [使用 Makefile 控制编译](./嵌入式LInux基础/25. 使用Makefile控制编译.md):通过实验演示 Makefile 的基础语法与编写规则。
- [文件操作与系统调用](./嵌入式LInux基础/26. 文件操作与系统调用.md):探讨 Linux 文件系统类型及 C 标准库与系统调用的关系。
二、STM32 单片机开发
基于标准库的 STM32F103 开发教程,从外设原理到驱动编写全覆盖。
- STM32 简介:介绍 STM32 产品线、ARM 架构及 F103C8T6 芯片资源。
- 软件安装:指导 Keil5、STLink 驱动等开发环境的安装配置。
- 新建工程:讲解基于标准库的 STM32 工程建立流程及点亮第一个 LED。
- GPIO 输出:详解 GPIO 输出模式的配置步骤与常用库函数。
- LED & 流水灯 & 蜂鸣器:实现 LED 闪烁、流水灯及蜂鸣器控制的实战代码。
- GPIO 输入:分析按键与传感器模块的硬件电路及 GPIO 输入配置。
- 按键控制 LED & 光敏控制蜂鸣:结合按键与光敏传感器实现硬件交互控制。
- OLED 调试工具:介绍 OLED 屏幕作为调试工具的硬件连接与驱动原理。
- OLED 显示屏:演示 OLED 显示字符、字符串及数字的程序实例。
- EXTI 外部中断:讲解外部中断的配置步骤及中断函数编写规范。
- 红外传感 & 旋转编码计次:利用外部中断实现对射式红外传感器计数。
- 定时器:概览 STM32 定时器的功能分类与四大应用场景。
- TIM 定时中断:详解基本定时器的结构原理与定时中断配置。
- 定时中断 & 内外时钟源选择:演示定时器定时中断的具体程序实现。
- TIM 输出比较:利用输出比较功能产生 PWM 波形驱动电机。
- 流水灯 & 舵机电机驱动:通过 PWM 驱动舵机与直流电机的实战应用。
- TIM 输入捕获:讲解输入捕获功能测量脉冲频率与占空比的原理。
- 输入捕获测频率 & PWMI 测频率占空比:使用 PWMI 模式测量方波频率与占空比。
- ADC 数模转换器:介绍 ADC 转换原理及逐次逼近型 ADC 结构。
- AD 单通道 & 多通道:配置 ADC 实现单通道与多通道模数转换。
- USART 串口协议:解析串口通信协议的帧格式与电平标准。
- USART 串口外设:详解 STM32 USART 外设的结构框图与基本配置。
- 串口发送 & 串口接收:实现串口数据发送与接收的底层代码逻辑。
- USART 串口数据包:设计 HEX 与文本数据包格式以解决数据连续传输问题。
- 串口收发 HEX & 文本数据包:编写串口收发数据包的完整驱动程序。
- [FlyMcu & STLINK Utility](./STM32单片机/【9-6】FlyMcu & STLINK Utility.md):介绍串口下载工具 FlyMcu 与 STLINK Utility 的使用。
- 其他模块驱动学习:记录 NRF24L01 无线通信模块的驱动开发笔记。
三、FreeRTOS 实时操作系统
嵌入式实时操作系统入门,从原理理解到实战移植。
- FreeRTOS 操作系统移植教程-原理版:解析 RTOS 任务调度概念及 FreeRTOS 移植原理。
- FreeRTOS 操作系统移植教程-纯操作:提供 FreeRTOS 源码文件复制与工程配置的纯操作步骤。
四、C++ 编程进阶
从 C++ 基础语法到现代 C++ 特性,提升语言驾驭能力。
- 基础篇
- 引言:说明 C++ 基础学习笔记的定位与参考资料来源。
- [Phase 1 详细知识点目录](./C++基础/1.Phase 1 详细知识点目录.md):梳理 C++ 与 C 的本质差异及引用相关的核心知识点。
- [Phase 1 · 第一章 · 第1讲](./C++基础/2.Phase 1 · 第一章 · 第1讲.md):深入解析引用的本质及其底层 const 指针实现机制。
- 现代 C++ (C++17)
- 序言:阐述现代 C++ 的发展历程及新特性带来的编程范式变革。
- [迈向现代 C++](./C++17/第一章 迈向现代C++.md):配置 Clang 编译环境并对比 GCC 与 Clang 的架构差异。
- [语言可用性的强化](./C++17/第二章 语言可用性的强化.md):介绍 nullptr 等常量特性对语言可用性的增强。
- Clang++ 开发环境搭建:在 Ubuntu 环境下搭建 Clang++ 编译环境的步骤指南。
- 算法入门
- C++ 算法笔记 1:总结 String 类的基础操作与核心优势。
- c++ 算法入门 readme:记录算法学习网站的练习进度与说明。
五、ROS2 机器人操作系统
ROS2 Humble 版本从入门命令到功能包开发的系统性教程。
- CLI 工具篇
- 引言:ROS2 CLI 部分学习笔记的导航与说明。
- 配置环境:讲解 ROS2 环境变量的配置与检查方法。
- 使用 turtlesim、ros2 和 rqt:通过 turtlesim 模拟器初步体验 ROS2 节点与话题。
- 理解节点:解析 ROS2 节点的概念及命令行管理工具的使用。
- 理解话题:利用 rqt_graph 可视化理解 ROS2 话题的通信机制。
- 了解服务:对比服务与话题的区别,演示服务的调用与响应模式。
- 理解参数:介绍节点参数的概念及命令行操作方法。
- 理解行为:解析 Action 通信机制及其在长时间任务中的应用。
- 使用 rqt_console 查看日志:利用 rqt_console 工具查看与管理日志消息。
- 启动节点:介绍 Launch 文件的作用及运行多节点系统的方法。
- 客户端库篇
六、Linux 系统裁剪与构建
深入 Linux 系统底层,掌握镜像裁剪与定制技能。
- Linux 系统裁剪-基础知识:介绍 Linux 系统构成,包括 Uboot、内核、设备树及裁剪本质。
- 鲁班猫系统镜像裁剪实战:基于 LubanCat_Gen_SDK 进行系统镜像裁剪与构建的实战指南。
七、大车项目实战
基于 RTK GPS 的室外自主导航机器人综合项目开发记录。
- Nav2 无图导航仿真搭建:在 ROS2 仿真中搭建基于 EKF 定位与 Nav2 的导航系统。
- 融入 RTK-GPS 插件进行仿真:将 GPS 数据融合进定位链路,实现 map 坐标系与地理坐标对齐。
- [功能包整合与 GitHub 管理](./大车-CarPlanning/4.功能包整合与 GitHub 管理.md):将散落的配置文件整合为标准 ROS2 功能包并进行版本管理。
- 附录-运行中遇到的报错记录:记录 WSL2 环境下 ROS2 通讯错误的排查与解决方案。
