先楫半导体HPMicro
2026-07-01
816
描述
下载地址: https://resource.hpmicro.com/sdk_env_v1.12.0.zip
测试工具版本
- ZCC 4.1.5
- Segger Embedded Studio 8.28
- IAR Workbench for RISC-V 3.30.1
版本更新概况
本版本在中间件和组件两个层面引入了多项新能力,聚焦于SystemView 调试可视化、音频编解码、ADC 统一 HAL 与 enet_phy / tsw_phy 适配等方向。
- [Added] hpm_math 快速三角函数
- 基于查表法引入快速三角函数,降低电机控制等场景的 CPU 负载
- [Added] mquickjs 中间件
- 引入 mquickjs 嵌入式 JS 引擎作为新中间件
- [Added/Updated] enet_phy / tsw_phy
- 新增 port helper 与自适应轮询机制,示例统一迁移至板载 PHY API
- [Added] SystemView 调试可视化
- 新增 segger_sysview 源码,支持 baremetal / FreeRTOS / μC/OS-III 三种模式下的中断与任务录制,并适配 IAR Workbench 构建
- [Added] ADC 统一 HAL
- adc_v2 提供统一的 adc12/adc16 HAL,并新增 adc16 差分模式包装 API
- [Added] ES8389 音频编解码驱动
- 新增 audio codec ES8389 初始驱动
新增/更新的中间件(Middleware)
- [Added] SEGGER SystemView
- 引入 SystemView 源码,支持在 baremetal、FreeRTOS、μC/OS-III 三种运行环境下进行中断与任务级实时分析
- FreeRTOS 下默认提供中断记录钩子,并支持 IAR Workbench 构建
- μC/OS-III 模式下可记录系统中断,便于定位实时性问题
- [Added] mquickjs
- 新增轻量级 QuickJS JavaScript 引擎中间件,支持在 MCU 上嵌入运行 JS 脚本
- [Added] hpm_math
- 新增基于查找表的快速三角函数(sine/cosine 等),降低电机控制、信号处理等场景下三角运算的 CPU 开销
- [Updated] TensorFlow Lite for Microcontrollers (TFLM)
- 升级上游 tflite-micro 版本并适配更新后的 TFLM API
- 增加更多 libnn 神经网络算子优化,提升端侧推理性能
- [Updated] Micro-ROS
- 延续 kilted 版本基线,精简 libmicroros.a 体积,降低 FLASH 占用
- [Updated] CherryUSB
- 由 v1.5.3 升级至 v1.6.1,cherrysh 同步适配新版本
- 优化 setup 中断处理流程,提升端点枚举稳定性
- [Updated] LVGL
- 升级至 v9.5.0
- 支持 LVGL 内建的 VGLite 驱动
- 支持三缓冲机制,提高刷新效率
- 优化双 buffer 刷新机制,提高交换性能
- [Updated] eclipse_threadx
- 移除 pcfg_disable_power_trap() 调用,简化电源陷阱处理逻辑
- [Fixed] HPM_MCL_V2
- 修复 delta PID 误差历史移位顺序错误,保障力位混合控制中微分项计算的正确性
- [Fixed] CherryUSB / TinyUSB / USBX
- 修复 reset handler 处理缺陷及 actual_xfer_len 未赋值问题,避免 USB 传输长度计算异常
- [Fixed] μC/OS-III
- 修复使用 GPTMR 作为 tick 源时配置不生效的问题
- [Fixed] LWIP
- 修复 RT-Thread 移植下以太网接收线程优先级设置,避免网络接收线程被低优先级任务阻塞
- [Fixed] cherrysh
- barebone_uart 支持非阻塞读与静态行缓冲,改善命令行交互响应
- [Fixed] FatFS
- 修复 spi_nor 在 release 构建下 disk_ioctl 栈溢出问题
- [Fixed] LVGL
- 将三缓冲指针声明为 volatile,修复编译器优化导致的显示缓冲刷新异常
- [Fixed] ptpd
- 统一日志宏为 PTPD_PRINT,规范 PTP 协议栈日志输出
新增/更新的组件(Components)
- [Added/Updated/Fixed] enet_phy
- 新增 port helper,统一 PHY 地址与访问入口,支持可配置 PHY 地址
- 新增 adaptive poll 与 speed_valid 链路状态,加固 MDIO 速率/双工读取
- 修复 MDIO 页面恢复与链路读取,RMII 参考时钟改为按媒体接口类型判断,MDIO 访问适配 hpm_stat_t 返回值
- [Added/Updated/Fixed] tsw_phy
- 新增 port helper,统一 TSW 侧 PHY 地址与访问入口,支持可配置 PHY 地址
- 新增 adaptive poll 与 speed_valid 链路状态,向上层传播 port 层错误
- 修复 chip 头文件冲突与 tsn_switch 端口日志,与 enet_phy 驱动行为对齐,双网络接口 PHY 一致
- [Added] ppi
- 异步 SRAM 新增 CS 同步时钟(cs sync clock)配置
- [Added] adc_v2
- 新增统一 adc12/adc16 HAL,屏蔽多精度 ADC 调用差异
- 新增 adc16 差分模式(differential mode)封装 API
- 原 hpm_adc.h 标记 deprecated,推荐迁移至 adc_v2
- [Added/Fixed] codec
- 新增 ES8389 audio codec 初始驱动,扩展音频编解码器选型
- sgtl5000 与 wm8960 新增 get_default_config API,简化初始化
- 修复 coeff_div 结构 padding 相关 clang-tidy 警告
- [Updated/Fixed] eeprom_emulation
- 补充 EEPROM 仿真使用说明
- 更新掉电保护写入策略,提升异常掉电下数据可靠性
- 重命名 EEPROM_MAX_VAR_CNT 为 E2P_MAX_VAR_CNT
- [Updated] debug_console
- 新增 CONFIG_CONSOLE_NO_SETVBUF 宏,允许禁用 setvbuf(),便于自定义控制台缓冲行为
- [Fixed] serial_nor
- 修复读 API 中 cache invalidate 范围错误,避免读到脏数据
- 修复 clang-tidy 报告的 dead store 与移位溢出问题
- [Fixed] pmbus & smbus
- 修复 hpm_pmbus_master_read 变长 block 读问题
- 修复 hpm_smbus_master_read_block_in_command block 读问题
- [Fixed] spi
- 修复 rx DMA 配置未关闭 SPI rx DMA 请求的问题
- 修正 DMA 链式传输中 spi_setup_dma_transfer 的调用位置
- [Fixed] usb
- 修复 usb_device_edpt_xfer() 中轮询 ENDPTSETUPSTAT 的死循环风险
新增/更新的驱动(Drivers)
- [Added] UART
- 新增 uart_set/get_data_bits、uart_set/get_parity、uart_set/get_stop_bits、uart_set/get_flow_control 系列配置 API,运行时灵活变更串口参数
- 新增 TX/RX 引脚电平极性反转 API,支持特殊收发逻辑或电平转换场景
- [Added] MCAN
- 新增 queue 模式 API 与面向高吞吐的 unchecked API,降低中断与校验开销
- 新增多个用户友好 helper API 并完善参数校验,简化收发配置
- [Added] OpAmp
- 新增输出通路选择与查询 API,初始化及运行期均可配置输出路径
- [Added] I2C
- 新增 i2c_is_gencall() API,支持通用呼叫地址(General Call)识别
- [Added] SPI
- 新增 spi_deinit() API,提供外设反向清理入口,便于复位与重新初始化
- [Added] PWMV2
- 新增跨周期比较(cross-period compare)非法事件上报,避免非预期波形被静默接受
- [Added] TSW
- 启用 MAC Jumbo 帧通路,支持 lwIP 扩展 MTU,提升大包网络吞吐
- [Added] HPM5300 过流保护
- SoC 层新增过流保护接口,可在过流事件下保护外设与负载
- [Added] ROM_API OTP
- SoC 层新增 OTP 驱动 wrapper,统一 OTP 在线访问入口
- [Updated] ADC16 / ADC12
- ADC_AHB_EN 由 conv_mode 自动推导,adc_ahb_en 字段标记废弃,配置更简洁
- ADC16 新增循环过采样(loop oversample)与 SEQ DMA 多种选项,并扩展 INT_STS STOP_POS 中断事件
- 解耦 SEQ DMA 的 stop_en 与 stop_pos,独立控制采集停止行为
- SoC 新增 ADC16 序列硬件触发源 ADC_SOC_HW_TRIG_SRC
- SEQ DMA union 与 init_seq_dma 16b 路径,调整 sel_sync_ahb 处理逻辑
- 板级 pinmux 工具新增 init_adc16_diff_pins 生成支持
- [Updated] ENET
- 扩展 PTP 配置,支持 PPS 输出与初始时间戳设置,简化时间同步应用
- [Updated] USB
- 新增 usb_phyctrl1_select_utmi_clk_src() API,可选 UTMI 时钟源
- 新增 SUTW 相关 API,USB Device 切换至 setup lockouts off 模式,提升控制传输处理灵活性
- [Updated] TSW / TSN
- 拆分 CB 字段并新增交换机头部相关 API,统一 TSW_CPU_SEND_TO 目的端口宏
- 从帧动作配置中移除已废弃 DROP 字段,简化配置语义
- [Updated] DMA
- 新增 DMA_LINKED_DESCRIPTOR_ALIGN 宏,便于链式描述符对齐配置
- [Updated] PCFG
- 更新 DCDC 电压设置流程 和 DCM/CCM 模式切换流程,提升电源轨稳定性
- [Updated] ROM_API (XPI)
- 释放更多 XPI 可配置字段,扩展外设在线可调参数
- [Fixed] ADC16 / ADC12
- 延迟看门狗中断使能,避免初始化阶段误触发
- 修正 HPM5300/HPM6P00 adc/dac AHB/ANC 时钟枚举值
- [Fixed] MCAN
- 修正 nominal tseg2 范围限制与默认 tdc_offset,提升总线时序鲁棒性
- 修正 txfifo 索引返回值可能错误的问题
- [Fixed] CAN / CANopen
- 修复 CANopen 协议栈多处逻辑错误,提升协议栈稳定性
- [Fixed] OTP
- 修正 lock_otp 处理逻辑及 LDO ready 掩码,保证 OTP 锁定与上电时序正确
- [Fixed] PCFG
- 修正 DCDC 电压设置与工作模式切换过程中的模式跳变问题
- [Fixed] ENET / TSW (MDIO)
- 为 GMII PHY 访问与 tsw_ep_mdio 增加 MDIO busy 重试,规避偶发读写失败
- [Fixed] TSW / TSN
- 重命名 TSN 构建用 MDIO OP 宏,避免与 ENET 构建冲突
- [Fixed] I2S
- 为 PDM/DAO 相关 API 增加预编译条件,避免非目标外设编译报错
- [Fixed] GPTMRV2
- gptmr_channel_config() 增加 24 位溢出校验
- 修正 gptmr_channel_get_default_config 默认 cmp/reload 超出 24 位限制的问题
- [Fixed] PWMV2
- 修正 pwmv2_config_cmp 中计数器选择逻辑,保证比较值正确生效
- [Fixed] PPI
- 修正时钟分频编号设置(应减 1),避免时钟配置偏差
- [Fixed] PLLCTLV2 (Spread Spectrum)
- [Fixed] ENET (hpm_enet_drv)
- 修正 TX 描述符 DMA 释放顺序,避免发送资源泄漏或异常
Samples改动
- [Added] CherryUSB DFU
- [Added] CANopen Master
- 新增基于 CANopenNode 的 CANopen 主站示例,便于开发主从角色选型
- [Added] ADC16 Differential
- 新增 ADC16 差分采样示例,演示差分码值 (POS/FULL) 计算与解码
- [Added] SPI NOR Flash
- 新增 SPI NOR Flash 读写示例,演示通过 IDE 工程生成多 IDE 工程
- [Added] mquickjs
- 新增嵌入式 JavaScript 引擎 (mquickjs) 演示示例
- [Added] hpm_math Fast Math
- 新增快速数学函数 (Fast Math) 测试示例
- [Added] SENT
- 新增 SENT 解码支持 Idle High/Low 电平模式,覆盖更多总线空闲状态
- [Added] TSN
- [Updated] CherryUSB
- 适配升级至 v1.6.1,USB Host 串口类支持 CDC_ACM、CH340、CP210x、FTDI、PL2303 及 GSM Modem
- UAC2 麦克风数据格式从 16bit 升级为 24bit
- UAC2 规范描述符 EP Size
- CDC ACM Device 2048字节发送间隔调整为 500ms
- [Updated] TinyUSB
- UAC2 麦克风数据格式从 16bit 升级为 24bit
- UAC2 规范描述符 EP Size
- UAC2 增大 MIC SW_BUF_SZ
- [Updated] CAN / MCAN
- 将原 CAN 与 MCAN 大例程拆分为多个小型自包含、功能级独立例程 (tx queue mode 等),便于按特性选型
- 扩展示例选项与输出
- [Updated] ADC16
- 序列 DMA 示例改用 Driver Buffer API,统一描述符对齐使用 DMA_LINKED_DESCRIPTOR_ALIGN 宏
- IP 强制 AHB sync 时跳过 sel_sync_ahb 配置
- [Updated] LWIP
- 支持通过 cmake -D 覆盖 LWIP_DHCP,文档化静态 IP 默认值与 DHCP 选项
- 静态 IP 场景下默认设置 DNS 并启用 LWIP_SO_RCVTIMEO
- PTP UDP 端口 319 支持逐帧 TX 时间戳
- ENET/lwIP PTP 示例统一改用 enet_init_ptp() 单配置初始化
- [Updated] TSN
- 统一 TSN 网络配置与 ENET netinfo 对齐,采用 TSW Switch 内联 Header API
- [Updated] Audio Codec
- Codec 初始化改用统一的 codec_control_t 配置
- [Updated] Motor Control
- BLDC FOC 示例迁移至 ADC v2
- 电机相关示例统一使用 BOARD_BLDC_MOTOR_CLOCK_SOURCE 获取电机时钟源
- [Updated] enet_phy / tsw_phy 示例 (ENET / TSN / Modbus / Opener / Multicore)
- 统一采用板载 PHY API,经 port helper 接入 adaptive poll
- Modbus / Opener / Multicore 补充媒体接口 (Media Interface) 配置
- [Updated] Multicore
- [Fixed] EtherCAT / EtherCAT EoE
- 修正 SSC 1ms tick 中断优先级,避免影响 ESC 中断服务执行
- EoE 共享 LWIP Baremetal 的 1ms tick,与 FreeRTOS Tick 解耦 (中断优先级冲突)
- 参考 HPMicro KnowledgeBase: https://kb.hpmicro.com/2025/09/23/ethercatssc从站协议栈中的中断配置参数和中断优先级设/
- [Fixed] LWIP
- 修复 PTP PPS 引脚初始化与媒体接口配置缺失
- 修复 ping 输入处理 ANSI 转义/退格问题与 mhd_wifi_demo SES 编译错误
- 修复 ESP Hosted WiFi 停止后重连失败
- [Fixed] CherryUSB / TinyUSB
- 修复 UAC2 Speaker 数据延迟与 Mic 软件 Buffer 过小问题
- 修复 CDC ACM Host 枚举时 DTR Line Control 异常与 MSC Dual Lun 说明缺失
- [Fixed] TSN
- 修复 TSW pbuf chain 收发与 RX 排空、lwip_tcpecho pbuf chain 回显及 MTU Buffer 对齐
- [Fixed] MCAN
- 修正多个示例的局部初始化状态与 Standard ID 错误
- [Fixed] GPTMR / GPTMRV2
- 全部 GPTMR 示例检查 gptmr_channel_config() 返回值并增加 DMA 传输宽度保护
- 修复 GPTMRV2 输出比较示例 Reload/Compare 24-bit 溢出
- [Fixed] I2C / SPI DMA
- 为 I2C 与 SPI 的 DMA 传输示例使能 complete/end 中断,确保传输完成事件可靠上报
- [Fixed] ADC16
- 修复差分结果解码与打印,移除 adc16_temperature 中冗余初始化
- [Fixed] DMA / MEM Stress
- 修复 DMA 通道设置,移除 Mem Stress 中不支持的 flash_xip_hybrid target
- [Fixed] PNG Decode
- 修复空文件 Buffer 导致的 lodepng error 48
- [Fixed] TFLM
- 防止 printf 格式串被二次解释导致串口协议数据损坏
- [Fixed] EWdg / Tamagawa / PPI Parallel ADC
- 增大 EWdg 复位测试裕量,更新 Tamagawa DMA Link 指针宏,PPI ADC 示例使能 CS Sync Clock
注意事项
本版存在若干公开板级宏 / SoC API / 组件 API 重命名,涉及破坏性迁移,已有工程需按以下清单适配:
- boards: enet 接口宏重命名
- RGMII/RMII/MII 重命名为 HPM_ENET_RGMII/HPM_ENET_RMII/HPM_ENET_MII
- boards: enet_phy 适配
- CMakeLists 新增 ENET 接口与 PHY 类型组合校验
- RGMII 专用板移除 RMII ref clock 板级 API;hpm6e00evk 移除 enet reference clock setting API
- boards: tsw 接口宏重命名
- RGMII/MII 重命名为 HPM_TSW_RGMII/HPM_TSW_MII
- boards: hpm5e00evk TSW CMake 块移除
- 板级 CMakeLists 中 TSW 配置块已删除,依赖 TSW 的工程需自行适配
- boards: DMA 宏重命名
- BOARD_APP_HDMA 重命名为 BOARD_APP_DMA0,BOARD_APP_XDMA 重命名为 BOARD_APP_DMA1
- boards: FEMC 板级特性替换
- 删除 board_femc_sram feature,改用 BOARD_HAS_FEMC_ASYNC_SRAM 宏声明
- soc: HPM6800 API 重命名
- sysctl_set_cpu0_entry() 重命名为 sysctl_set_cpu0_wakeup_entry()
- components: adc 组件废弃
- hpm_adc.h 标记 deprecated,建议迁移至 adc_v2 统一 HAL
- components: eeprom_emulation 宏重命名
- EEPROM_MAX_VAR_CNT 重命名为 E2P_MAX_VAR_CNT
- drivers: adc12/adc16 字段废弃
- ADC_AHB_EN 改由 conv_mode 自动推导,adc_ahb_en 字段(位于 adc12_config_t / adc16_config_t)废弃
- drivers/samples: GPTMR QEI mode 移除
- GPTMR 移除 QEI mode 相关 API 与 HPM5E00 feature,删除 samples/drivers/gptmr/qeimode 示例;已有工程请迁移至 QEI/QEIV2 驱动与示例
- samples: motor BLDC FOC 迁移
- 从 legacy hpm_adc 迁移至 adc_v2 组件
- samples: memstress target 移除
- 移除不支持的 flash_xip_hybrid target
- samples: ecat_eoe target 排除
- 排除不支持的 flash_xip_hybrid target
更多更新内容请参考在线文档 https://hpm-sdk.readthedocs.io/en/latest/CHANGELOG.html
已知问题
- IAR Embedded Workbench相关:
- 可以从 IAR 官网购买或者下载试用版本(14天),调试方式目前仅支持I-jet调试(正与 IAR 沟通解决使用 openocd gdbserver 进行调试出现的问题)
- 在工程开启优化可能导致程序运行异常
- 使用EWRISCV集成的Andes toolchain,Coremark 分数低于使用 Segger Embedded Studio 集成的Andes Toolchain的结果
- 使用EWRISCV时,可能会出现relocate相关的错误,当出现该类错误的时候,可以在CMakeLists.txt中通过添加sdk_iar_ld_options(--disable_relaxation) 来规避
打开APP阅读更多精彩内容