mHera_NLSSV01C11 Release Note¶
1. Version Changes¶
1.1. Multi-module Feature Changes¶
1.1.1. Improvements to Previous Version Issues¶
| ID. | Issue Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Optimize the display clock architecture to reduce power consumption | [Analysis] The display module enabled all clocks as soon as the first device was created and disabled them all when shutting down, causing unnecessary power waste. In addition, some internal gp_ctrl clocks in the display controller were enabled but never disabled, which also increased power consumption.[Modifications] boot: drivers/sgs/camdriver/disp/sdk: mi_disp.ko |
None |
| 2 | Fix insufficient OPTEE memory error | [Analysis] TEE_ERROR_OUT_OF_MEMORY (error code 0xffff000c) occurred when OPTEE loaded ELF files, preventing secure-world applications from starting properly.[Modifications] boot: configs/mhera_ssm004a_s01a_spinand_optee_defconfiginclude/configs/mhera.hoptee: core/arch/arm/plat-mhera/platform_config.h |
Validate TrustZone functionality when the OPTEE solution is enabled |
| 3 | Fix abnormal HDMI-VGA display when switching display interfaces | [Analysis] When the bootlogo uses one display interface and the kernel uses a different one, the gp_ctrl configuration is not triggered, so the panel cannot be initialized correctly.[Modifications] boot: drivers/sgs/camdriver/disp/hal_common/mhera/hal_disp_outpath_if.csdk: mi_disp.ko |
Validate scenarios where the bootlogo and kernel use different display interfaces |
| 4 | Fix incorrect placement of the DMABUF_HEAPS configuration item |
[Analysis] The CONFIG_DMABUF_HEAPS=y option was placed incorrectly during make savedefconfig, causing sgs_common builds to trigger the savedefconfig check while kernel builds did not.[Modifications] kernel: arch/arm/configs/mhera_*.defconfigarch/arm64/configs/mhera_*.defconfigproject: configs/generic/defconfigs/mhera_sdk_generic_defconfig |
None |
1.1.2. New Features Added to Previous Version¶
| ID. | Brief Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Support Ubuntu-based ROS2 and Docker containers | [Analysis] Ubuntu support is required on the mHera platform to enable ROS2 robotics workloads and Docker-based container deployment. [Modifications] 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 |
Must be used together with the Ubuntu rootfs |
| 2 | Support coexistence of ALSA and MI audio architectures | [Analysis] The audio implementation must support both ALSA and MI architectures to satisfy different application scenarios. This update adjusts I2S settings for dual-architecture support, fixes DMA handling logic, and enhances the audio HAL module. [Modifications] kernel: sound/soc/sgs/arch/arm/boot/dts/mhera.dtsiarch/arm64/boot/dts/sgs/mhera.dtsisdk: mi_aio.ko |
None |
| 3 | Support CPU DVFS frequency and voltage scaling | [Analysis] CPU frequency and voltage need to be adjusted dynamically based on workload to optimize power consumption. This update enables CONFIG_SGS_CPU_FREQ and CONFIG_SGS_VOLTAGE_IDAC by default, uses GOV_USERSPACE as the default governor, and updates the OPP table plus the SIDD/ROSC thresholds.[Modifications] 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 |
The related options must be enabled in the defconfig |
| 4 | Support the IPU OPP table feature | [Analysis] The IPU (Intelligent Processing Unit) needs dynamic voltage and frequency scaling and must be able to select the optimal operating point based on workload. The OPP table data comes from IDAC table 2026_0309_SRAM_Release.xlsx.[Modifications] kernel: arch/arm/boot/dts/mhera.dtsiarch/arm64/boot/dts/sgs/mhera.dtsisdk: mi_ipu.koproject/release/include/mi_ipu_macro.h |
None |
| 5 | Support the DRM display framework | [Analysis] Ubuntu requires DRM framework support. Some DRM options cannot be enabled directly in the defconfig, so they must be configured at runtime through the cam_sysfs interface.[Modifications] kernel: drivers/sgs_common/cam_sysfs/cam_sysfs.cdrivers/sgs_common/drm/Kconfigdrivers/sgs_common/include/cam_sysfs.hproject: configs/Kconfigs/customer/sdk/Kconfig |
Must be used together with the Ubuntu rootfs |
| 6 | Support Secure Boot multi-partition dm-verity | [Analysis] Secure Boot must support dm-verity verification across multiple partitions. This update also fixes U-Boot packaging failures with xz compression and supports inserting the public key into the U-Boot image.[Modifications] boot: cmd/sgs/Makefilecmd/sgs/sigauth.cdrivers/sgs/disk/part_emmc.cinclude/ipl.hproject: image/security_boot_tools/ |
Customers using Secure Boot must validate this feature |
| 7 | Support the PZ1 debug environment | [Analysis] The bringup branch must support the PZ1 debug environment for hardware debugging. This update adjusts the PZ1 DTS/DTSI and defconfig files to fix build errors and kernel boot hangs. [Modifications] 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 |
For PZ1 debug environment only |
1.2. Boot Changelog¶
1.2.1. Improvements to Previous Version Issues¶
| ID. | Issue Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Improve USB Fastboot upgrade speed | [Analysis] Due to hardware limitations, DMA RX cannot be used directly. A special handling method is introduced: obtain the actual data length during the fastboot data stage, transfer the data in chunks of up to 4 KB, and ensure each chunk length is an integer multiple of maxpkt, so DMA RX can be used to improve throughput.[Modifications] cmd/sgs/ufu/f_firmware_update.cdrivers/sgs/usb/gadget/udc/usb20/msb250x_udc.cdrivers/usb/gadget/f_fastboot.cinclude/linux/usb/gadget.h |
None |
| 2 | Expand supported kernel image size to 48 MB | [Analysis] After enabling KASAN, the uncompressed kernel image can exceed 32 MB, while the original reserved kernel image space was only 30 MB ([0x20200000, 0x22000000)), preventing U-Boot from booting the kernel. With the default compression preset (level 6), the dictionary size is 8 MB, so there is no need to reserve 16 MB for the dictionary. Reducing the dictionary reservation expands the kernel image space to [0x20200000, 0x22800000).[Modifications] include/configs/mhera.h |
Affects debug builds with KASAN enabled only |
| 3 | Increase the rootfs script size limit to 40 KB | [Analysis] The rootfs script exceeded the original 20 KB limit, causing packaging failures. [Modifications] cmd/sgs/include/cmd_sgs_common.h |
None |
| 4 | Fix TZEMI interrupt triggered by OPTEE relocation | [Analysis] The U-Boot RAM base address conflicted with the TZEMI interrupt region. To avoid triggering the TZEMI interrupt, relocation must be disabled and the RAM size reduced to 118 MB. [Modifications] configs/mhera_ssm004a_s01a_spinand_optee_defconfiginclude/configs/mhera.h |
NAND Flash products using the OPTEE solution must be validated |
1.2.2. New Features Added to Previous Version¶
| ID. | Brief Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Support Fastboot USB upgrade | [Analysis] estar upgrades are too slow, so Fastboot-over-USB support is required to improve firmware update efficiency.[Modifications] configs/mhera_ssm004a_s02a_emmc_arm64_defconfigdrivers/fastboot/Kconfig |
None |
| 2 | Support the USB UFU upgrade command | [Analysis] USB UFU (USB Firmware Update) support is required to provide an additional firmware upgrade option. [Modifications] configs/mhera_*_optee_defconfigconfigs/mhera_ssm004a_s02a_*_defconfig |
None |
1.3. Kernel Changelog¶
1.3.1. Improvements to Previous Version Issues¶
| ID. | Issue Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Fix non-atomic PMD entry updates on ARM32 | [Analysis] The ARM architecture reference manual requires 64-bit page table descriptor reads and writes to be single-copy atomic. On 32-bit ARM, the kernel relies on the STRD instruction for this atomicity, but GCC 12.4.0 over-optimized copy_pmd() and broke the atomic guarantee by splitting the high and low words into two stores, causing strange prefetch aborts and data aborts.[Modifications] arch/arm/include/asm/pgtable-3level.h |
None |
| 2 | Fix insufficient diagnostics when MMA heap allocation fails | [Analysis] When MMA heap allocation failed, the system printed eight repeated error messages without meaningful diagnostics, making it difficult for users to identify the root cause or fix the relevant bootargs settings.[Modifications] drivers/sgs_common/mma_heap/mdrv_mma_heap.c |
None |
| 3 | Fix missing IRQ affinity deinitialization before GMAC IRQ release | [Analysis] Releasing the IRQ without first deinitializing IRQ affinity triggers kernel warnings. [Modifications] drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
None |
| 4 | Fix undefined tracepoint symbols when USB debug level is enabled | [Analysis] Calls to dwc3_readl/dwc3_writel in sgs-dwc3-of-simple.ko referenced tracepoint symbols from the dwc3 core module, but those symbols were not exported to the kernel symbol table. When CONFIG_TRACING=y was enabled, modpost reported undefined symbol errors.[Modifications] drivers/sgs_common/usb/dwc3/sgs-dwc3-debugfs.cdrivers/sgs_common/usb/dwc3/sgs_dwc3_of_simple.c |
None |
| 5 | Fix incorrect MIPI PAD padmux configuration | [Analysis] The IE (Input Enable) bit for the MIPI PAD was configured incorrectly, resulting in a wrong input-enable setting. [Modifications] drivers/sgs_common/gpio/hal/mhera/src/hal_pinmux.c |
None |
| 6 | Fix temperature sensor formula precision issues | [Analysis] The original temperature formula discarded the fractional part directly. It should round to the nearest integer for more accurate temperature readings. The formula was also updated to the new RD release: Ts = 0.74*(VBE_FT-VBE)+26.[Modifications] drivers/sgs_common/tsensor/hal/mhera/src/hal_tsensor.c |
Temperature readings may differ slightly from the previous version |
| 7 | Fix the MIU reset flow | [Analysis] MIU pipe reset and IP reset are part of the same sequence. The unmask operation should be placed after pipe reset starts and before MIU stop reset in the interval between them.[Modifications] drivers/sgs_common/miu/hal/mhera/src/hal_miu.c |
None |
| 8 | Fix data aborts caused by RIU space access with KASAN enabled | [Analysis] When __create_pgd_mapping() in arm64/mm/mmu.c created fixed virtual address mappings for GIC and RIU space, it used vmalloc space too early and did not establish shadow memory mappings for the RIU/GIC virtual ranges, causing data access exceptions with KASAN enabled.[Modifications] arch/arm64/mm/kasan_init.carch/arm64/mm/mmu.c |
Affects debug builds with KASAN enabled only |
| 9 | Fix incorrect TTBCR values on non-boot CPUs under ARM LPAE | [Analysis] When CONFIG_ARM_PV_FIXUP and ARM LPAE were both enabled, the comparison in v7_ttb_setup() failed on non-boot CPUs, causing them to use only TTBR0 instead of TTBR1 for kernel address space handling and resulting in unnecessary vmalloc page faults.[Modifications] arch/arm/mm/proc-v7-3level.S |
None |
| 10 | Sync USB HID quirks to fix mouse recognition issues | [Analysis] Some USB mouse models could not be recognized correctly. The required HID quirks fix was synchronized from the kernel 5.10 master branch. [Modifications] drivers/hid/hid-ids.hdrivers/hid/hid-quirks.c |
None |
| 11 | Stop the build when DTB/UNFDT is oversized | [Analysis] Previously, when a DTB or UNFDT exceeded the maximum allowed size, the build only emitted a warning and continued, which could lead to difficult-to-debug runtime failures. [Modifications] arch/arm/boot/Makefilearch/arm64/boot/Makefilescripts/sgs/builtin_dtb_update.pyscripts/sgs/builtin_unfdt_update.py |
None |
| 12 | Change the arm64 uImage entry address to 0x20100000 |
[Analysis] After KASAN was enabled, the kernel image grew significantly and overlapped with the IPL_CUST.ram address range [0x22420000-0x22430e90]. The arm64 uImage entry address was therefore changed from 0x20200000 to 0x20100000.[Modifications] project: kbuild/kbuild.mk |
Affects arm64 only |
| 13 | Remove sensitive strings from the kernel | [Analysis] ModifyDefconfig.sh and scripts/sgs/dtbo/README.md contained sensitive strings that needed to be cleaned up.[Modifications] ModifyDefconfig.shscripts/sgs/dtbo/README.md |
None |
1.3.2. New Features Added to Previous Version¶
| ID. | Brief Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Support RPMsg source-address retrieval and destination-address assignment | [Analysis] In the client-server model, the server has only one endpoint device, so it cannot distinguish source addresses from different clients or send responses to specific clients. This update adds the RPMSG_ENDPOINT_FLAG_INBAND_SRCADDR and RPMSG_ENDPOINT_FLAG_INBAND_DSTADDR flags. The first 4 bytes returned by read() contain the source address, and the first 4 bytes provided to write() specify the destination address.[Modifications] drivers/sgs_common/include/sgs_rpmsg.hdrivers/sgs_common/rpmsg/ss_rpmsg.c |
Applications using RPMsg must adapt to the new API |
| 2 | Support PCIe loopback benchmarking | [Analysis] PCIe loopback benchmark support is required to validate PCIe link performance and stability. The sgs mac_init logic was also moved into hal_pci.c(.h) to ensure compatibility across different chips.[Modifications] 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 |
None |
| 3 | Support specifying transfer size in PCIe tests | [Analysis] The pcitest tool must support specifying transfer sizes in MB and KB to enable throughput testing at different scales.[Modifications] tools/pci/pcitest.carch/arm/boot/dts/mhera.dtsiarch/arm64/boot/dts/sgs/mhera.dtsi |
None |
| 4 | Support TrustZone unit tests | [Analysis] TrustZone unit testing is required on the mHera platform to validate secure-world functionality. [Modifications] arch/arm/boot/dts/mhera.dtsiarch/arm64/boot/dts/sgs/mhera.dtsi |
None |
| 5 | Configure kernel options for ROS2 and Docker support | [Analysis] Ubuntu ROS2 and Docker containers require extensive kernel configuration support, including cgroups (for systemd/Docker), namespaces (for container isolation), network virtualization (for Docker networking), filesystems (overlayfs/Btrfs), and security features (SELinux/AppArmor). [Modifications] arch/arm64/configs/mhera_ubuntu_ssm004a_s02a_emmc_defconfig |
Must be used together with the Ubuntu rootfs |
1.4. SDK Changelog¶
1.4.1. Improvements to Previous Version Issues¶
| ID. | Issue Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Fix kernel crash caused by BUG_ON in the PASS callback |
[Analysis] When UnBindVideoLayer cleared apstInputChnRes[chnId] to NULL, unfinished tasks could still remain in the worker thread. In this legal race condition, BUG_ON caused a fatal kernel crash. The system should recover safely instead of crashing.[Modifications] mi_disp.ko |
None |
| 2 | Fix frame rate drop after VGA exits and re-enters while coexisting with other interfaces | [Analysis] When VGA is used together with another interface such as MIPI or HDMI and VGA exits first, the deinitialization sequence is incomplete, causing VGA to run at a lower frame rate when started again. In addition, MIPI APHY deinitialization did not perform a reset. [Modifications] mi_disp.ko |
None |
| 3 | Fix cross-initialization of display MOP channels | [Analysis] When one MOP channel was deinitialized and reinitialized, the global initialization-state tracking caused another MOP channel to be reinitialized incorrectly. In addition, the default clock for pixel_1 should switch to displpll1.[Modifications] mi_disp.ko |
None |
| 4 | Fix incorrect HDMI debug information output | [Analysis] The HDMITX debug log printed the wrong variable name. The seventh parameter should be u8DrvCurTap2Ch1, but the actual output used u8DrvCurTap1Ch1.[Modifications] mi_hdmi.ko |
None |
| 5 | Fix system hang caused by VDEC timeout | [Analysis] When VCD timed out and lsyc was enabled, lsyc could hang and vcmd could stop at the stall command, leaving the CPU without an interrupt and causing the system to hang.[Modifications] mi_vdec.kolibvdec.so |
None |
| 6 | Fix infinite loop in H265 WaitListNotInUse |
[Analysis] In the H265 flow, SeqInit waits indefinitely in WaitListNotInUse until all buffers are no longer in use. When handling a SeqChange error, HevcDecAbortAfter did not clear u32NRefCount to 0, causing an infinite wait.[Modifications] mi_vdec.ko |
None |
| 7 | Fix infinite loop when extracting H264 NAL data | [Analysis] When the extracted byte stream contained only the 3-byte start code (0x000001) but no NAL data, strm_curr_pos and strm_buff_read_bits were not updated, causing an infinite loop in h264bsdExtractNalUnit.[Modifications] mi_vdec.ko |
None |
| 8 | Fix MIPI state machine issues during deinitialization | [Analysis] If all transmitted frames are not fully processed before MIPI deinitialization, the MIPI circuit state machine can enter an inconsistent state. [Modifications] mi_disp.ko |
None |
| 9 | Fix deadlock during IPU batch task execution | [Analysis] A deadlock could occur if variable-buffer scaling was performed during batch switch-in while executing batch tasks. [Modifications] mi_ipu.ko |
None |
| 10 | Fix the GOP module OSDB not being able to switch to the foreground | [Analysis] hal_rgn_gop.c did not implement OSDB swap support, preventing the OSD background layer from being switched to the foreground properly.[Modifications] mi_rgn.ko |
None |
| 11 | Fix VGA PLL reset during runtime causing VGA to stop working | [Analysis] The PLL should be reset only during initialization and deinitialization. Resetting it during runtime can stop the PLL. This update also enables automatic VGA aff reset.[Modifications] mi_disp.ko |
None |
| 12 | Fix Y data loss caused by the MOPG peak ECO bit in non-4K scenarios | [Analysis] The MOPG peak ECO bit was always enabled and occasionally caused Y-data loss in non-4K scenarios. The ECO bit should be enabled only for 4K scenarios. [Modifications] mi_disp.ko |
None |
| 13 | Fix missing PTS information for VDEC Port 1 | [Analysis] In capture scenarios, queued tasks include buffers for both port 0 and port 1, but when FillOutputBufInfo filled the buffer PTS information, the PTS data for OutputPortBufInfo[1] was missing.[Modifications] mi_vdec.ko |
None |
| 14 | Fix incorrect RFC buffer size calculation | [Analysis] The RFC buffer size calculation in refswx was incorrect and required the patches from jira-81 and jira-86 to be synchronized.[Modifications] mi_vdec.ko |
None |
| 15 | Fix incorrect buffer-count calculation during H265 sequence change | [Analysis] The tot_buffers calculation in H265 decoding was incorrect and needed to be corrected by synchronizing the corresponding patch.[Modifications] mi_vdec.ko |
None |
| 16 | Optimize the VDEC decoding flow | [Analysis] Simplify the DecDecode flow to improve decoding efficiency.[Modifications] mi_vdec.ko |
None |
| 17 | Fix conditional compilation errors in JPD | [Analysis] Incorrect conditional compilation in JPD caused the MRC1 setting to always be ineffective. Macros were also used to separate the code path without FFD9 for easier maintenance.[Modifications] mi_jpd.ko |
None |
| 18 | Fix unsupported custom resolution timings in DIS | [Analysis] Different display interfaces had unsupported cases when custom timing parameters were used, so unsupported timings needed to be adjusted interface by interface. [Modifications] mi_disp.ko |
None |
| 19 | Fix IPU Coverity static analysis warnings | [Analysis] This update fixes multiple code-quality issues reported by Coverity, including DMA setup corrections and outbound EP address adjustments. [Modifications] mi_ipu.kolibipu.soproject/release/include/mi_ipu_pcie_internal_datatype.h |
None |
| 20 | Optimize the MOP line-buffer sorting algorithm | [Analysis] The GWIN line-buffer sorting logic was optimized from O(n²) insertion sort to O(n log n) quicksort. Mutex protection was added, unnecessary recalculations are skipped with dirty flags, and a procfs lbconfig entry was added for debugging.[Modifications] mi_disp.komi_debug.ko |
None |
| 21 | Fix display jitter on the default MIPI bootlogo panel | [Analysis] Vsync between TOP and MIPI must be synchronized, while Hsync must not be synchronized, otherwise display jitter occurs. This update enables ext_frm_reset_en and disables hs_en.[Modifications] mi_disp.ko |
None |
| 22 | Fix incorrect print format for disp VideoLayerSize |
[Analysis] The u16Width and u16Height members of MI_DISP_VideoLayerSize_t are actually of type MI_U32, but printf used the %hu format specifier for MI_U16.[Modifications] mi_disp.ko |
None |
| 23 | Remove mi_shadow related code from VDF |
[Analysis] The new VDF architecture has deprecated the shadow mechanism and directly uses vdf.ko instead of shadow.ko.[Modifications] mi_shadow.kolibshadow.so (removed) |
None |
1.4.2. New Features Added to Previous Version¶
| ID. | Brief Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Support multi-thread and multi-process access for the IPU cascade API | [Analysis] The IPU cascade API must support concurrent access in multi-threaded and multi-process environments to satisfy complex AI inference scenarios. [Modifications] libipu.soproject/release/include/ipu_rpmsg.hmi_ipu_pcie_internal.h |
None |
| 2 | Support the IPU heartbeat detection feature | [Analysis] The service process on the IPU EP side must support graceful exit and resource cleanup, and heartbeat detection is required to monitor communication status. [Modifications] mi_ipu.kolibipu.soproject/release/include/ipu_rpmsg.hmi_ipu_pcie_internal.hmi_ipu_pcie_internal_datatype.h |
None |
| 3 | Support IPU PCIe DMA linked-list mode | [Analysis] When the IPU transfers data over PCIe, DMA linked-list mode can significantly improve transfer efficiency. [Modifications] mi_ipu.kolibipu.soproject/release/include/mi_ipu_pcie_internal.hmi_ipu_pcie_internal_datatype.hmi_ipu_pcie_log_ctrl.h |
None |
| 4 | Support querying and setting remote input buffers for the IPU | [Analysis] The IPU must support querying, setting, and retrieving remote input buffers to satisfy data exchange requirements in cascade inference scenarios. [Modifications] libipu.soproject/release/include/ipu_rpmsg.hmi_ipu_pcie_internal.h |
None |
| 5 | Support the IPU MIU reset flow | [Analysis] The IPU reset sequence must include MIU masking and MIU reset handling to ensure the reset operation does not affect other modules. [Modifications] mi_ipu.ko |
None |
| 6 | Support the GE module MIU reset flow | [Analysis] The GE (Graphics Engine) reset sequence must include MIU masking and MIU reset handling to ensure safe and reliable reset behavior. [Modifications] mi_gfx.ko |
None |
| 7 | Support UV swap for the GOP ABGR format | [Analysis] The GOP module must support UV swapping for the ABGR pixel format to meet different image-processing requirements. [Modifications] mi_rgn.ko |
None |
| 8 | Support reading the default HDMITX drive level | [Analysis] A customer requested support for reading the default HDMI drive strength using the cat command. The implementation was changed to read the register value instead of the most recent echo value.[Modifications] mi_hdmi.ko |
None |
| 9 | Support HAL output information for multiple VDEC ports | [Analysis] The MI layer needs HAL display output information for different ports, but previously it could obtain information only for Port 0. DecRet display information is now defined based on MI_VDEC_MAX_HW_PORT_NUM.[Modifications] mi_vdec.ko |
None |
| 10 | Support configuring the IPU AXI mode | [Analysis] The IPU must support configuring the AXI bus transfer mode to optimize data transfer performance. [Modifications] mi_ipu.kolibipu.soproject/release/include/mi_ipu_datatype.hmi_ipu_internal_datatype.hmi_ipu_internal_datatype_common.h |
None |
| 11 | Support HDMITX DRM mode configuration | [Analysis] To support the DRM display framework, the HDMI TX config.mk configuration must be updated.[Modifications] mi_hdmi.kolibhdmi.so |
Must be used together with the DRM framework |
| 12 | Add Crypto SHA/RSA/AES examples | [Analysis] Sample code is added for cryptographic algorithms, including SHA hashing, RSA asymmetric encryption, and AES symmetric encryption. [Modifications] mi_sys.koproject/release/include/mi_sys_internal.h |
None |
1.5. Project Changelog¶
1.5.1. Improvements to Previous Version Issues¶
| ID. | Issue Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Correct the LPDDR4 memory-type description | [Analysis] The original description stated LPDDR4, but the actual memory type is LPDDR4X, so the description needed correction. [Modifications] configs/demo/defconfigs/nvr_mhera.*.defconfigconfigs/verify/defconfigs/nvr_mhera.*.defconfig |
None |
| 2 | Fix error handling when building the debug kernel | [Analysis] The error-handling logic used when building the debug kernel was incorrect and needed adjustment. [Modifications] kbuild/kbuild.mk |
None |
1.5.2. New Features Added to Previous Version¶
| ID. | Brief Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Add an SSM004A-S02A 2 GB DDR board configuration | [Analysis] A new defconfig was added for the SSM004A-S02A 2 GB DDR solution to support the 2 GB memory configuration. [Modifications] configs/demo/defconfigs/ubuntu_mhera.emmc.glibc-12.4.0-arm64-ext4.ssm004a.s02a.2048.fccsp16_lpddr4x_defconfig |
Applies only to the SSM004A-S02A 2 GB DDR solution |
| 2 | Add Ubuntu rootfs support | [Analysis] To support Ubuntu ROS2 and Docker, a new Ubuntu rootfs option was added and integrated into the Alkaid build system. [Modifications] configs/Kconfigs/customer/*/Kconfigimage/configs/general/emmc_ubuntu.ext4fs.tfa.dualenv.partition.configimage/packaging/common/rootfs_ubuntu.mk |
Must be used together with the Ubuntu rootfs image |
| 3 | Add FFmpeg build-type configuration | [Analysis] A new FFmpeg build-type option was added to support selecting the required FFmpeg build mode as needed. [Modifications] configs/Kconfigs/customer/sdk/verify/Kconfigconfigs/Kconfigs/customer/sdk/verify/common/Kconfig |
None |
| 4 | Add SD upgrade TFA configuration | [Analysis] BSP scenario builds were missing SD_UPGRADE_TFA_CONFIG, causing build failures.[Modifications] configs/verify/defconfigs/nvr_mhera.*.defconfig |
None |
1.6. OPTEE Changelog¶
1.6.1. Improvements to Previous Version Issues¶
| ID. | Issue Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Fix insufficient OPTEE memory allocation | [Analysis] A TEE_ERROR_OUT_OF_MEMORY error (error code 0xffff000c) occurred when OPTEE loaded ELF binaries, so the memory allocation strategy had to be adjusted.[Modifications] core/arch/arm/plat-mhera/platform_config.h |
None |
1.6.2. New Features Added to Previous Version¶
| ID. | Brief Description | Detailed Description | Notes |
|---|---|---|---|
| 1 | Add a script to separate OPTEE unit tests | [Analysis] A new script was added to support running OPTEE unit tests one by one, making it easier to validate each individual test item independently. [Modifications] sgs/ut/app/test_tz_ut.sh |
None |
2. Interface Change Description¶
2.1. Interface Changes¶
2.1.1. IPU Serialized Read Callback Parameter Type Change (mi_ipu_datatype.h)¶
Before the change:
After the change:
typedef int (*SerializedReadFunc)(void *dst_buf, signed long long offset, unsigned long long size, char *ctx);
Description: The offset parameter has been changed from int to signed long long, and the size parameter has been changed from int to unsigned long long, so that model files larger than 2 GB can be supported.
2.1.2. STransformers GenerationConfig EOS Token Extension (sgs_algo_datatype.h)¶
Before the change:
#define MAX_POINT_NUM 32
typedef struct GenerationConfig
{
...
int eos_token_id;
...
} GenerationConfig_t;
After the change:
#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;
Description: eos_token_id has been extended from a single int to an int array containing up to 16 elements, and the eos_num field has been added to record the actual number of EOS tokens, enabling support for generative models with multiple EOS tokens.
2.1.3. STransformers STSInput_t Multi-role Dialogue Parameter Change (sgs_sts_api.h)¶
Before the change:
After the change:
#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;
Description: role and prompt have been extended from one-dimensional arrays to two-dimensional arrays to support multi-turn dialogue scenarios with up to 4 roles. The role_prompt_num field has been added to record the actual number of roles.
2.2. New Interfaces¶
2.2.1. STransformers Callback Registration Interface (sgs_sts_api.h)¶
New type definitions:
#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;
New interface:
Interface description: Registers Tokenizer and Model callback functions so that tokenization results and intermediate tensor information can be obtained during inference.
2.2.2. STransformers Inference Abort Interface (sgs_sts_api.h)¶
New interface:
Interface description: Aborts the currently running inference task and supports dynamically canceling long-running generation requests.
3. Outstanding Issues List¶
| ID. | Brief Description | Details | Notes |
|---|---|---|---|
| 1 | None | None | None |
4. Document Modification Records¶
4.1. SDK Module 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 | SerializedReadFunc callback type definition: change the offset parameter from int to signed long long, and the size parameter from int to unsigned long long |
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 | memAllocAlignSize |
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 Development Reference¶
ADCLP Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
ADCLP UBOOT Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Audio Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Cipher Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Cipher UBOOT Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
eMMC Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
eMMC Support List
| ID. | Revision History |
|---|---|
| 1 |
Flash Support List
| ID. | Revision History |
|---|---|
| 1 |
Flash List New Flash SOP
| ID. | Revision History |
|---|---|
| 1 |
SDMMC Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
SD/eMMC Stress Test SOP
| ID. | Revision History |
|---|---|
| 1 |
GPIO Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
GPIO UBOOT Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
I2C Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
I2C UBOOT Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
IR Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
MIU API
| ID. | Revision History |
|---|---|
| 1 |
GMAC Network Port User Guide
| ID. | Revision History |
|---|---|
| 1 |
PWM Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
PWM UBOOT Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Register Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
SENSOR Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Camera Sensor Support List
| ID. | Revision History |
|---|---|
| 1 |
SPI UBOOT Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
SPI Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
RTC Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Timer Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Timer Register Description
| ID. | Revision History |
|---|---|
| 1 |
UART Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
USB Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Watchdog UBOOT Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Watchdog Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
XZDEC Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Camera Hardware-related Parameter Adjustment Guide
| ID. | Revision History |
|---|---|
| 1 |
4.3. Image Development Reference¶
ISP Software Development Reference
| 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 User Guide
| ID. | Revision History |
|---|---|
| 1 |
Sensor Porting Guide
| ID. | Revision History |
|---|---|
| 1 |
4.4. IPU Algorithms¶
Attribute Recognition Algorithm Description
| ID. | Revision History |
|---|---|
| 1 |
Detection Algorithm
| ID. | Revision History |
|---|---|
| 1 |
Detection and Tracking Algorithm Description
| ID. | Revision History |
|---|---|
| 1 |
Face Recognition Algorithm
| ID. | Revision History |
|---|---|
| 1 |
Portrait Segmentation Algorithm
| ID. | Revision History |
|---|---|
| 1 |
License Plate Recognition Algorithm Description
| ID. | Revision History |
|---|---|
| 1 |
CCD SDK API
| ID. | Revision History |
|---|---|
| 1 |
FC SDK API
| ID. | Revision History |
|---|---|
| 1 |
SAM Universal Segmentation Algorithm Description
| ID. | Revision History |
|---|---|
| 1 |
Object Left-Behind and Disappearance Detection Algorithm Description
| ID. | Revision History |
|---|---|
| 1 |
4.5. Audio Algorithms¶
KWS Algorithm Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
MIX Algorithm Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
SED Algorithm Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
VAD Algorithm Usage Reference
| 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 Debugging¶
SGS Audio Debugging Manual
| ID. | Revision History |
|---|---|
| 1 |
4.7. CV User Manuals¶
CV FineTune User Guide
| ID. | Revision History |
|---|---|
| 1 |
CV FINETUNE API
| ID. | Revision History |
|---|---|
| 1 |
Camera Stitching User Manual
| ID. | Revision History |
|---|---|
| 1 |
LDC User Guide
| ID. | Revision History |
|---|---|
| 1 |
IS User Guide
| ID. | Revision History |
|---|---|
| 1 |
4.8. Application Development Reference¶
OTA Packaging and Upgrade
| ID. | Revision History |
|---|---|
| 1 |
UVC User Guide
| ID. | Revision History |
|---|---|
| 1 |
Detailed Explanation of Alkaid Defconfig
| ID. | Revision History |
|---|---|
| 1 |
Security Boot Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Security Boot Manual Signing Usage Reference
| ID. | Revision History |
|---|---|
| 1 |
Power Consumption Tuning Guide
| ID. | Revision History |
|---|---|
| 1 |
Boot Flow
| ID. | Revision History |
|---|---|
| 1 |
System Partitions
| ID. | Revision History |
|---|---|
| 1 |