目录
嵌入式是一个相对笼统的概念,包含51、STM32、ARM等等。而嵌入式工程师从工作方向上大体划分两类:嵌入式单片机开发、嵌入式Linux开发,在各自方向有有进一步的细分。在这里根据小编个人学习经验,总结关于嵌入式单片机方向的学习内容,供广大嵌入式爱好者参考。
作为一名工程师,对嵌入式工程师本人的能力要求是多方面的,现在将嵌入式工程师的技能大体分为三类:
- 编程开发:C语言、数据结构、算法、性能优化、编译链接相关的能力
- 系统开发:硬件原理、MCU外设驱动、通信开发、操作系统相关技术开发
- 软技能:技术之外的工作能力
以下详细讲解不同学习阶段需要掌握的能力以及一些参考建议。
一、编程开发
嵌入式开发过程中需要至少一门编程语言用于应用开发,常用的主要是C或C++。
- 编程语法:现阶段学习C语言函数实现与调用,编程调试。
- 数据结构:栈、队列、链表的实现
- 基础算法:排序、查找、滤波算法、加密、压缩、差分
- 代码规范:文件结构、注释规范、命名规范
- 性能优化:
- 软件架构:状态机模型、设计模式、系统设计
- 代码可移植:平台数据类型,对齐,大小端,多用库函数、C中嵌入汇编
- 编译链接:gcc、makefile、加载地址、数据段/代码段
- 辅助工具:Pyhton、C++、Matlab simulink、QT
二、系统开发
2.1 嵌入式知识
- 硬件基础:仅需要读懂原理图以及PCB。
- 驱动开发:GPIO、EXTI、Usart、Spi、IIC、TIM、ADC、WDG等常用外设驱动。
- 硬件应用:低功耗开发、OTA升级
- 硬件原理:嵌入式计算机原理、硬件内核架构、常用外设硬件原理,主要是对嵌入式进行系统学习。
2.2 操作系统OS
- RT-thread
- FreeRTOS
- Linux
2.3 网络编程
- 常用协议:TCP/UDP、HTTP、MQTT、COPA、telnet
- 其他协议:Ymodem、Modbus
- 数据传输结构:cJSON、Protobuf
2.4 无线通信
- AT指令:常用无线通信模组基本都是使用AT指令通信开发的
- 无线通信:4G、WiFi、LoRa、NB、BLE、ZigBee
2.5 中间件与新技术
嵌入式开发过程中,并不是说有功能都需要自己独立实现,可以借鉴移植其他人已经做好的中间件,以提高开发效率。以下将中间件分为以下几种类型
- 通信组件
- 调试组件
- 显示组件
- 存储组件
- 安全组件
2.6 核心能力构建
嵌入式开发过程中,以描述的都是基础技术能力,适用于各个行业于领域,但是作为一名嵌入式工程师,在职业道路上需要构建自己的核心竞争力,即掌握至少一项的专业特长作为自己的独门绝技。以下举几个示例:
- 专项技术:专向各种通信协议栈开发,如蓝牙协议栈、TCPIP协议栈等;信息加密加密技术;存储技术等。
- 行业规范:在汽车电子、航空行业等特殊行业存在各自的行业标准,在这类行业深耕也可以构建自己的职业技术壁垒。
三、 软技能
3.1 管理能力
3.1.1 技术管理
3.1.1.1 研发体系构建
构建高效而标准的的研发体系:
(1)工程研发:通过脚本、配置等进行定制化开发(定制化配置)
(2)产品研发:基于平台,快速完成产品研发(基础软件集成)
(3)平台研发:基础平台、通用模块研发(基础软件开发)
3.1.1.2 软件结构模型
搭建解耦、可复用、易维护的软件结构,实现代码结构的分层分块与分布:
(1)严格层次化模型:回调函数注册机制、消息调用机制、虚函数机制、信号和槽机制、虚拟化,单向依赖性
(2)元件化模型:可配置化工具开发,高复用低代码开发模式
(3)分布式模型:基于通信总线的分布式系统开发,CAN、以太网、LIN,复杂系统与边缘化计算的开发模式,难点在于整体程序的拆分后的协调与同步
(4)强实时执行框架-定时可抢占模式:定时泵、超时管理、保活机制、消息队列、运行实体对象
3.1.1.3 质量体系
- 代码审查机制
- 系统监测策略:检测桩(时序检测、内存检测、通信安全)、日志缓存、状态打印
- 知识体系构建
3.1.2 团队管理
(1)团队建设:核心团队搭建、组织架构规划
(2)目标系统:团队目标以及使命愿景
(3)绩效管理:
(4)业务系统:团队各项业务
(5)文化系统:价值观、团队智慧
(6)培养体系:
3.2 行业认识
(1)所属行业的供应链上都有哪些厂商,他们是如何构建自己核心竞争力与商业模式的。
(2)行业形式:行业近况、行业趋势了解。
3.3 个人品牌
工作之余,多去了解和构建个人品牌,让别人尽可能的了解你。