📚 嵌入式全栈修炼手册
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 板块导读列表
C++17 教程
- 序言 - 介绍现代 C++ 的发展历程、特性概览及学习资源链接。
- 第一章 迈向现代C++ - 讲解编译环境搭建、Clang 编译器原理及与 GCC 的对比分析。
- 第二章 语言可用性的强化 - 深入解析
nullptr、常量定义等语言可用性增强特性。 - 附录1:Clang++开发环境搭建 - 详细指导 Ubuntu 系统下 Clang++ 的安装与验证步骤。
C++ 基础学习
- 引言 - 阐述学习笔记的定位、前置知识要求及参考学习资料。
- Phase 1 详细知识点目录 - 系统梳理引用、const 正确性等 C++ 核心概念的详细学习大纲。
- Phase 1 · 第一章 · 第1讲 - 深入讲解引用的本质、底层实现及其与指针的区别。
ROS2 学习指南
CLI 命令行工具
- 引言 - 提供 ROS2 学习的官方文档链接及 CLI 部分的更新状态说明。
- 配置环境 - 讲解如何导入 ROS2 环境设置文件及检查关键环境变量。
- 使用turtlesim、ros2和rqt - 通过 turtlesim 模拟器演示 ROS2 的核心概念与基础工具使用。
- 理解节点 - 阐释 ROS2 中节点的概念、功能及节点列表查看方法。
- 理解话题 - 解析话题作为节点间数据总线的通信机制,并介绍 rqt_graph 可视化工具。
- 了解服务 - 对比话题与服务,讲解基于调用-响应模型的通信方式。
- 理解参数 - 说明参数作为节点配置值的概念及其查看与设置方法。
- 理解行为 - 介绍用于长时间运行任务的行为通信类型,包含目标、反馈和结果三部分。
- 使用rqt_console查看日志 - 指导使用图形界面工具查看、过滤和保存 ROS2 日志消息。
- 启动节点 - 讲解如何使用 launch 文件同时启动和配置多个 ROS2 节点。
- 录制和回放数据 - (暂缓)介绍话题数据的录制与回放功能。
客户端库
- 引言 - 说明客户端库学习部分的更新进度及官方文档链接。
- 什么是ROS 2包? - 解释 ROS2 包的概念、构成要素及 CMake/Python 包的结构差异。
- 使用colcon 构建软件包 - 介绍 ROS2 构建工具 colcon 的安装、工作空间结构及基础使用。
- 创建一个工作空间 - 指导如何创建 ROS2 工作空间、配置环境及克隆示例仓库。
- 创建软件包 - (内容待补充)创建 ROS2 软件包的步骤。
STM32 单片机开发
- 【1-1】STM32简介 - 介绍 STM32 芯片、ARM 架构及 STM32F103C8T6 的片上资源与命名规则。
- 【2-1】软件安装 - 提供 Keil MDK、ST-LINK 驱动等开发工具的安装目录与教程链接。
- 【2-2】新建工程 - 对比 STM32 的三种开发方式,并指导基于标准库的新建工程流程。
- 【3-1】GPIO输出 - 总结 GPIO 输出配置的三个步骤,并列举常用输出控制函数。
- 【3-2】LED&流水灯&蜂鸣器 - 通过 LED 闪烁、流水灯和蜂鸣器实例演示 GPIO 输出控制。
- 【3-3】GPIO输入 - 讲解按键和传感器模块的硬件电路连接及 GPIO 输入模式选择。
- 【3-4】按键控制LED&光敏控制蜂鸣 - 实践按键控制 LED 与光敏传感器控制蜂鸣器,并演示模块化编程。
- 【4-1】OLED调试工具 - 介绍 OLED 屏幕作为调试工具的优势、硬件接口及驱动原理。
- 【4-2】OLED显示屏 - 提供完整的 OLED 显示程序实例,展示字符、字符串、数字等的显示方法。
- 【5-1】EXTI外部中断 - 系统讲解中断系统、外部中断配置步骤及中断函数编写建议。
- 【5-2】红外传感&旋转编码计次 - 通过对射式红外传感器和旋转编码器实例,演示外部中断的实际应用。
- 【6-0】定时器 - 概述 STM32 定时器的强大功能与四个学习部分的内容安排。
- 【6-1】TIM定时中断 - 详细介绍定时器的基本结构、类型及基本定时器的工作原理。
- 【6-2】定时中断&内外时钟源选择 - 完整演示定时器定时中断的初始化配置流程与程序编写。
- 【6-3】TIM输出比较 - 讲解输出比较模块的功能,重点在于 PWM 波形生成及驱动电机的应用。
- 【6-4】流水灯&舵机电机驱动 - 实践 PWM 驱动 LED 流水灯、舵机和直流电机,并提供完整驱动代码。
- 【6-5】TIM输入捕获 - 解释输入捕获的概念、与输出比较的区别,以及频率测量的原理。
- 【6-6】输入捕获测频率&PWMI测频率占空比 - 使用输入捕获功能测量方波频率与占空比,并介绍相关库函数。
- 【7-1】ADC数模转换器 - 阐述 ADC 的作用、逐次逼近型原理及 STM32 ADC 的结构特点。
- 【7-2】AD单通道&多通道 - 提供单通道和多通道 ADC 采集的程序实例及常用库函数说明。
- 【9-1】USART串口协议 - 对比各类通信接口特性,详细讲解串口通信协议的基础知识。
- 【9-2】USART串口外设 - 深入解析 STM32 USART 外设的结构框图、引脚分配与基本工作流程。
- 【9-3】串口发送&串口接收 - 讲解 USART 数据发送与接收的库函数使用,并强调通信共地的重要性。
- 【9-4】USART串口数据包 - 分析 HEX 与文本两种数据包格式的优缺点,并介绍数据包制定方法。
- 【9-5】串口收发HEX&文本数据包 - 提供完整的 HEX 数据包收发程序实例,实现模块化封装。
- 【9-6】FlyMcu & STLINK Utility - 指导使用串口下载工具 FlyMcu 和 ST-LINK Utility 进行程序烧录。
- 【番外】其他模块驱动学习 - 记录 NRF24L01 无线模块的引脚定义、工作原理及配置流程。
嵌入式 Linux 基础
- 前言 - 说明学习笔记的来源、内容范围及学习目标。
- 如何学习Linux开发 - 提供嵌入式 Linux 开发的完整学习路线图。
- i.MX系列芯片简介 - 介绍 ARM 体系架构、授权方式及 Cortex-A7 内核特性。
- Linux系统简介 - 讲述 Linux 的起源、主要构成及常见发行版本。
- 虚拟机安装Ubuntu系统 - 图文指导 VMware 安装 Ubuntu 系统及设置共享文件夹。
- Linux文件目录 - 解析 Linux 目录层次标准及各主要目录的用途。
- 用户管理与文件权限 - 讲解 Linux 用户、用户组概念及 passwd、shadow、group 三个核心文件。
- Linux命令行 - 介绍 Shell 的概念、命令格式及常用命令的使用技巧。
- 使用编辑器 - 对比 gedit 与 vi/vim 编辑器,并讲解 vim 的基础使用。
- 运行开发板与串口终端登录 - 指导开发板启动流程及通过串口终端登录系统。
- 查看开发板系统信息 - 讲解如何通过 /proc 文件系统查看 CPU、内核版本等系统信息。
- 命令行点灯和检测按键 - 演示通过 /sys 文件系统使用命令行控制 LED 和检测按键状态。
- 使用脚本测试硬件 - 介绍使用 fire-config 工具使能外设及运行测试脚本的方法。
- 认识系统镜像和固件 - 解释镜像文件格式,并说明野火 Debian 镜像的各个版本区别。
- 烧录Debian镜像至SD卡 - 详细指导使用 Etcher 工具将 Debian 镜像烧录至 SD 卡。
- fire-config工具简介 - 介绍野火开发板系统配置工具 fire-config 的使用方法。
- 项目资料下载-git - 讲解 Git 的概念、特点,并指导使用 Git 克隆项目资料。
- 挂载NFS网络文件系统 - 详细搭建 NFS 环境,实现主机与开发板间的文件共享。
- GCC和Hello World - 以 Hello World 为例,剖析 GCC 编译工具链的组成与编译流程。
- ARM-GCC和开发板的HelloWorld - 演示交叉编译过程,解决在 ARM 开发板上运行 x86 程序的架构不兼容问题。
- Linux系统下的Hello World - 深度剖析 Linux 系统下 Hello World 程序的执行流程与运行机制。
- Makefile简介 - 讲解 Makefile 的核心作用:管理项目文件依赖关系,自动化编译。
- 使用Makefile控制编译 - 通过实例演示 Makefile 的基本语法、目标与依赖的编写规则。
- 文件操作与系统调用 - 对比 C 标准库与系统调用两种文件操作方式,揭示 Linux“一切皆文件”的思想。
