Skip to content

📚 嵌入式全栈修炼手册

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 开发教程,从外设原理到驱动编写全覆盖。

三、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++ 编译环境的步骤指南。
  • 算法入门

五、ROS2 机器人操作系统

ROS2 Humble 版本从入门命令到功能包开发的系统性教程。

  • CLI 工具篇
    • 引言:ROS2 CLI 部分学习笔记的导航与说明。
    • 配置环境:讲解 ROS2 环境变量的配置与检查方法。
    • 使用 turtlesim、ros2 和 rqt:通过 turtlesim 模拟器初步体验 ROS2 节点与话题。
    • 理解节点:解析 ROS2 节点的概念及命令行管理工具的使用。
    • 理解话题:利用 rqt_graph 可视化理解 ROS2 话题的通信机制。
    • 了解服务:对比服务与话题的区别,演示服务的调用与响应模式。
    • 理解参数:介绍节点参数的概念及命令行操作方法。
    • 理解行为:解析 Action 通信机制及其在长时间任务中的应用。
    • 使用 rqt_console 查看日志:利用 rqt_console 工具查看与管理日志消息。
    • 启动节点:介绍 Launch 文件的作用及运行多节点系统的方法。
  • 客户端库篇
    • 引言:ROS2 客户端部分学习笔记的导航与说明。
    • [什么是 ROS 2 包?](./ROS2/2.客户端/1.什么是ROS 2包?.md):定义 ROS2 包的概念及其最小组成结构。
    • [使用 colcon 构建软件包](./ROS2/2.客户端/1.使用colcon 构建软件包.md):介绍 colcon 构建工具的安装与工作空间创建。
    • 创建一个工作空间:演示 ROS2 工作空间的创建与 Overlay 叠加层概念。
    • 创建软件包:讲解使用 ros2 pkg create 命令创建功能包。

六、Linux 系统裁剪与构建

深入 Linux 系统底层,掌握镜像裁剪与定制技能。

七、大车项目实战

基于 RTK GPS 的室外自主导航机器人综合项目开发记录。

  • Nav2 无图导航仿真搭建:在 ROS2 仿真中搭建基于 EKF 定位与 Nav2 的导航系统。
  • 融入 RTK-GPS 插件进行仿真:将 GPS 数据融合进定位链路,实现 map 坐标系与地理坐标对齐。
  • [功能包整合与 GitHub 管理](./大车-CarPlanning/4.功能包整合与 GitHub 管理.md):将散落的配置文件整合为标准 ROS2 功能包并进行版本管理。
  • 附录-运行中遇到的报错记录:记录 WSL2 环境下 ROS2 通讯错误的排查与解决方案。
最近更新