Skip to content

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_defconfig
include/configs/mhera.h
optee:
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.c
sdk: 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_*.defconfig
arch/arm64/configs/mhera_*.defconfig
project:
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_defconfig
project:
configs/Kconfigs/customer/*/Kconfig
image/configs/general/emmc_ubuntu.ext4fs.tfa.dualenv.partition.config
image/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.dtsi
arch/arm64/boot/dts/sgs/mhera.dtsi
sdk:
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_*.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
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.dtsi
arch/arm64/boot/dts/sgs/mhera.dtsi
sdk:
mi_ipu.ko
project/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.c
drivers/sgs_common/drm/Kconfig
drivers/sgs_common/include/cam_sysfs.h
project:
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/Makefile
cmd/sgs/sigauth.c
drivers/sgs/disk/part_emmc.c
include/ipl.h
project:
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.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
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.c
drivers/sgs/usb/gadget/udc/usb20/msb250x_udc.c
drivers/usb/gadget/f_fastboot.c
include/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_defconfig
include/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_defconfig
drivers/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_defconfig
configs/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.c
drivers/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.c
arch/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.h
drivers/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/Makefile
arch/arm64/boot/Makefile
scripts/sgs/builtin_dtb_update.py
scripts/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.sh
scripts/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.h
drivers/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/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
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.c
arch/arm/boot/dts/mhera.dtsi
arch/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.dtsi
arch/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.ko
libvdec.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.ko
libipu.so
project/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.ko
mi_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.ko
libshadow.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.so
project/release/include/ipu_rpmsg.h
mi_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.ko
libipu.so
project/release/include/ipu_rpmsg.h
mi_ipu_pcie_internal.h
mi_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.ko
libipu.so
project/release/include/mi_ipu_pcie_internal.h
mi_ipu_pcie_internal_datatype.h
mi_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.so
project/release/include/ipu_rpmsg.h
mi_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.ko
libipu.so
project/release/include/mi_ipu_datatype.h
mi_ipu_internal_datatype.h
mi_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.ko
libhdmi.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.ko
project/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.*.defconfig
configs/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/*/Kconfig
image/configs/general/emmc_ubuntu.ext4fs.tfa.dualenv.partition.config
image/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/Kconfig
configs/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:

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

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:

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

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:

MI_S32 ALGO_STS_CallBack(STSHandle handle, STSCallBack callback);

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:

MI_S32 ALGO_STS_Abort(STSHandle handle);

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
  • 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 the 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
  • 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 Development Reference

    ADCLP Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • ADCLP UBOOT Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Audio Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Cipher Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Cipher UBOOT Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • eMMC Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • eMMC Support List

    ID.
    Revision History
    1
  • Initial release
  • Flash Support List

    ID.
    Revision History
    1
  • Initial release
  • Flash List New Flash SOP

    ID.
    Revision History
    1
  • Initial release
  • SDMMC Usage Reference

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

    ID.
    Revision History
    1
  • Initial release
  • GPIO Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • GPIO UBOOT Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • I2C Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • I2C UBOOT Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • IR Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • MIU API

    ID.
    Revision History
    1
  • Initial release
  • GMAC Network Port User Guide

    ID.
    Revision History
    1
  • Initial release
  • PWM Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • PWM UBOOT Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Register Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • SENSOR Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Camera Sensor Support List

    ID.
    Revision History
    1
  • Initial release
  • SPI UBOOT Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • SPI Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • RTC Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Timer Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Timer Register Description

    ID.
    Revision History
    1
  • Initial release
  • UART Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • USB Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Watchdog UBOOT Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Watchdog Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • XZDEC Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Camera Hardware-related Parameter Adjustment Guide

    ID.
    Revision History
    1
  • Initial release
  • 4.3. Image Development Reference

    ISP Software Development Reference

    ID.
    Revision History
    1
  • Add the 3A defog algorithm and the 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 User Guide

    ID.
    Revision History
    1
  • Initial release
  • Sensor Porting Guide

    ID.
    Revision History
    1
  • Initial release
  • 4.4. IPU Algorithms

    Attribute Recognition Algorithm Description

    ID.
    Revision History
    1
  • Initial release
  • Detection Algorithm

    ID.
    Revision History
    1
  • Initial release
  • Detection and Tracking Algorithm Description

    ID.
    Revision History
    1
  • Initial release
  • Face Recognition Algorithm

    ID.
    Revision History
    1
  • Initial release
  • Portrait Segmentation Algorithm

    ID.
    Revision History
    1
  • Initial release
  • License Plate Recognition Algorithm Description

    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 Universal Segmentation Algorithm Description

    ID.
    Revision History
    1
  • Initial release
  • Object Left-Behind and Disappearance Detection Algorithm Description

    ID.
    Revision History
    1
  • Initial release
  • 4.5. Audio Algorithms

    KWS Algorithm Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • MIX Algorithm Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • SED Algorithm Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • VAD Algorithm Usage Reference

    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 Debugging

    SGS Audio Debugging Manual

    ID.
    Revision History
    1
  • Initial release
  • 4.7. CV User Manuals

    CV FineTune User Guide

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

    ID.
    Revision History
    1
  • Initial release
  • Camera Stitching User Manual

    ID.
    Revision History
    1
  • Initial release
  • LDC User Guide

    ID.
    Revision History
    1
  • Initial release
  • IS User Guide

    ID.
    Revision History
    1
  • Initial release
  • 4.8. Application Development Reference

    OTA Packaging and Upgrade

    ID.
    Revision History
    1
  • Initial release
  • UVC User Guide

    ID.
    Revision History
    1
  • Initial release
  • Detailed Explanation of Alkaid Defconfig

    ID.
    Revision History
    1
  • Initial release
  • Security Boot Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Security Boot Manual Signing Usage Reference

    ID.
    Revision History
    1
  • Initial release
  • Power Consumption Tuning Guide

    ID.
    Revision History
    1
  • Initial release
  • Boot Flow

    ID.
    Revision History
    1
  • Initial release
  • System Partitions

    ID.
    Revision History
    1
  • Initial release