嵌入式软件工程师技能树
以下是一份细致的嵌入式软件工程师技能树/技能清单,涵盖从基础到进阶的核心能力,帮助你构建系统化的学习路径:
1. 编程语言与基础
- C语言(核心)
- 指针与内存管理(堆、栈、静态区)
- 结构体、联合体、位域操作
- 多文件编程与模块化设计
- 代码优化(时间/空间效率)
- C++(可选但重要)
- 面向对象编程(封装、继承、多态)
- RAII、智能指针(资源管理)
- 模板与泛型编程
- 汇编语言(特定架构)
- ARM Cortex-M/A 汇编基础
- 中断处理与寄存器操作
- 脚本语言(辅助工具)
- Python(自动化测试、脚本开发)
- Shell/Bash(Linux环境操作)
2. 硬件基础
- 数字电路与模拟电路
- 逻辑门、时序电路(触发器、锁存器)
- ADC/DAC原理与信号处理
- 电平标准(TTL、CMOS、RS232)
- 微控制器(MCU)架构
- ARM Cortex-M/A系列(STM32、NXP i.MX等)
- RISC-V架构基础
- 中断控制器(NVIC)、时钟树、电源管理
- 外设接口
- GPIO、PWM、定时器、看门狗
- DMA原理与应用场景
- 硬件调试工具
- 示波器、逻辑分析仪、万用表
- 读懂原理图与PCB布局
3. 操作系统与系统设计
- 实时操作系统(RTOS)
- FreeRTOS、uC/OS、Zephyr
- 任务调度、优先级反转、死锁处理
- 信号量、互斥锁、消息队列
- 嵌入式Linux
- 内核裁剪与移植(设备树DTS)
- 驱动开发(字符设备、Platform驱动)
- 用户空间与内核空间交互(sysfs、ioctl)
- 构建系统(Yocto、Buildroot)
- 系统设计能力
- 低功耗设计(休眠模式、时钟门控)
- 实时性优化(中断延迟、任务响应时间)
- 启动流程(Bootloader、Secure Boot)
4. 通信协议
- 基础协议
- UART、SPI、I2C(时序、主从模式)
- 工业与车载协议
- CAN/CAN FD、LIN、Modbus
- Ethernet(MAC/IP协议栈、LWIP)
- 无线协议
- BLE、ZigBee、LoRa
- WiFi(ESP32)、4G/5G模块
- 高级协议
- USB(HID、CDC、Mass Storage)
- MQTT、CoAP(物联网协议)
5. 驱动开发与中间件
- 外设驱动
- 传感器驱动(加速度计、温湿度)
- 显示屏驱动(LCD、OLED)
- 存储设备(Flash、SD卡、文件系统)
- 中间件与框架
- 嵌入式GUI(LVGL、Qt for Embedded)
- 协议栈(TCP/IP、USB协议栈)
- 安全机制(加密算法、Secure Boot)
6. 开发工具链
- 编译与调试
- GCC/Clang交叉编译工具链
- GDB + OpenOCD/J-Link调试
- 静态代码分析(Cppcheck、Coverity)
- 仿真与测试
- QEMU(虚拟硬件环境)
- 单元测试框架(Unity、CppUTest)
- CI/CD(Jenkins、GitLab CI)
- 版本控制
- Git高级用法(分支策略、子模块)
7. 行业特定技术
- 汽车电子
- AUTOSAR架构(Classic/Adaptive)
- 功能安全(ISO 26262、ASIL等级)
- 物联网(IoT)
- 边缘计算、OTA升级
- 云平台对接(AWS IoT、阿里云)
- 工业控制
- PLC通信、工业以太网(EtherCAT)
- 实时性保障(硬实时系统)
8. 软技能与工程实践
- 文档与协作
- 撰写技术文档(需求/设计/测试)
- 使用Jira、Confluence管理项目
- 调试与问题定位
- 崩溃分析(Core Dump、Backtrace)
- 内存泄漏检测(Valgrind)
- 代码质量
- MISRA C/C++规范
- 设计模式(状态机、观察者模式)
学习路径建议
- 初级阶段:C语言 + MCU(如STM32) + 基础外设驱动。
- 中级阶段:RTOS + 通信协议 + 硬件调试。
- 高级阶段:嵌入式Linux + 系统设计 + 行业技术(如AUTOSAR)。
- 持续提升:参与开源项目(如Zephyr RTOS)、阅读芯片手册与内核源码。
通过这份清单,可以按需制定学习计划,建议结合项目实践(如DIY智能家居设备、机器人控制器)巩固技能。保持对行业趋势(RISC-V、AIoT)的关注,定期复盘技术盲点。