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_defconfiginclude/configs/mhera.hoptee: 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.csdk: mi_disp.ko |
bootlogo 与 kernel 使用不同显示接口时需验证 |
| 4 | 修复 DMABUF_HEAPS 配置项位置错误 | 【原因分析】:CONFIG_DMABUF_HEAPS=y 配置项在 make savedefconfig 时位置不正确,导致 sgs_common 构建触发 savedefconfig 检查但 kernel 构建不触发 【涉及修改】 kernel: arch/arm/configs/mhera_*.defconfigarch/arm64/configs/mhera_*.defconfigproject: 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_defconfigproject: configs/Kconfigs/customer/*/Kconfigimage/configs/general/emmc_ubuntu.ext4fs.tfa.dualenv.partition.configimage/packaging/common/rootfs_ubuntu.mk |
需配合 Ubuntu rootfs 使用 |
| 2 | 支持 ALSA 和 MI 音频双架构共存 | 【原因分析】:音频代码需要同时支持 ALSA 和 MI 两种架构,以满足不同应用场景需求。调整 I2S 配置以支持双架构、修复 DMA 处理逻辑、增强音频 HAL 模块 【涉及修改】 kernel: sound/soc/sgs/arch/arm/boot/dts/mhera.dtsiarch/arm64/boot/dts/sgs/mhera.dtsisdk: 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_*.defconfigarch/arm64/configs/mhera_*.defconfigarch/arm/boot/dts/mhera.dtsiarch/arm64/boot/dts/sgs/mhera.dtsiproject: 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.dtsiarch/arm64/boot/dts/sgs/mhera.dtsisdk: mi_ipu.koproject/release/include/mi_ipu_macro.h |
无 |
| 5 | 支持 DRM 显示框架 | 【原因分析】:Ubuntu 系统需要 DRM 框架支持,部分 DRM 配置无法在 defconfig 中启用,需通过 cam_sysfs 接口在运行时配置 【涉及修改】 kernel: drivers/sgs_common/cam_sysfs/cam_sysfs.cdrivers/sgs_common/drm/Kconfigdrivers/sgs_common/include/cam_sysfs.hproject: configs/Kconfigs/customer/sdk/Kconfig |
需配合 Ubuntu rootfs 使用 |
| 6 | 支持 Secure Boot 多分区 dm-verity | 【原因分析】:安全启动需要支持对多个分区启用 dm-verity 校验,同时修复 xz 压缩的 U-Boot 打包失败问题,并支持将公钥插入 U-Boot 镜像 【涉及修改】 boot: cmd/sgs/Makefilecmd/sgs/sigauth.cdrivers/sgs/disk/part_emmc.cinclude/ipl.hproject: image/security_boot_tools/ |
使用安全启动方案的客户需验证 |
| 7 | 支持 PZ1 调试环境 | 【原因分析】:需要在 bringup 分支上支持 PZ1 调试环境,以便调试硬件问题。调整 PZ1 的 DTS/DTSI 和 defconfig 修复编译错误和内核启动挂死 【涉及修改】 kernel: arch/arm/boot/dts/mhera-pz1.dtsarch/arm/boot/dts/mhera-pz1.dtsiarch/arm64/boot/dts/sgs/mhera-pz1.dtsarch/arm64/boot/dts/sgs/mhera-pz1.dtsiproject: 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.cdrivers/sgs/usb/gadget/udc/usb20/msb250x_udc.cdrivers/usb/gadget/f_fastboot.cinclude/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_defconfiginclude/configs/mhera.h |
使用 OPTEE 方案的 NAND Flash 产品需验证 |
1.2.2. 对前个版本新增功能特性¶
| ID. | 简要描述 | 详细描述 | 注意事项 |
|---|---|---|---|
| 1 | 支持 Fastboot USB 升级 | 【原因分析】:estar 升级速度太慢,需要支持 fastboot USB 升级方式以提升固件更新效率 【涉及修改】 configs/mhera_ssm004a_s02a_emmc_arm64_defconfigdrivers/fastboot/Kconfig |
无 |
| 2 | 支持 USB UFU 升级命令 | 【原因分析】:需要支持 USB UFU(USB Firmware Update)升级方式,为固件更新提供更多选项 【涉及修改】 configs/mhera_*_optee_defconfigconfigs/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.cdrivers/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.carch/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.hdrivers/hid/hid-quirks.c |
无 |
| 11 | DTB/UNFDT 超大时停止编译 | 【原因分析】:当 DTB 或 UNFDT 超过最大大小时,之前仅打印警告信息并继续编译,可能导致难以调试的运行时错误 【涉及修改】 arch/arm/boot/Makefilearch/arm64/boot/Makefilescripts/sgs/builtin_dtb_update.pyscripts/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.shscripts/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.hdrivers/sgs_common/rpmsg/ss_rpmsg.c |
使用 RPMsg 的应用层需适配新 API |
| 2 | 支持 PCIE 回环基准测试 | 【原因分析】:需要支持 PCIE 回环(loopback)基准测试以验证 PCIE 链路的传输性能和稳定性,同时将 sgs mac_init 抽取到 hal_pci.c(.h) 以确保不同芯片的兼容性 【涉及修改】 drivers/sgs_common/pcie/Makefiledrivers/sgs_common/pcie/drv/drv_pcie.cdrivers/sgs_common/pcie/hal/mhera/pcie_hal.cdrivers/sgs_common/pcie/verify/rc/pci_endpoint_test.c |
无 |
| 3 | 支持 PCIE 测试指定传输大小 | 【原因分析】:pcitest 工具需要支持以 MB 和 KB 为单位指定测试传输大小,方便进行不同规模的吞吐量测试 【涉及修改】 tools/pci/pcitest.carch/arm/boot/dts/mhera.dtsiarch/arm64/boot/dts/sgs/mhera.dtsi |
无 |
| 4 | 支持 TrustZone 单元测试 | 【原因分析】:需要在 mHera 平台上支持 TrustZone 单元测试,验证安全世界功能 【涉及修改】 arch/arm/boot/dts/mhera.dtsiarch/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.kolibvdec.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.kolibipu.soproject/release/include/mi_ipu_pcie_internal_datatype.h |
无 |
| 20 | 优化 MOP 行缓冲排序算法 | 【原因分析】:将 gwin 行缓冲排序从 O(n²) 插入排序优化为 O(n log n) 快速排序,增加互斥保护和脏标记跳过不必要重算,新增 procfs lbconfig 入口用于调试【涉及修改】 mi_disp.komi_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.kolibshadow.so (已删除) |
无 |
1.4.2. 对前个版本新增功能特性¶
| ID. | 简要描述 | 详细描述 | 注意事项 |
|---|---|---|---|
| 1 | 支持 IPU 级联 API 多线程多进程 | 【原因分析】:IPU 级联 API 在多线程和多进程环境下需要支持并发访问,以满足复杂 AI 推理场景需求 【涉及修改】 libipu.soproject/release/include/ipu_rpmsg.hmi_ipu_pcie_internal.h |
无 |
| 2 | 支持 IPU 心跳检测功能 | 【原因分析】:IPU EP 端服务进程需要支持优雅退出和资源清理,同时支持心跳检测以监控通信状态 【涉及修改】 mi_ipu.kolibipu.soproject/release/include/ipu_rpmsg.hmi_ipu_pcie_internal.hmi_ipu_pcie_internal_datatype.h |
无 |
| 3 | 支持 IPU PCIE DMA 链表模式 | 【原因分析】:IPU 通过 PCIE 进行数据传输时,使用 DMA 链表模式可以显著提升传输效率 【涉及修改】 mi_ipu.kolibipu.soproject/release/include/mi_ipu_pcie_internal.hmi_ipu_pcie_internal_datatype.hmi_ipu_pcie_log_ctrl.h |
无 |
| 4 | 支持 IPU 远程输入缓冲区查询和设置 | 【原因分析】:IPU 需要支持查询、设置和获取远程输入缓冲区,以满足级联推理场景的数据交互需求 【涉及修改】 libipu.soproject/release/include/ipu_rpmsg.hmi_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.kolibipu.soproject/release/include/mi_ipu_datatype.hmi_ipu_internal_datatype.hmi_ipu_internal_datatype_common.h |
无 |
| 11 | 支持 HDMITX DRM 模式配置 | 【原因分析】:为支持 DRM 显示框架,需要修改 HDMI TX 的 config.mk 配置 【涉及修改】 mi_hdmi.kolibhdmi.so |
需配合 DRM 框架使用 |
| 12 | 新增 Crypto SHA/RSA/AES 示例 | 【原因分析】:为用户提供加密算法示例代码,包括 SHA 哈希、RSA 非对称加密和 AES 对称加密 【涉及修改】 mi_sys.koproject/release/include/mi_sys_internal.h |
无 |
1.5. Project 变更日志¶
1.5.1. 对前个版本不足之处的改进¶
| ID. | 问题描述 | 详细描述 | 注意事项 |
|---|---|---|---|
| 1 | 修正 LPDDR4 内存类型描述 | 【原因分析】:原描述为 LPDDR4 但实际应为 LPDDR4X,需要更正内存类型描述 【涉及修改】 configs/demo/defconfigs/nvr_mhera.*.defconfigconfigs/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/*/Kconfigimage/configs/general/emmc_ubuntu.ext4fs.tfa.dualenv.partition.configimage/packaging/common/rootfs_ubuntu.mk |
需配合 Ubuntu rootfs 镜像使用 |
| 3 | 新增 FFmpeg 编译类型配置 | 【原因分析】:新增 FFmpeg 编译类型配置选项,支持按需选择 FFmpeg 编译方式 【涉及修改】 configs/Kconfigs/customer/sdk/verify/Kconfigconfigs/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, 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)¶
变更前:
变更后:
#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;
新增接口:
接口说明:注册 Tokenizer 和 Model 回调函数,用于在推理过程中获取分词结果和中间层张量信息。
2.2.2. STransformers 推理中止接口(sgs_sts_api.h)¶
新增接口:
接口说明:中止当前正在进行的推理任务,支持动态取消长时间运行的生成请求。
3. 遗留问题列表¶
| ID. | 简要描述 | 详情 | 备注 |
|---|---|---|---|
| 1 | 无 | 无 | 无 |
4. 文档修改记录¶
4.1. SDK模块API¶
MI AI API
| ID. | Revision History |
|---|---|
| 1 |
MI AO API
| ID. | Revision History |
|---|---|
| 1 |
MI DISP API
| ID. | Revision History |
|---|---|
| 1 |
MI DPU API
| ID. | Revision History |
|---|---|
| 1 |
MI FB API
| ID. | Revision History |
|---|---|
| 1 |
MI IPU API
| ID. | Revision History |
|---|---|
| 1 | |
| 2 |
MI IQSERVER API
| ID. | Revision History |
|---|---|
| 1 |
MI ISP API
| ID. | Revision History |
|---|---|
| 1 |
MI AI ISP API
| ID. | Revision History |
|---|---|
| 1 |
MI IVE API
| ID. | Revision History |
|---|---|
| 1 |
MI JPD API
| ID. | Revision History |
|---|---|
| 1 |
MI LDC API
| ID. | Revision History |
|---|---|
| 1 |
MI RGN API
| ID. | Revision History |
|---|---|
| 1 |
MI SCL API
| ID. | Revision History |
|---|---|
| 1 |
MI SENSOR API
| ID. | Revision History |
|---|---|
| 1 |
MI SYS API
| ID. | Revision History |
|---|---|
| 1 | |
| 2 |
MI VDEC API
| ID. | Revision History |
|---|---|
| 1 |
MI VDF API
| ID. | Revision History |
|---|---|
| 1 |
MI VDISP API
| ID. | Revision History |
|---|---|
| 1 |
MI VENC API
| ID. | Revision History |
|---|---|
| 1 |
MI VIF API
| ID. | Revision History |
|---|---|
| 1 |
MI VGE API
| ID. | Revision History |
|---|---|
| 1 |
4.2. BSP开发参考¶
ADCLP使用参考
| ID. | Revision History |
|---|---|
| 1 |
ADCLP UBOOT使用参考
| ID. | Revision History |
|---|---|
| 1 |
Audio使用参考
| ID. | Revision History |
|---|---|
| 1 |
cipher使用参考
| ID. | Revision History |
|---|---|
| 1 |
cipher uboot使用参考
| ID. | Revision History |
|---|---|
| 1 |
eMMC使用参考
| ID. | Revision History |
|---|---|
| 1 |
eMMC支持列表
| ID. | Revision History |
|---|---|
| 1 |
Flash支持列表
| ID. | Revision History |
|---|---|
| 1 |
Flash List新增Flash SOP
| ID. | Revision History |
|---|---|
| 1 |
SDMMC使用参考
| ID. | Revision History |
|---|---|
| 1 |
SD EMMC Stress Test SOP
| ID. | Revision History |
|---|---|
| 1 |
GPIO使用参考
| ID. | Revision History |
|---|---|
| 1 |
GPIO UBOOT使用参考
| ID. | Revision History |
|---|---|
| 1 |
I2C使用参考
| ID. | Revision History |
|---|---|
| 1 |
I2C UBOOT使用参考
| ID. | Revision History |
|---|---|
| 1 |
IR使用参考
| ID. | Revision History |
|---|---|
| 1 |
MIU API
| ID. | Revision History |
|---|---|
| 1 |
GMAC网口使用指南
| ID. | Revision History |
|---|---|
| 1 |
PWM使用参考
| ID. | Revision History |
|---|---|
| 1 |
PWM UBOOT使用参考
| ID. | Revision History |
|---|---|
| 1 |
寄存器使用参考
| ID. | Revision History |
|---|---|
| 1 |
SENSOR使用参考
| ID. | Revision History |
|---|---|
| 1 |
Camera Sensor支持列表
| ID. | Revision History |
|---|---|
| 1 |
SPI UBOOT使用参考
| ID. | Revision History |
|---|---|
| 1 |
SPI使用参考
| ID. | Revision History |
|---|---|
| 1 |
RTC使用参考
| ID. | Revision History |
|---|---|
| 1 |
Timer使用参考
| ID. | Revision History |
|---|---|
| 1 |
Timer寄存器说明
| ID. | Revision History |
|---|---|
| 1 |
UART使用参考
| ID. | Revision History |
|---|---|
| 1 |
USB使用参考
| ID. | Revision History |
|---|---|
| 1 |
Watchdog UBOOT使用参考
| ID. | Revision History |
|---|---|
| 1 |
Watchdog使用参考
| ID. | Revision History |
|---|---|
| 1 |
XZDEC使用参考
| ID. | Revision History |
|---|---|
| 1 |
Camera涉硬参数调整指南
| ID. | Revision History |
|---|---|
| 1 |
4.3. 图像开发参考¶
ISP软件开发参考
| ID. | Revision History |
|---|---|
| 1 |
ISP API Tuning SOP
| ID. | Revision History |
|---|---|
| 1 |
ISP HDR Tuning Guide
| ID. | Revision History |
|---|---|
| 1 |
AE/AWB/AF Interface
| ID. | Revision History |
|---|---|
| 1 |
Bootlogo使用指南
| ID. | Revision History |
|---|---|
| 1 |
Sensor移植指南
| ID. | Revision History |
|---|---|
| 1 |
4.4. IPU算法¶
属性识别算法说明
| ID. | Revision History |
|---|---|
| 1 |
检测算法
| ID. | Revision History |
|---|---|
| 1 |
检测跟踪算法说明
| ID. | Revision History |
|---|---|
| 1 |
人脸识别算法
| ID. | Revision History |
|---|---|
| 1 |
人像分割算法
| ID. | Revision History |
|---|---|
| 1 |
车牌识别算法说明
| ID. | Revision History |
|---|---|
| 1 |
CCD SDK API
| ID. | Revision History |
|---|---|
| 1 |
FC SDK API
| ID. | Revision History |
|---|---|
| 1 |
SAM万物分割算法说明
| ID. | Revision History |
|---|---|
| 1 |
物品遗留和消失检测算法说明
| ID. | Revision History |
|---|---|
| 1 |
4.5. Audio算法¶
KWS算法使用参考
| ID. | Revision History |
|---|---|
| 1 |
MIX算法使用参考
| ID. | Revision History |
|---|---|
| 1 |
SED算法使用参考
| ID. | Revision History |
|---|---|
| 1 |
VAD算法使用参考
| ID. | Revision History |
|---|---|
| 1 |
AEC
| ID. | Revision History |
|---|---|
| 1 |
APC
| ID. | Revision History |
|---|---|
| 1 |
BF
| ID. | Revision History |
|---|---|
| 1 |
SRC
| ID. | Revision History |
|---|---|
| 1 |
SSL
| ID. | Revision History |
|---|---|
| 1 |
4.6. Audio调试¶
SGS音频调试手册
| ID. | Revision History |
|---|---|
| 1 |
4.7. CV使用手册¶
CV FineTune User Guide
| ID. | Revision History |
|---|---|
| 1 |
CV FINETUNE API
| ID. | Revision History |
|---|---|
| 1 |
相机拼接用户手册
| ID. | Revision History |
|---|---|
| 1 |
LDC用户指南
| ID. | Revision History |
|---|---|
| 1 |
IS用户指南
| ID. | Revision History |
|---|---|
| 1 |
4.8. 应用开发参考¶
OTA打包和升级
| ID. | Revision History |
|---|---|
| 1 |
UVC使用指南
| ID. | Revision History |
|---|---|
| 1 |
alkaid defconfig详解
| ID. | Revision History |
|---|---|
| 1 |
Security Boot使用参考
| ID. | Revision History |
|---|---|
| 1 |
Security Boot手动签章使用参考
| ID. | Revision History |
|---|---|
| 1 |
功耗调整指引
| ID. | Revision History |
|---|---|
| 1 |
启动流程
| ID. | Revision History |
|---|---|
| 1 |
系统分区
| ID. | Revision History |
|---|---|
| 1 |