跳转至

mHera_NLSSV01C11 Release Note


1. 版本修改内容

1.1. 多模块功能改动

1.1.1. 对前个版本不足之处的改进

ID. 问题描述 详细描述 注意事项
1 优化显示时钟架构以降低功耗 【原因分析】:显示模块在创建第一个设备时即开启所有时钟,关闭时同样全部禁用,造成不必要的功耗浪费;此外显示控制器内部部分 gp_ctrl 时钟被开启后从未关闭,也导致功耗浪费
【涉及修改】
boot: drivers/sgs/camdriver/disp/
sdk: mi_disp.ko
2 修复 OPTEE 内存不足错误 【原因分析】:OPTEE 加载 ELF 时出现 TEE_ERROR_OUT_OF_MEMORY(错误码 0xffff000c),导致安全世界应用无法正常启动
【涉及修改】
boot:
configs/mhera_ssm004a_s01a_spinand_optee_defconfig
include/configs/mhera.h
optee:
core/arch/arm/plat-mhera/platform_config.h
启用 OPTEE 方案需验证 TZ 功能
3 修复显示接口切换时 HDMI-VGA 显示异常 【原因分析】:bootlogo 使用一种显示接口而 kernel 使用另一种不同接口时,gp_ctrl 配置不会被触发,导致面板无法初始化
【涉及修改】
boot: drivers/sgs/camdriver/disp/hal_common/mhera/hal_disp_outpath_if.c
sdk: mi_disp.ko
bootlogo 与 kernel 使用不同显示接口时需验证
4 修复 DMABUF_HEAPS 配置项位置错误 【原因分析】:CONFIG_DMABUF_HEAPS=y 配置项在 make savedefconfig 时位置不正确,导致 sgs_common 构建触发 savedefconfig 检查但 kernel 构建不触发
【涉及修改】
kernel:
arch/arm/configs/mhera_*.defconfig
arch/arm64/configs/mhera_*.defconfig
project:
configs/generic/defconfigs/mhera_sdk_generic_defconfig

1.1.2. 对前个版本新增功能特性

ID. 简要描述 详细描述 注意事项
1 支持 Ubuntu 系统 ROS2 和 Docker 容器 【原因分析】:需要在 mHera 平台上运行 Ubuntu 系统,支持 ROS2 机器人和 Docker 容器化部署
【涉及修改】
kernel:
arch/arm64/configs/mhera_ubuntu_ssm004a_s02a_emmc_defconfig
project:
configs/Kconfigs/customer/*/Kconfig
image/configs/general/emmc_ubuntu.ext4fs.tfa.dualenv.partition.config
image/packaging/common/rootfs_ubuntu.mk
需配合 Ubuntu rootfs 使用
2 支持 ALSA 和 MI 音频双架构共存 【原因分析】:音频代码需要同时支持 ALSA 和 MI 两种架构,以满足不同应用场景需求。调整 I2S 配置以支持双架构、修复 DMA 处理逻辑、增强音频 HAL 模块
【涉及修改】
kernel:
sound/soc/sgs/
arch/arm/boot/dts/mhera.dtsi
arch/arm64/boot/dts/sgs/mhera.dtsi
sdk:
mi_aio.ko
3 支持 CPU DVFS 调频调压功能 【原因分析】:需要根据工作负载动态调整 CPU 频率和电压以优化功耗表现。默认启用 CONFIG_SGS_CPU_FREQ 和 CONFIG_SGS_VOLTAGE_IDAC,使用 GOV_USERSPACE 作为默认调频策略,并更新 OPP 表和 SIDD/ROSC 阈值
【涉及修改】
kernel:
arch/arm/configs/mhera_*.defconfig
arch/arm64/configs/mhera_*.defconfig
arch/arm/boot/dts/mhera.dtsi
arch/arm64/boot/dts/sgs/mhera.dtsi
project:
configs/generic/defconfigs/mhera_sdk_generic_defconfig
需在 defconfig 中启用相关配置
4 支持 IPU OPP 表功能 【原因分析】:IPU(智能处理单元)需要支持动态电压频率调整,根据负载自动选择最优工作点。OPP 表数据来源于 IDAC 表 2026_0309_SRAM_Release.xlsx
【涉及修改】
kernel:
arch/arm/boot/dts/mhera.dtsi
arch/arm64/boot/dts/sgs/mhera.dtsi
sdk:
mi_ipu.ko
project/release/include/mi_ipu_macro.h
5 支持 DRM 显示框架 【原因分析】:Ubuntu 系统需要 DRM 框架支持,部分 DRM 配置无法在 defconfig 中启用,需通过 cam_sysfs 接口在运行时配置
【涉及修改】
kernel:
drivers/sgs_common/cam_sysfs/cam_sysfs.c
drivers/sgs_common/drm/Kconfig
drivers/sgs_common/include/cam_sysfs.h
project:
configs/Kconfigs/customer/sdk/Kconfig
需配合 Ubuntu rootfs 使用
6 支持 Secure Boot 多分区 dm-verity 【原因分析】:安全启动需要支持对多个分区启用 dm-verity 校验,同时修复 xz 压缩的 U-Boot 打包失败问题,并支持将公钥插入 U-Boot 镜像
【涉及修改】
boot:
cmd/sgs/Makefile
cmd/sgs/sigauth.c
drivers/sgs/disk/part_emmc.c
include/ipl.h
project:
image/security_boot_tools/
使用安全启动方案的客户需验证
7 支持 PZ1 调试环境 【原因分析】:需要在 bringup 分支上支持 PZ1 调试环境,以便调试硬件问题。调整 PZ1 的 DTS/DTSI 和 defconfig 修复编译错误和内核启动挂死
【涉及修改】
kernel:
arch/arm/boot/dts/mhera-pz1.dts
arch/arm/boot/dts/mhera-pz1.dtsi
arch/arm64/boot/dts/sgs/mhera-pz1.dts
arch/arm64/boot/dts/sgs/mhera-pz1.dtsi
project:
configs/demo/defconfigs/nvr_mhera_pz1.*.defconfig
仅用于 PZ1 调试环境

1.2. Boot 变更日志

1.2.1. 对前个版本不足之处的改进

ID. 问题描述 详细描述 注意事项
1 提升 USB Fastboot 升级速度 【原因分析】:由于硬件限制,无法正常使用 DMA RX,需要通过特殊方法实现。获取 fastboot 数据阶段的实际数据长度,按最大 4K 分片传输,每片长度为 maxpkt 的整数倍,可通过 DMA RX 传输以提升速度
【涉及修改】
cmd/sgs/ufu/f_firmware_update.c
drivers/sgs/usb/gadget/udc/usb20/msb250x_udc.c
drivers/usb/gadget/f_fastboot.c
include/linux/usb/gadget.h
2 扩大内核镜像大小支持至 48M 【原因分析】:启用 KASAN 后未压缩的内核镜像会超过 32M,而原来仅预留 30M 的内核镜像空间 [0x20200000, 0x22000000),导致 U-Boot 无法启动内核。使用默认压缩预设值(level 6)时字典大小为 8M,无需预留 16M 字典空间,缩减字典空间后扩展内核镜像空间至 [0x20200000, 0x22800000)
【涉及修改】
include/configs/mhera.h
仅影响启用 KASAN 的调试版本
3 放大 rootfs 脚本大小限制至 40K 【原因分析】:rootfs 脚本大小超过原有 20K 限制,导致打包失败
【涉及修改】
cmd/sgs/include/cmd_sgs_common.h
4 修复 OPTEE 重定位触发 TZEMI 中断 【原因分析】:U-Boot RAM 基地址与 TZEMI 中断区域冲突,需要禁用重定位并将 RAM 大小缩减至 118MB 以避免触发 TZEMI 中断
【涉及修改】
configs/mhera_ssm004a_s01a_spinand_optee_defconfig
include/configs/mhera.h
使用 OPTEE 方案的 NAND Flash 产品需验证

1.2.2. 对前个版本新增功能特性

ID. 简要描述 详细描述 注意事项
1 支持 Fastboot USB 升级 【原因分析】:estar 升级速度太慢,需要支持 fastboot USB 升级方式以提升固件更新效率
【涉及修改】
configs/mhera_ssm004a_s02a_emmc_arm64_defconfig
drivers/fastboot/Kconfig
2 支持 USB UFU 升级命令 【原因分析】:需要支持 USB UFU(USB Firmware Update)升级方式,为固件更新提供更多选项
【涉及修改】
configs/mhera_*_optee_defconfig
configs/mhera_ssm004a_s02a_*_defconfig

1.3. Kernel 变更日志

1.3.1. 对前个版本不足之处的改进

ID. 问题描述 详细描述 注意事项
1 修复 ARM32 架构 PMD 表项非原子更新问题 【原因分析】:ARM 架构参考手册要求 64 位页表描述符的读写必须满足单拷贝原子性。在 32 位架构上,内核依赖 STRD 指令实现该原子性,但 gcc 12.4.0 编译器对 copy_pmd() 做了过度优化破坏了原子性,导致高低字节分两次存储,引发诡异的预取异常和数据终止异常
【涉及修改】
arch/arm/include/asm/pgtable-3level.h
2 修复 MMA 堆分配失败时错误诊断信息不足 【原因分析】:MMA 堆分配失败时打印 8 条重复错误信息,缺乏有意义的诊断信息,用户无法快速定位根因或修复 bootargs
【涉及修改】
drivers/sgs_common/mma_heap/mdrv_mma_heap.c
3 修复 GMAC 释放 IRQ 前未取消亲和性初始化 【原因分析】:释放 IRQ 前未取消亲和性初始化会导致内核告警
【涉及修改】
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
4 修复 USB 调试级别启用时 tracepoint 符号未定义 【原因分析】:sgs-dwc3-of-simple.ko 中的 dwc3_readl/dwc3_writel 调用引用了 dwc3 核心模块中的 tracepoint 符号,但这些符号未导出到内核符号表。当启用调试级别(CONFIG_TRACING=y)时,modpost 报告未定义符号错误
【涉及修改】
drivers/sgs_common/usb/dwc3/sgs-dwc3-debugfs.c
drivers/sgs_common/usb/dwc3/sgs_dwc3_of_simple.c
5 修复 MIPI PAD padmux 配置错误 【原因分析】:MIPI PAD 的 IE(Input Enable)位设置错误,导致输入使能配置不正确
【涉及修改】
drivers/sgs_common/gpio/hal/mhera/src/hal_pinmux.c
6 修复温度传感器公式精度问题 【原因分析】:原有温度计算公式会直接丢弃小数部分,应改为四舍五入以获得更精确的温度读数;同时更新为 RD 发布的新公式 Ts= 0.74*(VBE_FT-VBE)+26
【涉及修改】
drivers/sgs_common/tsensor/hal/mhera/src/hal_tsensor.c
温度读数可能与前版本略有差异
7 修复 MIU 复位流程 【原因分析】:MIU 的 pipe reset 和 IP reset 是同一操作的一部分,unmask 应放在启动 pipe reset 之后、MIU stop reset 之前的间隔中
【涉及修改】
drivers/sgs_common/miu/hal/mhera/src/hal_miu.c
8 修复 KASAN 启用时 RIU 空间访问导致数据异常 【原因分析】:在 arm64/mm/mmu.c 中使用 __create_pgd_mapping() 为 GIC 和 RIU 空间创建固定虚拟地址映射时,由于太早使用 vmalloc 空间,没有为 RIU/GIC 虚拟地址范围建立 shadow memory 映射,导致 KASAN 启用时数据访问异常
【涉及修改】
arch/arm64/mm/kasan_init.c
arch/arm64/mm/mmu.c
仅影响启用 KASAN 的调试版本
9 修复 ARM LPAE 下非引导 CPU TTBCR 值错误 【原因分析】:在 ARM LPAE 和 CONFIG_ARM_PV_FIXUP 同时启用时,非引导 CPU 的 v7_ttb_setup() 中比较操作失败,导致非引导 CPU 只使用 TTBR0 而非 TTBR1 处理内核地址空间,产生不必要的 vmalloc 缺页异常
【涉及修改】
arch/arm/mm/proc-v7-3level.S
10 同步 USB HID quirks 修复鼠标识别问题 【原因分析】:部分特定型号的 USB 鼠标无法被正确识别,需要从 kernel 5.10 master 同步对应的 HID quirks 修复
【涉及修改】
drivers/hid/hid-ids.h
drivers/hid/hid-quirks.c
11 DTB/UNFDT 超大时停止编译 【原因分析】:当 DTB 或 UNFDT 超过最大大小时,之前仅打印警告信息并继续编译,可能导致难以调试的运行时错误
【涉及修改】
arch/arm/boot/Makefile
arch/arm64/boot/Makefile
scripts/sgs/builtin_dtb_update.py
scripts/sgs/builtin_unfdt_update.py
12 修改 arm64 uImage 入口地址为 0x20100000 【原因分析】:启用 KASAN 后内核镜像大幅膨胀,与 IPL_CUST.ram 地址空间 [0x22420000-0x22430e90] 产生重叠冲突。将 arm64 uImage 入口地址从 0x20200000 改为 0x20100000
【涉及修改】
project: kbuild/kbuild.mk
仅影响 arm64 架构
13 删除内核敏感字符串 【原因分析】:ModifyDefconfig.sh 和 scripts/sgs/dtbo/README.md 中包含敏感字符串信息,需要清理
【涉及修改】
ModifyDefconfig.sh
scripts/sgs/dtbo/README.md

1.3.2. 对前个版本新增功能特性

ID. 简要描述 详细描述 注意事项
1 支持 RPMsg 获取源地址和设置目标地址 【原因分析】:在客户端-服务器模型中,服务端只有一个端点设备,无法区分不同客户端的源地址,也无法向不同客户端发送响应。新增 RPMSG_ENDPOINT_FLAG_INBAND_SRCADDR 和 RPMSG_ENDPOINT_FLAG_INBAND_DSTADDR 标志位,read() 返回数据前 4 字节为源地址,write() 发送数据前 4 字节为目标地址
【涉及修改】
drivers/sgs_common/include/sgs_rpmsg.h
drivers/sgs_common/rpmsg/ss_rpmsg.c
使用 RPMsg 的应用层需适配新 API
2 支持 PCIE 回环基准测试 【原因分析】:需要支持 PCIE 回环(loopback)基准测试以验证 PCIE 链路的传输性能和稳定性,同时将 sgs mac_init 抽取到 hal_pci.c(.h) 以确保不同芯片的兼容性
【涉及修改】
drivers/sgs_common/pcie/Makefile
drivers/sgs_common/pcie/drv/drv_pcie.c
drivers/sgs_common/pcie/hal/mhera/pcie_hal.c
drivers/sgs_common/pcie/verify/rc/pci_endpoint_test.c
3 支持 PCIE 测试指定传输大小 【原因分析】:pcitest 工具需要支持以 MB 和 KB 为单位指定测试传输大小,方便进行不同规模的吞吐量测试
【涉及修改】
tools/pci/pcitest.c
arch/arm/boot/dts/mhera.dtsi
arch/arm64/boot/dts/sgs/mhera.dtsi
4 支持 TrustZone 单元测试 【原因分析】:需要在 mHera 平台上支持 TrustZone 单元测试,验证安全世界功能
【涉及修改】
arch/arm/boot/dts/mhera.dtsi
arch/arm64/boot/dts/sgs/mhera.dtsi
5 配置内核选项支持 ROS2 和 Docker 【原因分析】:Ubuntu ROS2 和 Docker 容器需要大量内核配置支持,包括 Cgroup(systemd/Docker)、Namespace(容器隔离)、网络虚拟化(Docker 网络)、文件系统(overlayfs/Btrfs)和安全特性(SELinux/AppArmor)
【涉及修改】
arch/arm64/configs/mhera_ubuntu_ssm004a_s02a_emmc_defconfig
需配合 Ubuntu rootfs 使用

1.4. SDK 变更日志

1.4.1. 对前个版本不足之处的改进

ID. 问题描述 详细描述 注意事项
1 修复 PASS 回调中 BUG_ON 导致内核崩溃 【原因分析】:UnBindVideoLayer 清除 apstInputChnRes[chnId] 为 NULL 时,工作线程仍有未完成任务,此时 BUG_ON 触发致命内核崩溃;该场景属于合法竞态条件,应安全恢复而非崩溃
【涉及修改】
mi_disp.ko
2 修复 VGA 与其他接口共存时退出重进帧率降低问题 【原因分析】:VGA 与其他接口(如 MIPI、HDMI)同时使用时,如果 VGA 先退出,去初始化流程不完整,导致 VGA 再次启动后帧率低于预期;同时 MIPI APHY 去初始化时未执行复位操作
【涉及修改】
mi_disp.ko
3 修复显示 MOP 通道交叉初始化问题 【原因分析】:去初始化并重新初始化某个 MOP 通道时,由于使用全局初始化状态跟踪,另一个 MOP 通道会被错误地重新初始化;同时 pixel_1 默认时钟应切换到 displpll1
【涉及修改】
mi_disp.ko
4 修复 HDMI 调试信息输出错误 【原因分析】:HDMITX 调试信息中打印了错误的变量名,第 7 个参数应为 u8DrvCurTap2Ch1 但实际输出为 u8DrvCurTap1Ch1
【涉及修改】
mi_hdmi.ko
5 修复 VDEC 超时导致系统挂死问题 【原因分析】:VCD 超时且启用 lsyc 时,lsyc 会挂起,vcmd 停在 stall cmd,无法产生中断给 CPU,导致系统挂死
【涉及修改】
mi_vdec.ko
libvdec.so
6 修复 H265 解码 WaitListNotInUse 死循环 【原因分析】:H265 流程在 SeqInit 中通过 WaitListNotInUse 无限等待所有 buffer 不再使用,但处理 SeqChange 错误时 HevcDecAbortAfter 不会清除 u32NRefCount 为 0,导致无限等待
【涉及修改】
mi_vdec.ko
7 修复 H264 提取 NAL 数据时死循环 【原因分析】:当提取到仅含 3 字节起始码(0x000001)且无 NAL 数据的字节流时,未更新 strm_curr_pos/strm_buff_read_bits,导致 h264bsdExtractNalUnit 中死循环
【涉及修改】
mi_vdec.ko
8 修复 MIPI 去初始化时状态机异常 【原因分析】:MIPI 去初始化前如果不先完成所有已发送帧的处理,MIPI 电路的状态机可能进入混乱状态
【涉及修改】
mi_disp.ko
9 修复 IPU 批量任务执行时死锁 【原因分析】:执行批量任务时,如果在 batch switchin 期间进行变量缓冲区缩放操作,会触发死锁
【涉及修改】
mi_ipu.ko
10 修复 GOP 模块 OSDB 无法交换到前台 【原因分析】:hal_rgn_gop.c 中未实现 OSDB 交换功能,导致 OSD 背景图层无法正常切换到前台显示
【涉及修改】
mi_rgn.ko
11 修复 VGA PLL 运行中被复位导致停止工作 【原因分析】:PLL 只应在初始化和去初始化时被复位,运行中复位会导致 PLL 停止工作;同时开启 VGA aff 自动复位功能
【涉及修改】
mi_disp.ko
12 修复非 4K 场景下 MOPG 高峰值 ECO 位导致 Y 数据丢失 【原因分析】:MOPG 高峰值 ECO 位一直处于启用状态,在非 4K 场景下偶尔导致 Y 数据丢失。该 ECO 位仅在 4K 场景下启用即可
【涉及修改】
mi_disp.ko
13 修复 VDEC 端口 1 PTS 信息缺失 【原因分析】:在 capture 场景中,系统入队的任务同时包含 port0 和 port1 的 buffer,但 FillOutputBufInfo 填充 buffer PTS 信息时,OutputPortBufInfo[1] 的 PTS 信息缺失
【涉及修改】
mi_vdec.ko
14 修复 RFC 缓冲区大小计算错误 【原因分析】:refswx 中 RFC 缓冲区大小计算错误,需要同步 jira-81 和 jira-86 的补丁修复
【涉及修改】
mi_vdec.ko
15 修复 H265 序列变化时缓冲区数量计算错误 【原因分析】:H265 解码中 tot_buffers 的计算方式不正确,需要同步补丁修正
【涉及修改】
mi_vdec.ko
16 优化 VDEC 解码流程 【原因分析】:精简 DecDecode 流程,提升解码效率
【涉及修改】
mi_vdec.ko
17 修复 JPD 条件编译错误 【原因分析】:JPD 中错误的条件编译导致 MRC1 始终无效设置,同时使用宏分离无 FFD9 的代码以便维护
【涉及修改】
mi_jpd.ko
18 修复 DIS 自定义分辨率时序不支持问题 【原因分析】:不同显示接口在自定义时序参数时存在不支持的情况,需要逐接口修改不支持的时序
【涉及修改】
mi_disp.ko
19 修复 IPU Coverity 静态分析告警 【原因分析】:修复 Coverity 检测到的多处代码质量问题,包括 DMA 设置修正和 EP outbound 地址调整
【涉及修改】
mi_ipu.ko
libipu.so
project/release/include/mi_ipu_pcie_internal_datatype.h
20 优化 MOP 行缓冲排序算法 【原因分析】:将 gwin 行缓冲排序从 O(n²) 插入排序优化为 O(n log n) 快速排序,增加互斥保护和脏标记跳过不必要重算,新增 procfs lbconfig 入口用于调试
【涉及修改】
mi_disp.ko
mi_debug.ko
21 修复 bootlogo 默认 MIPI 面板显示抖动 【原因分析】:TOP 与 MIPI 之间的 Vsync 需要同步,但 Hsync 不需要同步(否则显示抖动)。开启 ext_frm_reset_en,关闭 hs_en
【涉及修改】
mi_disp.ko
22 修复 disp VideoLayerSize 打印格式错误 【原因分析】:MI_DISP_VideoLayerSize_t 的 u16Width/u16Height 成员实际为 MI_U32 类型,但 printf 使用了 %hu 格式(MI_U16)
【涉及修改】
mi_disp.ko
23 删除 VDF 中 mi_shadow 相关代码 【原因分析】:新 VDF 架构已废弃 shadow 机制,直接使用 vdf.ko 替代 shadow.ko
【涉及修改】
mi_shadow.ko
libshadow.so (已删除)

1.4.2. 对前个版本新增功能特性

ID. 简要描述 详细描述 注意事项
1 支持 IPU 级联 API 多线程多进程 【原因分析】:IPU 级联 API 在多线程和多进程环境下需要支持并发访问,以满足复杂 AI 推理场景需求
【涉及修改】
libipu.so
project/release/include/ipu_rpmsg.h
mi_ipu_pcie_internal.h
2 支持 IPU 心跳检测功能 【原因分析】:IPU EP 端服务进程需要支持优雅退出和资源清理,同时支持心跳检测以监控通信状态
【涉及修改】
mi_ipu.ko
libipu.so
project/release/include/ipu_rpmsg.h
mi_ipu_pcie_internal.h
mi_ipu_pcie_internal_datatype.h
3 支持 IPU PCIE DMA 链表模式 【原因分析】:IPU 通过 PCIE 进行数据传输时,使用 DMA 链表模式可以显著提升传输效率
【涉及修改】
mi_ipu.ko
libipu.so
project/release/include/mi_ipu_pcie_internal.h
mi_ipu_pcie_internal_datatype.h
mi_ipu_pcie_log_ctrl.h
4 支持 IPU 远程输入缓冲区查询和设置 【原因分析】:IPU 需要支持查询、设置和获取远程输入缓冲区,以满足级联推理场景的数据交互需求
【涉及修改】
libipu.so
project/release/include/ipu_rpmsg.h
mi_ipu_pcie_internal.h
5 支持 IPU MIU 复位流程 【原因分析】:IPU 复位时需要添加 MIU mask 和 MIU 复位流程,确保复位过程不会影响其他模块
【涉及修改】
mi_ipu.ko
6 支持 GE 模块 MIU 复位流程 【原因分析】:GE(图形引擎)复位时需要添加 MIU mask 和 MIU 复位流程,确保复位操作的安全性和可靠性
【涉及修改】
mi_gfx.ko
7 支持 GOP ABGR 格式 UV 交换 【原因分析】:GOP 模块需要支持 ABGR 像素格式下的 UV 交换功能,以满足不同的图像处理需求
【涉及修改】
mi_rgn.ko
8 支持 HDMITX 读取默认驱动级别 【原因分析】:客户需求,需要支持通过 cat 命令读取 HDMI 默认驱动级别。修改为从寄存器值读取而非上次 echo 值
【涉及修改】
mi_hdmi.ko
9 支持 VDEC 多端口 HAL 输出信息 【原因分析】:MI 层需要获取不同端口的 HAL disp 输出信息,但当前只能获取 Port 0 的信息。基于 MI_VDEC_MAX_HW_PORT_NUM 定义 DecRet disp info
【涉及修改】
mi_vdec.ko
10 支持 IPU 设置 AXI 模式 【原因分析】:IPU 需要支持配置 AXI 总线传输模式,以优化数据传输性能
【涉及修改】
mi_ipu.ko
libipu.so
project/release/include/mi_ipu_datatype.h
mi_ipu_internal_datatype.h
mi_ipu_internal_datatype_common.h
11 支持 HDMITX DRM 模式配置 【原因分析】:为支持 DRM 显示框架,需要修改 HDMI TX 的 config.mk 配置
【涉及修改】
mi_hdmi.ko
libhdmi.so
需配合 DRM 框架使用
12 新增 Crypto SHA/RSA/AES 示例 【原因分析】:为用户提供加密算法示例代码,包括 SHA 哈希、RSA 非对称加密和 AES 对称加密
【涉及修改】
mi_sys.ko
project/release/include/mi_sys_internal.h

1.5. Project 变更日志

1.5.1. 对前个版本不足之处的改进

ID. 问题描述 详细描述 注意事项
1 修正 LPDDR4 内存类型描述 【原因分析】:原描述为 LPDDR4 但实际应为 LPDDR4X,需要更正内存类型描述
【涉及修改】
configs/demo/defconfigs/nvr_mhera.*.defconfig
configs/verify/defconfigs/nvr_mhera.*.defconfig
2 修复编译 debug kernel 时错误处理 【原因分析】:编译 debug kernel 时的错误处理逻辑不正确,需要修改
【涉及修改】
kbuild/kbuild.mk

1.5.2. 对前个版本新增功能特性

ID. 简要描述 详细描述 注意事项
1 新增 SSM004A-S02A 2G DDR 板级配置 【原因分析】:新增 SSM004A-S02A 2G DDR 方案的 defconfig 配置,支持 2GB 内存方案
【涉及修改】
configs/demo/defconfigs/ubuntu_mhera.emmc.glibc-12.4.0-arm64-ext4.ssm004a.s02a.2048.fccsp16_lpddr4x_defconfig
仅适用于 SSM004A-S02A 2G DDR 方案
2 新增 Ubuntu rootfs 支持 【原因分析】:为支持 Ubuntu ROS2 和 Docker,新增 Ubuntu rootfs 选项并适配 alkaid 构建系统
【涉及修改】
configs/Kconfigs/customer/*/Kconfig
image/configs/general/emmc_ubuntu.ext4fs.tfa.dualenv.partition.config
image/packaging/common/rootfs_ubuntu.mk
需配合 Ubuntu rootfs 镜像使用
3 新增 FFmpeg 编译类型配置 【原因分析】:新增 FFmpeg 编译类型配置选项,支持按需选择 FFmpeg 编译方式
【涉及修改】
configs/Kconfigs/customer/sdk/verify/Kconfig
configs/Kconfigs/customer/sdk/verify/common/Kconfig
4 新增 SD 升级 TFA 配置 【原因分析】:BSP 场景测试编译缺少 SD_UPGRADE_TFA_CONFIG 导致编译失败
【涉及修改】
configs/verify/defconfigs/nvr_mhera.*.defconfig

1.6. OPTEE 变更日志

1.6.1. 对前个版本不足之处的改进

ID. 问题描述 详细描述 注意事项
1 修复 OPTEE 内存分配不足问题 【原因分析】:OPTEE 加载 ELF 二进制时出现 TEE_ERROR_OUT_OF_MEMORY 错误(错误码 0xffff000c),需要调整内存分配策略
【涉及修改】
core/arch/arm/plat-mhera/platform_config.h

1.6.2. 对前个版本新增功能特性

ID. 简要描述 详细描述 注意事项
1 新增 OPTEE 单元测试分离脚本 【原因分析】:新增脚本支持逐个运行 OPTEE 单元测试,方便独立验证各测试项
【涉及修改】
sgs/ut/app/test_tz_ut.sh

2. 接口变更说明

2.1. 接口变更

2.1.1. IPU 序列化读取回调函数参数类型变更(mi_ipu_datatype.h)

变更前:

typedef int (*SerializedReadFunc)(void *dst_buf, int offset, int size, char *ctx);

变更后:

typedef int (*SerializedReadFunc)(void *dst_buf, signed long long offset, unsigned long long size, char *ctx);

变更说明:offset 参数由 int 改为 signed long long,size 参数由 int 改为 unsigned long long,以支持大于 2GB 的模型文件读取场景。


2.1.2. STransformers GenerationConfig 结构体 EOS Token 扩展(sgs_algo_datatype.h)

变更前:

#define MAX_POINT_NUM 32

typedef struct GenerationConfig
{
    ...
    int eos_token_id;
    ...
} GenerationConfig_t;

变更后:

#define MAX_POINT_NUM 32
#define MAX_EOS_NUM 16

typedef struct GenerationConfig
{
    ...
    int eos_token_id[MAX_EOS_NUM];
    int eos_num;
    ...
} GenerationConfig_t;

变更说明:eos_token_id 从单个 int 扩展为最多 16 个元素的 int 数组,新增 eos_num 字段记录实际 EOS token 数量,支持多 EOS token 的生成式模型。


2.1.3. STransformers STSInput_t 多角色对话参数变更(sgs_sts_api.h)

变更前:

typedef struct
{
    ...
    MI_U8 role[MAX_INPUT_NUM];
    MI_U8 prompt[MAX_INPUT_NUM];
    ...
} STSInput_t;

变更后:

#define MAX_ROLE_NUM 4

typedef struct
{
    ...
    MI_U8 role[MAX_ROLE_NUM][MAX_INPUT_NUM];
    MI_U8 prompt[MAX_ROLE_NUM][MAX_INPUT_NUM];
    MI_U8 role_prompt_num;
    ...
} STSInput_t;

变更说明:role 和 prompt 从一维数组扩展为二维数组,支持最多 4 个角色的多轮对话场景,新增 role_prompt_num 字段记录实际角色数量。


2.2. 新增接口

2.2.1. STransformers 回调注册接口(sgs_sts_api.h)

新增类型定义:

#define MAX_ROLE_NUM 4

typedef void (*TokenizerCallBack)(char* text, int32_t* tokens, uint64_t num_tokens);
typedef void (*ModelCallBack)(void* tensor, int tensor_size, uint32_t* tensor_shape,
                              int tensor_dims, MI_IPU_ELEMENT_FORMAT format,
                              char* model_name, char* layer_name);

typedef struct
{
    TokenizerCallBack tokenizer_callback;
    ModelCallBack     model_callback;
} STSCallBack;

新增接口:

MI_S32 ALGO_STS_CallBack(STSHandle handle, STSCallBack callback);

接口说明:注册 Tokenizer 和 Model 回调函数,用于在推理过程中获取分词结果和中间层张量信息。


2.2.2. STransformers 推理中止接口(sgs_sts_api.h)

新增接口:

MI_S32 ALGO_STS_Abort(STSHandle handle);

接口说明:中止当前正在进行的推理任务,支持动态取消长时间运行的生成请求。


3. 遗留问题列表

ID. 简要描述 详情 备注
1

4. 文档修改记录

4.1. SDK模块API

MI AI API

ID.
Revision History
1
  • Initial release
  • MI AO API

    ID.
    Revision History
    1
  • Initial release
  • MI DISP API

    ID.
    Revision History
    1
  • Initial release
  • MI DPU API

    ID.
    Revision History
    1
  • Initial release
  • MI FB API

    ID.
    Revision History
    1
  • Initial release
  • MI IPU API

    ID.
    Revision History
    1
  • Initial release
  • 2
  • Modify 'SerializedReadFunc' callback type definition: change 'offset' parameter from 'int' to 'signed long long', 'size' parameter from 'int' to 'unsigned long long'
  • MI IQSERVER API

    ID.
    Revision History
    1
  • Initial release
  • MI ISP API

    ID.
    Revision History
    1
  • Initial release
  • MI AI ISP API

    ID.
    Revision History
    1
  • Initial release
  • MI IVE API

    ID.
    Revision History
    1
  • Initial release
  • MI JPD API

    ID.
    Revision History
    1
  • Initial release
  • MI LDC API

    ID.
    Revision History
    1
  • Initial release
  • MI RGN API

    ID.
    Revision History
    1
  • Initial release
  • MI SCL API

    ID.
    Revision History
    1
  • Initial release
  • MI SENSOR API

    ID.
    Revision History
    1
  • Initial release
  • MI SYS API

    ID.
    Revision History
    1
  • Initial release
  • 2
  • Add memAllocAlignSize
  • MI VDEC API

    ID.
    Revision History
    1
  • Initial release
  • MI VDF API

    ID.
    Revision History
    1
  • Initial release
  • MI VDISP API

    ID.
    Revision History
    1
  • Initial release
  • MI VENC API

    ID.
    Revision History
    1
  • Initial release
  • MI VIF API

    ID.
    Revision History
    1
  • Initial release
  • MI VGE API

    ID.
    Revision History
    1
  • Initial release
  • 4.2. BSP开发参考

    ADCLP使用参考

    ID.
    Revision History
    1
  • Initial release
  • ADCLP UBOOT使用参考

    ID.
    Revision History
    1
  • Initial release
  • Audio使用参考

    ID.
    Revision History
    1
  • Initial release
  • cipher使用参考

    ID.
    Revision History
    1
  • Initial release
  • cipher uboot使用参考

    ID.
    Revision History
    1
  • Initial release
  • eMMC使用参考

    ID.
    Revision History
    1
  • Initial release
  • eMMC支持列表

    ID.
    Revision History
    1
  • Initial release
  • Flash支持列表

    ID.
    Revision History
    1
  • Initial release
  • Flash List新增Flash SOP

    ID.
    Revision History
    1
  • Initial release
  • SDMMC使用参考

    ID.
    Revision History
    1
  • Initial release
  • SD EMMC Stress Test SOP

    ID.
    Revision History
    1
  • Initial release
  • GPIO使用参考

    ID.
    Revision History
    1
  • Initial release
  • GPIO UBOOT使用参考

    ID.
    Revision History
    1
  • Initial release
  • I2C使用参考

    ID.
    Revision History
    1
  • Initial release
  • I2C UBOOT使用参考

    ID.
    Revision History
    1
  • Initial release
  • IR使用参考

    ID.
    Revision History
    1
  • Initial release
  • MIU API

    ID.
    Revision History
    1
  • Initial release
  • GMAC网口使用指南

    ID.
    Revision History
    1
  • Initial release
  • PWM使用参考

    ID.
    Revision History
    1
  • Initial release
  • PWM UBOOT使用参考

    ID.
    Revision History
    1
  • Initial release
  • 寄存器使用参考

    ID.
    Revision History
    1
  • Initial release
  • SENSOR使用参考

    ID.
    Revision History
    1
  • Initial release
  • Camera Sensor支持列表

    ID.
    Revision History
    1
  • Initial release
  • SPI UBOOT使用参考

    ID.
    Revision History
    1
  • Initial release
  • SPI使用参考

    ID.
    Revision History
    1
  • Initial release
  • RTC使用参考

    ID.
    Revision History
    1
  • Initial release
  • Timer使用参考

    ID.
    Revision History
    1
  • Initial release
  • Timer寄存器说明

    ID.
    Revision History
    1
  • Initial release
  • UART使用参考

    ID.
    Revision History
    1
  • Initial release
  • USB使用参考

    ID.
    Revision History
    1
  • Initial release
  • Watchdog UBOOT使用参考

    ID.
    Revision History
    1
  • Initial release
  • Watchdog使用参考

    ID.
    Revision History
    1
  • Initial release
  • XZDEC使用参考

    ID.
    Revision History
    1
  • Initial release
  • Camera涉硬参数调整指南

    ID.
    Revision History
    1
  • Initial release
  • 4.3. 图像开发参考

    ISP软件开发参考

    ID.
    Revision History
    1
  • 新增3A defog算法以及defog info api
  • ISP API Tuning SOP

    ID.
    Revision History
    1
  • Initial release
  • ISP HDR Tuning Guide

    ID.
    Revision History
    1
  • Initial release
  • AE/AWB/AF Interface

    ID.
    Revision History
    1
  • Initial release
  • Bootlogo使用指南

    ID.
    Revision History
    1
  • Initial release
  • Sensor移植指南

    ID.
    Revision History
    1
  • Initial release
  • 4.4. IPU算法

    属性识别算法说明

    ID.
    Revision History
    1
  • Initial release
  • 检测算法

    ID.
    Revision History
    1
  • Initial release
  • 检测跟踪算法说明

    ID.
    Revision History
    1
  • Initial release
  • 人脸识别算法

    ID.
    Revision History
    1
  • Initial release
  • 人像分割算法

    ID.
    Revision History
    1
  • Initial release
  • 车牌识别算法说明

    ID.
    Revision History
    1
  • Initial release
  • CCD SDK API

    ID.
    Revision History
    1
  • Initial release
  • FC SDK API

    ID.
    Revision History
    1
  • Initial release
  • SAM万物分割算法说明

    ID.
    Revision History
    1
  • Initial release
  • 物品遗留和消失检测算法说明

    ID.
    Revision History
    1
  • Initial release
  • 4.5. Audio算法

    KWS算法使用参考

    ID.
    Revision History
    1
  • Initial release
  • MIX算法使用参考

    ID.
    Revision History
    1
  • Initial release
  • SED算法使用参考

    ID.
    Revision History
    1
  • Initial release
  • VAD算法使用参考

    ID.
    Revision History
    1
  • Initial release
  • AEC

    ID.
    Revision History
    1
  • Initial release
  • APC

    ID.
    Revision History
    1
  • Initial release
  • BF

    ID.
    Revision History
    1
  • Initial release
  • SRC

    ID.
    Revision History
    1
  • Initial release
  • SSL

    ID.
    Revision History
    1
  • Initial release
  • 4.6. Audio调试

    SGS音频调试手册

    ID.
    Revision History
    1
  • Initial release
  • 4.7. CV使用手册

    CV FineTune User Guide

    ID.
    Revision History
    1
  • Initial release
  • CV FINETUNE API

    ID.
    Revision History
    1
  • Initial release
  • 相机拼接用户手册

    ID.
    Revision History
    1
  • Initial release
  • LDC用户指南

    ID.
    Revision History
    1
  • Initial release
  • IS用户指南

    ID.
    Revision History
    1
  • Initial release
  • 4.8. 应用开发参考

    OTA打包和升级

    ID.
    Revision History
    1
  • Initial release
  • UVC使用指南

    ID.
    Revision History
    1
  • Initial release
  • alkaid defconfig详解

    ID.
    Revision History
    1
  • Initial release
  • Security Boot使用参考

    ID.
    Revision History
    1
  • Initial release
  • Security Boot手动签章使用参考

    ID.
    Revision History
    1
  • Initial release
  • 功耗调整指引

    ID.
    Revision History
    1
  • Initial release
  • 启动流程

    ID.
    Revision History
    1
  • Initial release
  • 系统分区

    ID.
    Revision History
    1
  • Initial release