茅胜荣
🛈 个人信息
- 男,1992 年出生
- 求职意向:高级嵌入式软件工程师
- 工作经验:6 年
- 现居地:江苏省苏州市吴中区
🎓️ 教育经历
- 硕士,苏州大学,电子科学与技术专业,2015.9~2018.7,GPA(3.9/4.0)
- 学士,苏州大学,电子信息工程专业,2011.9~2015.7,GPA(3.8/4.0)
💼 工作经历
-
乐鑫信息科技,芯片支持部门,嵌入式驱动工程师,2018.7 月至今
- 芯片 bring up
- SOC 外设驱动框架
🚵 卓越贡献
-
设计实现通用序列收发器驱动框架
event-driven, OOP, IR, encoder
- 工厂模式分配 RMT 通道,发送和接收的接口隔离
- 事务模型,每个发送通道拥有一个事务队列,不同事务按序执行
- 应用适配器模式定义 RMT encoder,将应用层数据表示转译为 RMT 硬件符号,定义一套原生编码器接口
- 组合设计模式,可自由组合原生编码器,为特定应用创建新的编码器
- 传输层抽象,支持 DMA 与非 DMA 传输,接口层统一
- RMT 驱动详见 GitHub 项目地址
-
设计实现嵌入式以太网驱动框架
mediator pattern, OOP, Ethernet
- 中介器设计模式,分隔用户、MAC 层和 PHY 层
- 多态设计,支持 ESP32 内部 MAC 控制器以及其他 SPI 接口的以太网模块
- 驱动分层设计,LL + HAL + driver,降低驱动在不同芯片平台上移植的难度
- 详见 GitHub 项目地址
-
设计实现嵌入式LCD驱动框架
RGB/YUV, I80, SPI, I2C, MIPI DSI, OOP, LVGL
- 抽象出 panel_io 接口,统一 SPI/I2C/I80/MIPI_DBI 对 LCD 模组发送命令与显存数据的操作
- 抽象出 panel 对象,统一应用层对显存设备的操作,支持 RGB/MIPI_DPI 接口的 LCD 和 panel_io 抽象接口的 LCD 设备
- IO 接口与显存操作分离,LCD 控制器驱动可复用程度最大化
- 适配 LVGL 库,对接异步接口
- 详见 GitHub 项目地址
-
BSP 软件包
BSP, Interface Segregation Principle
- 定义并实现智能灯带 led-strip 设备的操作接口
- 本质上一种 RMT 编码器实现,同时也预留了 SPI 外设的实现层
- 定义并实现直流有刷电机 bdc-motor 设备的操作接口
- 本质上 MCPWM 外设驱动的再封装,同时也预留了其他外设的实现层
- 模拟 1-Wire 总线驱动和设备驱动 onewire_bus
- 利用 RMT 硬件的独特性,实现全硬件化的单总线协议(非 GPIO bit-banging)
- 使用迭代器模式实现总线上设备的扫描功能
- 定义并实现智能灯带 led-strip 设备的操作接口
🛠 技能清单
- ★★★ C 语言面向对象建模与实现
- ★★☆ Python、Bash
- ★★☆ 计算机网络
🏆️ 职业认证
- 职称: 江苏省中级专业技术资格
- 网络: CCNA(920分), 全国计算机等级4级(网络工程师)
- 语言: CET-6(511分)
- 编程: 江苏省计算机等级3级(软件)
- 竞赛: 全国大学生电子设计竞赛二等奖
⛵️ 业余爱好
- 媒体: 用博客、视频记录工作与生活
- 创客: 接触最新最好玩的创客玩具(树莓派, OpenWRT, XMOS, PSoC)