适配多场景开发|HPM_SDK v1.12.0 正式发布

描述

下载地址: 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
    • 新增 Device 固件升级 (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
    • 新增从串口终端远程设置 TSN 对端 IP 功能
  • [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
    • 更新 Coremark 多核 CPU1 启动流程
  • [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阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • 热点推荐
  • SDK
  • HPM

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分