Skip to content

gccnb/Embedded-Career-Roadmap

Repository files navigation

嵌入式软件工程师学习与项目实践资料库

C code check Release License

本仓库英文名为 Embedded-Career-Roadmap,中文名为《嵌入式软件工程师学习与项目实践资料库》。

面向通信工程、电子信息、自动化等专业学生的一站式嵌入式软件转岗资料库:从单片机、嵌入式 C、RS485/Modbus、FreeRTOS,到 Qt 上位机、项目实战和面试表达。

它不是一本只讲概念的笔记,也不是一个只堆代码的仓库。它希望帮助通信工程、电子信息、自动化等专业的同学,把课堂里的 C 语言、单片机、通信原理、控制基础,逐步连接到嵌入式软件工程师岗位需要的真实工程能力。

仓库亮点

  • 路线清楚:按“单片机基础 -> 嵌入式 C -> RS485/Modbus -> FreeRTOS -> Linux/Qt -> 项目实战 -> 求职面试”推进。
  • 贴近求职:每篇文档尽量连接工程用途、调试方法、面试问法、简历表达和小练习。
  • 项目导向:以 RS485/Modbus RTU、FreeRTOS 多任务通信、Qt 串口调试上位机作为主要实践线。
  • 代码配套:提供不依赖具体芯片库的 C 语言教学示例,并补充 FreeRTOS RS485 架构模拟和 Qt Modbus 调试上位机最小 Demo,方便理解协议接收、CRC16、任务拆分、Modbus 03/06 功能码和上位机日志。
  • 可复现:围绕公开学习场景设计文档、代码、测试用例和调试日志,方便后续持续扩展。

快速入口

想先看什么 推荐入口
全站文档索引 DOCS_INDEX.md
学习路线 通信工程硕士转嵌入式软件工程师学习路线
RS485/Modbus 核心主线 RS485/Modbus 总览
C 语言协议示例 RS485/Modbus 示例代码
FreeRTOS 项目化拆分 FreeRTOS RS485 架构示例
Qt 上位机 Demo Qt Modbus 调试上位机最小 Demo
项目测试材料 项目测试报告模板
面试和简历 嵌入式软件工程师能力模型
后续路线图 ROADMAP.md
贡献和同步说明 CONTRIBUTING.md / GITEE_SYNC.md

学习路线图

flowchart LR
    A["00 学习路线"] --> B["01 单片机基础"]
    B --> C["02 嵌入式 C"]
    C --> D["03 USART/RS485"]
    D --> E["自定义协议"]
    E --> F["Modbus RTU"]
    F --> G["04 FreeRTOS"]
    G --> H["05 嵌入式 C++"]
    H --> I["06 嵌入式 Linux"]
    I --> J["07 Qt 上位机"]
    J --> K["08 项目实战"]
    K --> L["09 求职面试"]
Loading

这张图不是要求你一次学完所有内容,而是提醒你:每个知识点最终都要落到项目、调试和面试表达上。第一版建议先按“学习路线 -> 嵌入式 C -> RS485/Modbus -> FreeRTOS -> 求职面试”的顺序读。

当前推荐主项目

第一版建议重点展示 Modbus RTU 设备调试项目。它能把 RS485、Modbus RTU、CRC16、03/06 功能码、模拟寄存器、Qt 上位机联调、测试用例和调试日志串成一个完整闭环。

如果想看上位机如何组织代码,可以继续阅读 Qt Modbus 调试上位机最小 Demo。这个 Demo 只做教学用途,重点展示串口收发、03/06 组帧、CRC 校验和 TX/RX 日志,不绑定任何真实设备协议。

如果想准备面试展示材料,可以继续整理 项目测试报告模板RS485/Modbus 调试日志样例。这两篇用于说明测试用例、异常帧、超时、方向控制和日志复盘,不包含真实公司或客户资料。

更多项目可从 项目实战索引 开始阅读。

当前成果与边界

本仓库当前已经从“学习路线文档”扩展为“文档 + 示例代码 + CI 检查 + 项目展示材料”的开源资料库。为了避免读者误解,下面把完成内容和边界说清楚。

已完成内容

类别 当前状态 入口
学习路线 已完成第一版 00_学习路线
单片机基础 已完成基础版,包含 GPIO、定时器、USART、ADC、PWM 等 01_单片机基础
嵌入式 C 已完成基础版,重点覆盖关键字、缓冲区、链表 02_嵌入式C语言
RS485/Modbus 已完成核心精修版和 C 示例 03_RS485_Modbus
FreeRTOS 已完成基础版和 RS485 架构模拟代码 04_FreeRTOS
嵌入式 C++ 已完成基础版,补充协议类、设备类、状态机类 05_嵌入式C++
嵌入式 Linux 已完成基础版和串口、TCP、UDP 示例 06_嵌入式Linux
Qt 上位机 已完成基础版、项目骨架和最小 Demo,Demo 支持模拟 RX、解析表格和 CSV 日志导出 07_Qt上位机
项目实战 已完成项目闭环、测试报告模板和调试日志样例 08_项目实战
求职面试 已完成能力模型、简历模板、复盘模板和高频问答 09_求职面试

可验证代码

目录 内容 验证方式
03_RS485_Modbus/codes 自定义协议接收、CRC16、Modbus RTU 从机模拟 GitHub Actions 使用 make 编译
04_FreeRTOS/codes FreeRTOS 风格 RS485 任务拆分模拟 GitHub Actions 使用 make 编译
06_嵌入式Linux/codes Linux 串口、TCP、UDP 示例 GitHub Actions 使用 make 编译
07_Qt上位机/qt_modbus_debugger_demo Qt Modbus 调试上位机最小 Demo,包含模拟 RX、解析表格、TX/RX 日志和 CSV 导出 需要本机安装 Qt 和 C++ 构建环境后自行编译

明确边界

  • 本仓库是学习与求职作品集资料库,不是工业现场交付项目。
  • 示例代码用于理解通信链路、任务拆分和调试方法,不保证可直接用于量产设备。
  • 所有寄存器地址、状态字、错误码、接线方式均为教学示例,不对应真实设备。
  • 涉及控制卡、驱动器、传感器、端子、A/B 线、供电、GND、终端电阻时,必须以对应数据手册、原理图、端子定义和实测结果为准。
  • 仓库不包含真实公司、客户、产线、设备内部资料,也不建议把学习项目包装成公司项目。

1. 这个资料库是什么

这是一个面向初学者的嵌入式软件学习路线和项目实践资料库。内容会围绕一条主线展开:

单片机基础 -> 嵌入式 C -> USART/RS485 -> 自定义协议 -> Modbus RTU -> FreeRTOS -> C++ -> Linux -> Qt 上位机 -> 项目实战 -> 求职面试

每个知识点都尽量回答几个问题:

  • 它是什么;
  • 项目里为什么需要它;
  • 代码一般怎么写;
  • 出问题时怎么调;
  • 面试可能怎么问;
  • 简历里可以怎么表达;
  • 学完后能做什么练习。

2. 适合谁

本资料库适合:

  • 通信工程、电子信息、自动化、测控、机械电子等专业学生;
  • 有 C 语言基础,但不知道怎么进入嵌入式项目的同学;
  • 学过单片机,但项目经历比较薄弱的同学;
  • 想用 RS485、Modbus、FreeRTOS、Qt 上位机做简历项目的同学;
  • 正在准备嵌入式软件工程师、单片机工程师、上位机开发、工业控制软件岗位的同学。

如果你已经能独立做复杂驱动、Linux BSP 或工业现场调试,本仓库可能偏基础。但你仍然可以把它当作面试复盘和教学提纲。

3. 为什么做这个资料库

很多同学的问题不是“不努力”,而是不知道知识如何连接到岗位:

  • 学了 C 语言,却不知道 staticvolatile 在中断和驱动里怎么用;
  • 学了串口,却不知道 RS485 半双工为什么需要方向控制;
  • 会发几个字节,却不知道 Modbus RTU 帧格式、CRC 和超时怎么处理;
  • 听过 FreeRTOS,却不知道任务、队列、互斥量如何服务一个通信项目;
  • 做过课程设计,却不知道如何把项目写成简历上的工程经历。

这个资料库想把这些断点接起来,让学习路线更像一条可以走完的工程路径。

4. 总体学习路线

建议按以下顺序学习:

  1. 单片机基础:GPIO、定时器、USART、中断、ADC、PWM。
  2. 嵌入式 C:指针、结构体、位运算、缓冲区、staticexternconstvolatile
  3. USART/RS485:串口参数、半双工通信、方向控制、收发时序。
  4. 自定义协议:帧头、长度、命令字、数据区、校验、超时和重发。
  5. Modbus RTU:功能码、寄存器、帧格式、CRC16、异常响应。
  6. FreeRTOS:任务拆分、队列通信、定时器、互斥和实时性。
  7. 嵌入式 C++:类、封装、协议类、设备类、状态机类、资源管理。
  8. 嵌入式 Linux:进程、线程、串口、Socket、设备文件和交叉编译。
  9. Qt 上位机:串口工具、协议调试、数据可视化、日志和参数配置。
  10. 项目实战:把下位机、通信协议、上位机和调试文档串起来。
  11. 求职面试:能力模型、项目表达、常见追问和简历优化。

5. 推荐阅读顺序

第一版建议先按下面 5 个模块读,不必一开始就追求覆盖所有目录。这个顺序的目的,是先建立方向,再补 C 语言工程基础,然后进入 RS485/Modbus 通信主线,最后用 FreeRTOS 和求职表达把项目串起来。

5.1 00_学习路线

为什么先学它:先知道嵌入式软件岗位需要什么,再决定后面的学习重点。否则容易陷入“今天看一点 C,明天看一点 Linux,后天看一点 Qt”的碎片化状态。

  • 通信工程硕士转嵌入式软件工程师学习路线.md:学完能解决“我该按什么路线从专业背景过渡到嵌入式软件岗位”的问题。

5.2 02_嵌入式C语言

为什么第二步学它:RS485、Modbus、FreeRTOS 最后都会落到 C 语言代码上。先把变量作用域、缓冲区、中断共享变量和数据结构讲清楚,后面看协议代码才不会只是在抄。

  • 00_嵌入式C语言总览.md:学完能解决“嵌入式 C 和课堂 C 语言到底差在哪里”的问题。
  • 04_static_extern_const_volatile.md:学完能解决“中断、模块封装和共享变量里这些关键字怎么用”的问题。
  • 07_链表和缓冲区.md:学完能解决“串口字节流如何先缓存、再解析”的问题。

5.3 03_RS485_Modbus

为什么第三步学它:这是第一版资料库的核心项目主线。RS485/Modbus 很适合做求职项目,因为它能同时体现串口、中断、协议、CRC、调试和上位机联调能力。

  • 00_RS485_Modbus总览.md:学完能解决“UART、RS232、RS485、Modbus RTU 分别是什么”的问题。
  • 02_RS485半双工和方向控制.md:学完能解决“为什么 RS485 发送前后要控制 DE/RE 或 RS485_EN”的问题。
  • 03_串口中断接收.md:学完能解决“如何用中断接收自定义协议帧,并为 Modbus RTU 接收做准备”的问题。
  • 04_自定义协议设计.md:学完能解决“如何设计帧头、长度、命令字、数据区、校验和超时”的问题。
  • 05_机器状态解析.md:学完能解决“如何把通信帧里的状态字转换成运行、报警、完成等工程状态”的问题。
  • 06_Modbus_RTU帧格式.md:学完能解决“如何逐字节看懂 03/06 功能码请求和响应”的问题。
  • 07_CRC16校验.md:学完能解决“如何计算和校验 Modbus RTU 帧尾 CRC”的问题。

建议同步阅读 03_RS485_Modbus/codes 目录里的示例代码,把文档里的概念和 C 代码对上。

5.4 04_FreeRTOS

为什么第四步学它:当采集、通信、控制、日志都放进一个 while (1) 时,代码会越来越乱。FreeRTOS 的价值是帮助你把项目拆成任务,而不是只在简历上多写一个关键词。

  • 01_为什么需要RTOS.md:学完能解决“什么时候裸机轮询不够用,为什么要做任务拆分”的问题。

建议同步阅读 04_FreeRTOS/codes 目录里的示例代码,把“中断、信号量、队列、任务拆分、日志任务”连成一条可运行的学习链路。

5.5 09_求职面试

为什么最后学它:技术点学完后,需要转成面试能讲清楚、简历能写明白的项目表达。求职材料不是夸大项目,而是把真实做过的模块、调试过程和验证结果讲具体。

  • 01_嵌入式软件工程师能力模型.md:学完能解决“嵌入式软件岗位到底看哪些能力”的问题。
  • 02_简历项目描述模板.md:学完能解决“如何把 RS485/Modbus/FreeRTOS/Qt 上位机项目写成简历经历”的问题。
  • 07_项目复盘模板.md:学完能解决“如何把项目背景、方案、调试问题、日志证据和面试讲法整理成复盘材料”的问题。

5.6 初学者 7 天阅读计划

天数 阅读内容 当天目标
第 1 天 00_学习路线 明确岗位能力主线,写下自己的差距清单
第 2 天 02_嵌入式C语言/00_嵌入式C语言总览.md04_static_extern_const_volatile.md 理解中断共享变量、模块作用域和嵌入式 C 重点
第 3 天 02_嵌入式C语言/07_链表和缓冲区.md03_RS485_Modbus/03_串口中断接收.md 能解释 rxBuffer/rxIndex/rxFlag 和完整帧处理
第 4 天 03_RS485_Modbus/00_RS485_Modbus总览.md02_RS485半双工和方向控制.md 能区分 UART、RS485、Modbus,并讲清楚方向控制
第 5 天 03_RS485_Modbus/06_Modbus_RTU帧格式.md07_CRC16校验.md 能手动拆解一帧 Modbus RTU 报文并说明 CRC
第 6 天 04_FreeRTOS/01_为什么需要RTOS.md 能把采集、通信、控制拆成任务思路
第 7 天 09_求职面试 两篇 写出一段真实、可追问的项目描述

5.7 面试前 3 天复习计划

天数 复习内容 输出结果
第 1 天 复习 03_RS485_Modbus 五篇核心文档 准备 5 个高频问题:RS485 是否协议、半双工方向控制、串口中断、Modbus 帧格式、CRC
第 2 天 复习 02_嵌入式C语言04_FreeRTOS 准备 3 个代码追问:volatile、缓冲区、任务拆分
第 3 天 复习 09_求职面试,重写项目描述 准备 1 分钟项目介绍、3 分钟项目介绍、1 个调试问题复盘

复习时不要背整段话。更有效的方法是:先画通信链路,再手写一帧报文,最后用自己的项目经历回答“你做了什么、怎么验证、出过什么问题”。

6. 仓库目录说明

00_学习路线        从专业背景到岗位能力的学习规划
01_单片机基础      GPIO、定时器、USART、中断等基础模块
02_嵌入式C语言     嵌入式 C 语法、内存、缓冲区和工程写法
03_RS485_Modbus   RS485、串口接收、自定义协议、状态解析、Modbus RTU 和 CRC
04_FreeRTOS       RTOS 基础、任务拆分、队列、同步和 RS485 架构示例
05_嵌入式C++       用 C++ 做协议类、设备类、状态机类和模块封装
06_嵌入式Linux     Linux 应用开发、串口、网络和交叉编译
07_Qt上位机        Qt 串口调试工具、协议界面、数据展示和最小 Demo
08_项目实战        面向简历的综合项目设计、测试报告和调试复盘
09_求职面试        能力模型、简历模板、面试问答和表达训练

7. 如何使用

建议不要从头到尾只读文档。更好的方式是:

  1. 先读 00_学习路线,明确自己当前处在哪一阶段。
  2. 每学一个知识点,都写一个最小代码实验。
  3. 学 RS485/Modbus 时,准备串口调试助手、USB-RS485 模块或仿真环境。
  4. 做项目时同步记录:需求、协议、调试问题、解决过程和测试结果。
  5. 每完成一个模块,就把它改写成简历中的一句项目描述。

涉及硬件接线、端子定义、控制卡、驱动器或传感器时,请务必以数据手册、端子定义、原理图或实测结果为准。示例只用于学习,不能替代真实设备资料。

8. 资料特点

  • 面向初学者:尽量用课堂能听懂的方式讲工程问题。
  • 面向求职:每篇文档都尽量连接面试和简历表达。
  • 面向项目:重点关注串口、RS485、Modbus、FreeRTOS、Qt 上位机等可落地内容。
  • 面向调试:不仅讲怎么写,还讲怎么查问题。
  • 面向真实工程意识:强调数据手册、端子定义、原理图、实测验证和日志记录。

9. 后续计划

后续会继续完善:

  • 单片机基础模块:ADC 滤波、定时采样、PWM 联动控制;
  • 自定义协议、机器状态解析与状态机解析;
  • FreeRTOS 队列、信号量、互斥量和任务优先级的更多项目化案例;
  • 嵌入式 C++ 协议类、设备类和状态机类的项目化示例;
  • Linux 串口和 Socket 通信示例的项目化扩展;
  • Qt 上位机项目:继续完善界面原型、响应解析、日志导出和可运行 Demo;
  • 完整项目实战:下位机通信控制器 + Qt 上位机的代码级实现和测试材料;
  • 面试题、简历案例和项目复盘模板的案例化扩展。

本仓库会持续保持一个原则:不夸大、不编造、不泄露真实公司资料,把能公开、能学习、能复现的工程能力讲扎实。

About

嵌入式软件工程师学习路线与项目实践资料库:单片机、嵌入式C、RS485/Modbus、FreeRTOS、Linux、Qt上位机、项目实战与面试求职

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors