目录
简述
负责5块单板的BSP开发,3个重要特性(安全启动、USB Device、NFC)的开发,其他23个特性的开发。
I2C Slave驱动
- 一国产Cortex-M4 MCU I2C Slave驱动开发,承载虚拟EEPROM和虚拟外扩GPIO的功能。(2020.12)
引入国产新Cortex-M4 MCU和新版本实时操作系统
- 新MCU的I2C Master驱动、定时器驱动、片内Flash驱动开发。(2020.11)
- 新实时操作系统的CPU使用率功能优化、RAM使用率封装。(2021.01)
修改实时操作系统,把CPU使用率的时间来源从Cortex-M4 SysTick定时器切换为MCU通用定时器,线程耗时统计不受Tick负载影响,CPU使用率数据更精确。 - 基于mbedTLS RSA和MCU片内Flash OTP区域实现M4 MCU安全启动流程。(2021.02)
- USB Device驱动抽离通用的状态机实现,快速适配不同品牌MCU的差异。对同一USB设计IP核效果极佳。(2021.09)
Cortex-A7 MPU相关
- 新Cortex-A7单板U-Boot、Linux设备树配置。
- MPU内置ADC采样耗时分析。(2021.12)
- U-Boot更换开机显示的彩色Logo图。
Linux内核从4.19.90升级至5.10
- 利用Linux内核启动参数修改内核安全配置与高精度定时器配置。
- 利用perf工具分析不同版本Linux内核open()耗时差异。
- 运用Linux中断和锁的知识,识别MPU串口自研内核驱动的中断误用互斥锁的缺陷并纠正。
- 自研新增netlink类型。新增Flash擦除次数统计内核驱动,对用户空间程序提供socket绑定服务和上报Flash擦除动作,对Flash内核驱动提供上报擦除动作的内核符号。
- 修改SPI NAND Flash内核驱动,新增擦除上报操作。
- 设备树抽离公共部分,新增单板减少配置工作量。
- 编译环境升级编译器、标头和库,修改工程构建脚本以使用新版本编译环境,修改BSP升级脚本以支持升级新版本Linux内核。
独立IC驱动
- 重构SPI NOR Flash驱动关于Flash容量和擦除扇区大小的识别机制,使得实时操作系统的自研文件系统适配新的NOR Flash。(用于Cortex-M4 MCU。)
- 修改DSI转LVDS视频信号转换IC驱动,提升器件稳定性,缩小开机驱动耗时。(用于Cortex-A7 MPU。)(2021.11)
- 识别特定供应商的以太网交换机IC标记协议,以适配至原有的生成树协议中。
- 运用以太网交换IC PHY、SFP、SGMII的知识,识别原有驱动中关于SFP光模块Link Up/Down的判断依据错误,与UTP转SGMII的千兆PHY芯片的硬件缺陷。(用于Cortex-A7 MPU)
- 适配新分辨率的单色点阵液晶屏,调整U-Boot的开机点阵Logo显示。
- 修改U-Boot和Linux的百兆以太网PHY芯片驱动,新增设备树节点属性,以单板设备树配置适应PCB电路差异,灵活指定PHY芯片的LED0/1的Link/Act显示功能。
NFC读卡器IC驱动实现
- 选用的读卡器IC为NFC前端类,需要实现完整的NFC堆栈,包括I2C从器件的读写、IC复位控制、IC寄存器的操作、IC FIFO的读写等功能。
- 实现的驱动支持ISO/IEC 14443 Type A协议,支持卡片探测polling的控制、读取卡号等功能。对上层软件提供初始化、卡片探测开关等API。上层软件可传入回调函数。以执行回调函数并附带参数的方式把NFC卡片信息通知上层。
- 实现代码结构分层,操作系统相关的实现抽象为OSAL层。当前实现在Linux上正常工作,预留Cortex-M4 MCU驱动复用代码的能力。
外部器件控制
- 基于场效应管和电流方向控制继电器,实现驱动磁保持接触器动作的脉冲电流的控制逻辑。
生产线测试程序
- Cortex-M4 MCU完善对接测试主机的CAN总线通讯协议,新增传输电子标签等功能。裁剪测试程序依赖项,减少程序体积,使得程序能存放在64KB SRAM中并运行,测试完毕断电则程序消失。(2020.12)
- 实现从产线测试主机接收Cortex-A7 MPU安全启动相关的公钥哈希并校验其正确性、公钥哈希写入MPU OTP对应区域、并使能MPU安全启动的功能。(2021.04)
- 分压法电压测量电路、差分放大法微小电压测量电路的“一点校准”、“两点校准”的实现。(2021.07)
搭建算法验证环境
- 在x86-64平台编译运行验证自研算法的正确性,配合Address sanitizer的技术,检查自研算法是否存在内存溢出、内存泄漏等缺陷。
- 使用target为x86-64的gcc、binutils作为工具链,附加Address sanitizer动态库。编译时gcc使能内存越界检测选项。