开启嵌入式项目复盘与分享之旅
1月31日,从公司离职之后,心情一直处于阴霾状态。直到今日,心态逐步平静下来,难得有时间富余,我将自己独立做项目以来,一点心得进行复盘并分享出来。仅以此敦促监督自己,力争一周更新两篇文章。
简单回顾
我2018年在陕西一家初创公司做新能源充电桩,开启嵌入式与新能源开发之旅。至今已有六年有余,期间独立完成并量产了一些产品,也有一些0到1的经验。
- 独立做的第一款产品,交流7KW充电桩,使用stm32f103系列单片机,裸跑;涉及GPIO、AD、UATR、IIC、SPI、PWM、Eth、4Gmodule、RFID、组态屏等诸多模块;具有电源监控、电力计量、脉冲信号通信、人机交互、日志存储、物联网等诸多功能。
- 最复杂的硬件模块,直流绝缘监测不平衡电桥电路。
- 最快的迭代,GD32替换STM32。
- 最惨的现场调试,彭州客运站切换平台,临时任务,事先未见过源码,38℃太阳直射与暴雨交夹。
- 最难的沟通,与东风客户交涉人为损坏进水事宜。
- 最危险的测试,1000V直流短路测试,一次烧两组继电器。
- 最大的一次事故,成都大学公交场站更新程序后,参数设置不对,无法正常使用。
- 最完整的设计,OCPP2.0桩云交互协议。
- 最复杂的设计,xxx柔性矩阵特殊分配策略直流充电桩项目。
入门准备
开源工具资料
基于stm32项目的开发
基础篇
- 环境搭建
- 如何看懂Datasheet与Demo
- 如何快速看懂并移植修改源码
- Debug调试
- Printf打印信息
- 驱动开发
- 应用开发
- 通信协议
- 业务逻辑
- 使用GD32等国产替代、进行降本
提升篇
-对象与方法
-驱动表法
- state
- 时间片轮序
- ota
- rtos
- lwip与iot
拓展篇
- 编写高质量软件文档
- 系统框架设计
- 软件架构设计思路
- 应用模块设计
- 交互协议与流程设计
- C指针
- 数据结构与算法
- 工具库封装
- MiddleWare抽象
- 复杂问题排查
- 优化迭代
基于Linux项目开发
基础篇
- 环境搭建
- Linux快速入门
- shell脚本
- 交叉编译工具链
- SD卡、U盘等镜像烧写
应用篇
- Linux C应用编程
- 点亮LED灯
- hello world
- gcc
- makefile
- file_IO
- 多线程
- 多进程
- TCP/IP
- socket
- sqlite
驱动篇
- Linux 驱动开发
- LED驱动
- 串口驱动
- 中断
- 时钟控制
- 驱动模块
- 字符设备驱动
- 块设备驱动
- 网络设备驱动
- 添加驱动模块到Kernel
- 设备树
系统篇
- Linux文件目录与工程分析
- buildroot工具
- 构建与编译uboot、kernel、fs
- 如何阅读Linux源码