跳转至

Alkaid Defconfig


REVISION HISTORY

Revision No.
Description
Date
1.0
  • Initial release
  • 02/01/2024
    1.1
  • Add earlyinit setting description
  • 05/29/2024
    1.2
  • Add CONFIG_EARLYINIT_SETTING_JSON_LIST description
  • 06/03/2024
    1.3
  • Add systemd description
  • 07/02/2024
    1.4
  •  Update Rgn Kconfig description
  • 08/12/2024
    1.5
  • Remove DEBUG_MODPARAM
  • 08/12/2024
    1.6
  • Re-align kconfig with the documentation description
  • 03/12/2025
    1.7
  • Add description of riscv compilation
  • 03/31/2025
    1.8
  • Add cardv ffmpeg version description
  • 05/27/2025
    1.9
  • Add cardv iq bin list description
  • 09/19/2025
    1.10
  • Add cardv ui app type description
  • 10/13/2025
    1.11
  • Add extra kernel bootargs configuration description
  • 02/05/2026

    1. 概述


    1.1. 功能说明

    alkaid defconfig是整个project编译环境的顶层配置文件,defconfig依托于menuconfig的形式提供了图形化配置界面。

    为显示menuconfig界面请参照环境搭建文档设置好toolchain后在project目录执行:

    @ubuntu:~/sourcecode/project/$ make menuconfig
    

    图1-1 alkaid defconfig对应的menuconfig图形界面

    alkaid defconfig主要的配置项如下:


    1.2. 文档格式约束

    正体:用于文档正文内容的书写,其中代码段的书写需要用等宽字体。

    正体 + 加粗:用于文档正文中重要内容的书写。

    斜体:用于文档中Tips部分的书写。

    斜体 + 加粗:用于文档中Tips部分重要内容的书写。


    1.3. 关键字说明

    NVR: 全称Network Video Recorder,即网络视频录像机。

    DVR: 全称Digital Video Recorder,即数字视频录像机或数字硬盘录像机。

    XVR: 全称X(代表任何一种或多种功能) Video Recorder,目前 SGS 实现是NVR+DVR。

    IPC: 全称IP Camera,即网络摄像机。

    USBCAM: 全称USB Camera, 即USB摄像头。

    CARDV: 全称Car Digital Video, 即车载数字视频。

    DISPCAM: 全称Display Camera,即摄像头屏显。

    Android: 是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统。

    IPC-RTOS: SGS 自研双系统,可同时运行Linux与RTOS系统,兼顾RTOS轻巧以及Linux的强大拓展性,具有快速启动的特性。

    DualOs:IPC-RTOS


    2. Product

    产品形态,包含ipc、nvr、usbcam等多种不同的方案。不同方案默认场景不同所以打包的配置文件以及运行的bin各有不同,请参照不同产品形态使用不同软件方案配置。


    3. Board

    开发板相关软硬件配置。


    3.1. Board

    开发板型号一般在bringup阶段确定后几乎不会改变,与defconfig文件名字中的型号有差别属于正常现象。此参数会影响代码编译过程中的一些配置。以iFord为例,开机默认安装的ko配置就存在于:

    project/release/chip/${CHIP}/${PRODUCT}/${BOARD}/bootscript/spinand/boot_sequence.mk
    

    如果不同Board需要有不同的配置可参考该路径新增配置。


    3.2. Board Name

    开发板型号全称,一般不需要修改。此参数会影响image打包过程中使用到的一些配置脚本,以iFord为例:

    project/board/${CHIP}/${BOARD_NAME}/config/
    

    目录下会保存一些config.json文件。

    如果不同Board需要有不同的配置可参考该路径新增配置。


    4. Toolchain

    工具链配置,一般在bringup前就已经确定,基本不会修改。除非一款chip支援多个工具链(在兼容性问题都被解决的情况下)。


    4.1. LinuxArch

    linux运行架构,与soc core方案有关,SGS目前主要采用 arm 方案。


    4.2. Toolchain

    工具链方案。SGS目前支援glibc、uclibc、llvm。Toolchain设置请参考环境搭建,方案确定后基本不会修改。该参数影响release安装路径,修改需慎重。以iFord为例:

    project/release/chip/${CHIP}/${PRODUCT}/common/${TOOLCHAIN}/${TOOLCHAIN_VERSION}/
    

    该目录会安装一些事先编译好的lib以及编译过程中产物以供后续image打包阶段使用。


    4.3. Toolchain Version

    工具链方案对应的软件版本。参数影响同上。


    4.4. Toolchain Rel

    工具链前缀,bringup时已经确定,一般不需要修改。以iFord为例:

    CONFIG_TOOLCHAIN_REL="arm-linux-gnueabihf-11.1.0"
    

    makefile中会使用该配置去组成gcc全称后进行使用,

    sdk/verify/sample_code/mi_dep.mk
    25:TOOLCHAIN_REL := $(CROSS_COMPILE)
    26:TOOLCHAIN_VERSION := $(shell $(TOOLCHAIN_REL)gcc -dumpversion)
    

    由于我们环境搭建时将工具链路径加入了PATH环境变量,所以我们可以直接使用名字调用到对应的指令。

    $ which  arm-linux-gnueabihf-11.1.0-gcc
    /tools/toolchain/gcc-11.1.0-20250211-linaro-glibc-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-11.1.0-gcc
    

    5. Uboot

    5.1. Uboot build config

    uboot配置文件,用于编译uboot的config文件。由于硬件和软件配置不同,需要匹配开发板型号。对应config的路径为:

    boot/configs/
    

    5.2. uboot Bin

    uboot bin name,一般不需要修改。该参数会指定从boot目录软连接对应的img文件到project目录,供alkaid image打包使用。当开发板开机后ipl会加载uboot.bin并解压到ram中运行。所以不同压缩格式的uboot会影响uboot.bin的大小以及解压速度。


    5.3. Uboot Version

    uboot版本是跟随boot目录代码版本而定的,不会中途修改。由于不同uboot版本接受的参数有区别所以一些配置文件会很据此配置判断使用不同的uboot参数。


    5.4. Uboot DTBO LIST

    Android DTBO列表。目前此配置仅支持opera。


    6. OPTEE

    6.1. OPTEE OS make Option

    OPTEE编译选项,用于向其makefile传递make参数。

    kernel 版本,以souffle为例,kernel版本为5.10。一般bringup时就已确定,如需支援kernel其他版本请提市场需求。


    6.2. OPTEE Test

    开启和关闭编译 OPTEE 测试项。


    6.3. OPTEE UT

    开启和关闭编译 OPTEE 单元测试项。


    6.4. OPTEE client TEE file system with FirmwareFS

    开启和关闭编译 OPTEE FirmwareFS 支持。


    6.5. OPTEE client compile Option

    指定 OP-TEE client 的工具链。


    7. DRAM_LAYOUT

    调整各个runtime module 的size

    make defconfig 之后会在project\configs 目录下生成dram_layout.txt

    下图是 Pcupid 平台的一份典型 DRAM layout,可通过 python scripts/dram_layout_graph.py --input configs/dram_layout.txt --output configs/dram_layout.html 命令生成 DRAM 布局的可视化图谱,便于检查各模块的地址分布与相对关系。视图会以实色块展现地址确定的模块,斜线阴影表示地址尚未确定的虚拟子区域,此类虚拟模块仅从父模块中模拟占用一块内存,但图上位置并无实际加载地址意义。图中的色块样式同时展示了这两种情况,帮助区分物理与逻辑区域。

    make image 之后会check 各个runtime module 的laod addr 是否有重叠。在project\image\output\images 目录生成 laod_addr.txt


    7.1. dram size

    dram 的内存大小


    7.2. LX Memory Size

    linux 系统可用内存


    7.3. MMA Memory Size

    MMA 占用的内存大小


    7.4. CMA Memory Size

    CMA 占用的内存大小


    7.5. LOGO Memory Size

    logo 占用的内存大小


    7.6. RISCV Memory Size

    riscv 的内存大小


    7.7. RTOS Memory Size

    rtos 的内存大小


    7.8. RTOS Timestamp Memory Size

    rtos timestamp 的内存大小


    7.9. RTOS Ramdisk Memory Size

    rtos ramdisk 分区的内存大小


    7.10. earlyinit Memory Size

    earlyinit 的内存大小


    7.11. VMM Memory Size

    VMM 的内存大小


    7.12. OPTEE Memory Size

    optee 的内存大小


    7.13. TF-A Memory Size

    tf-a 的内存大小


    7.14. enable to modify TF-A load address

    如果不设置,会使用 tf-a 默认的加载地址。


    7.15. FB Memory Size

    FB 的内存大小


    8. Kernel

    8.1. Kernel Version

    kernel 版本,以souffle为例,kernel版本为5.10。一般bringup时就已确定,如需支援kernel其他版本请提市场需求。


    8.2. Kernel Config

    kernel配置文件,用于编译linux kernel的config文件。由于硬件和软件配置不同,需要匹配开发板型号。对应config的路径为:

    kernel/arch/${ARCH}/configs/
    

    8.3. kernel Bin

    kernel bin name,一般不需要修改


    8.4. sgs intercore manger

    sgs核间管理器用于实现Cortex-M4/RISC-V与Cortex-A处理器之间的通信。


    8.5. Kernel DTB NAME

    kernel 的 dtb name


    8.6. Kernel DTBO NAME

    kernel 的 dtbo name


    8.7. Kernel DTBO LIST

    kernel 的 dtbo list


    8.8. SELinux


    8.8.1. Support SELinux bool

    是否支持 SELinux (y/n)


    8.8.2. Support SELinux string

    是否支持 SELinux (on/off)


    8.8.3. SELINUX mode

    SELinux 模式选择


    8.8.4. SELINUX policy path

    SELinux policy 路径选择


    8.9. Maximum expected bad eraseblock count per 1024 eraseblocks

    ubi坏块预留数目,用于覆盖uboot/kernel下配置


    8.10. Extra Kernel Boot Arguments

    可额外灵活配置的kernel bootargs,比如 "vmalloc=600M param_a=aa param_b=bb"


    9. Image

    9.1. Using Customize Image Config

    是否使用customer自己的分区配置,image打包时将会从以下路径寻找customer自己的分区配置文件。

    project/image/configs/customize/${IMAGE_CONFIG}
    

    9.2. Image Partition Config

    分区配置文件名称。该文件详细配置方法请参考系统分区

    不同flash类型、rootfs类型以及是否有使用pm_rtos等分区配置不同。请根据需求配置


    9.3. IPL File Config

    IPL文件名称,该文件的路径在Image Partition Config 分区配置文件中设置。


    9.4. IPL_CUST File Config

    IPL_CUST文件名称,该文件的路径在Image Partition Config 分区配置文件中设置。


    9.5. IPLX File Config

    IPLX文件名称,仅有emmc flash才会使用该文件。该文件的路径在Image Partition Config 分区配置文件中设置。


    9.6. USB Upgrade Image

    用于创建 USB 升级 image 的 IPL 文件名。

    riscv固件名字,目前仅有opera使用。此配置在image打包过程中生效,文件路径在Image Partition Config对应文件中配置。


    9.6.1 USB_UPGRADE_IPL_CONFIG

    用于创建 USB 工厂升级 image 的 IPL 文件名。

    riscv固件名字,目前仅有opera使用。此配置在image打包过程中生效,文件路径在Image Partition Config对应文件中配置。


    9.6.2 USB_UPGRADE_TFA_CONFIG

    用于创建 USB 升级 image 的 TF-A 文件名。


    9.7. SD Upgrade Image

    SD 升级使用到的镜像


    9.7.1 SD_UPGRADE_IPL_CONFIG

    SD 升级使用到的 IPL 镜像


    9.7.2 SD_UPGRADE_IPL_CUST_CONFIG

    SD 升级使用到的 IPL_Cust 镜像


    9.7.3 SD_UPGRADE_TFA_CONFIG

    SD 升级使用到的 TF-A 镜像


    9.8. UART BOOT Image

    uart 升级使用到的镜像


    9.8.1 UART_BOOT_IPL_CONFIG

    uart 升级使用到的 IPL 镜像


    9.8.2 UART_BOOT_IPL_CUST_CONFIG

    uart 升级使用到的 IPL_Cust 镜像


    9.8.3 UART_BOOT_TFA_CONFIG

    uart 升级使用到的 TF-A 镜像


    9.9. TF-A File Config

    TF-A bin文件名称,该文件的路径在Image Partition Config 分区配置文件中设置。


    9.10. OPTEE File Config

    OPTEE bin文件名称,该文件的路径在Image Partition Config 分区配置文件中设置。配置后,编译时会编译optee并打包一些依赖文件到image中。


    9.11. VMM File Config

    VMM bin文件名称,该文件的路径在Image Partition Config 分区配置文件中设置。

    如果LH or HYP of Dualos Type选用了HYP,此处必须填写正确的VMM bin名称。


    9.12. Flash Size

    仅当Flash类型为nor时,此配置才会生效。目前此配置已废弃。


    9.13. EMMC BOOT_PART.bin support backups

    emm boot.bin 备份功能。


    9.14. riscv

    riscv是为具有riscv硬件的CHIP配置的,其是独立于arm的另一套软硬件架构。


    9.14.1. riscv enable

    riscv功能开启配置。此配置在编译时期和打包时期生效。


    9.14.2. riscvfw Bin

    打包image时拷贝的riscvfw Bin名称。此配置在image打包过程中生效,文件路径在Image Partition Config对应文件中配置。


    9.14.3. riscv build toolchain

    编译riscv所使用的toolchain,请参考环境搭建。此配置在编译时期生效。


    9.14.4. riscv build config

    编译riscv所使用的config文件名称。此配置在编译时期生效。


    9.15. pm51

    pm 配置选项。


    9.15.1. pm51 Bin

    pm固件名字,目前仅有opera使用。此配置在image打包过程中生效,文件路径在Image Partition Config对应文件中配置。


    9.16. Support cm4 preload Image

    打包 mi modules 到 dualos image 里面


    9.17 Support AOV Image

    将 MI 模块打包到 dualos 中,编译成 AOV image。


    9.18. STRIP OPTION

    设置成 strip unneeded,可以删掉更多的符号,使 ko 减少


    9.19. dla firmware

    riscv固件名字,目前仅有 opera 使用。此配置在image打包过程中生效,文件路径在Image Partition Config对应文件中配置。


    9.20. libs list to remove

    用于过滤不需要打包到miservice 的lib。


    9.21. Whether to enable the addition of dependency for mi libs

    用于开启/关闭 mi模块动态库添加依赖功能


    10. Sensor

    10.1. enable sensor

    使能 sensor


    10.2. IQ0

    需要打包的IQ bin在project/board/${CHIP}/iqfile/下的路径,该文件会被安装到misc/iqfile目录下。


    10.3. IQ1

    需要打包的IQ bin在project/board/${CHIP}/iqfile/下的路径,该文件会被安装到misc/iqfile目录下。


    10.4. IQ2

    需要打包的IQ bin在project/board/${CHIP}/iqfile/下的路径,该文件会被安装到misc/iqfile目录下。


    10.5. IQ3

    需要打包的IQ bin在project/board/${CHIP}/iqfile/下的路径,该文件会被安装到misc/iqfile目录下。


    10.6. IQ API Bin List

    project/board/${chip}/iqfile/${IQ_API_LIST} 的 iq 文件打包到 image。


    10.7. Sensor List

    image 默认安装的Sensor driver列表。列表中的ko将会在开机时自动insmod。

    使用dualos时不需要配置此项。


    10.8. Sensor0

    为Sensor0设置对应的ko


    10.9. Sensor0 Opt

    为Sensor0对应的ko设置insmod参数。

    使用 dualos 时不需要配置此项。


    10.10. Sensor1

    为Sensor1设置对应的ko


    10.11. Sensor1 Opt

    为Sensor1对应的ko设置insmod参数。


    10.12. Sensor2

    为Sensor2设置对应的ko


    10.13. Sensor2 Opt

    为Sensor2对应的ko设置insmod参数。


    10.14. VCM List

    控sensor变焦的电机列表


    10.15. VCM0

    控sensor变焦的电机0


    10.16. VCM0 Opt

    为 VCM0 设置参数


    10.17. VCM1

    控sensor变焦的电机1


    10.18. VCM1 Opt

    为 VCM1 设置参数


    10.19. VCM2

    控sensor变焦的电机2


    10.20. VCM2 Opt

    为 VCM2 设置参数


    11. Init System

    11.1. Init System

    选择 Init System 类型,目前支持 busybox/systemd。


    11.2. Busybox

    Busybox使用的是事先用环境搭建中的toolchain进行编译并打包的文件。对应文件的存放路径为:

    project/image/busybox/busybox-1.17.2-arm-linux-gnueabihf-glibc-linaro-11.1.0-dynamic.tar.gz
    

    使用者可根据自己需要进行添加修改busybox,该busybox压缩包会在alkaid image打包过程中安装到对应文件目录中。


    11.3. Systemd

    设置压缩包的名字,比如 systemd-246.5-arm-linux-gnueabihf-glibc-linaro-11.1.0-dynamic。


    11.4. Using systemd-bootchart For Profile Startup Time

    设置是否选择 systemd-bootchart 作为 init 程序,用来分析启动时间。


    12. Misc Options

    12.1. Fpga

    用于标记deconfig所处的内部芯片开发阶段。


    12.2. Fz1

    用于标记deconfig所处的内部芯片开发阶段。


    12.3. Bench

    用于标记deconfig所处的内部芯片开发阶段。


    12.4. TFTP Download Addr

    在uboot 进行TFTP下载时文件的缓存地址。缺省值为0x21000000。


    12.5. Kernel Boot Addr

    kernel的启动地址,缺省值为0x23000000。此项作用于uboot,因此直接通过ipl load kernel/boot kernel不由此项控制,故此项对DualOs无效。


    12.6. Init Ramfs Addr

    Ramfs所在的内存起始地址,kernel启动时会通过此地址挂载rootfs,缺省值为0x21800000。


    12.7. Split Each File Size

    切分较大的分区bin,避免在烧录时使用过大的内存从而踩到后面的内存数据。缺省值为0x2000000。


    12.8. upgrade_type

    固件升级方式,影响进入uboot时的自动烧录命令。


    12.9. which mmc device is the SD upgrade card

    用于SD升级的mmc设备号,此配置仅当upgrade_type配置为sd时生效。


    12.10. kernel module list that only packs into image but not insmod

    自定义只打包到 image 但是不会在 demo.sh 进行 insmod 的 kernel modules,方便添加仅作调试的 ko。


    12.11. customized linux modparam.json files

    自定义 purelinux 的 modparam.json 文件,需要放到 board/$(CHIP)/json/$(PRODUCT)/ 目录下。


    12.12. use ab system boot

    使用a/b 备份分区


    12.13. debug tools

    复制 debug 工具到 /customer 目录。


    12.14. AppArmor support

    打包 apparmor 相关的工具和配置文件到 rootfs 并使能 apparmor 功能。


    12.15. sgs_wifi


    12.15.1. sgs_wifi

    默认安装对应wifi的ko驱动,如果你维护的产品不需要wifi那就不用关心此参数。


    12.16. SSH

    SSH工具打包选项。此选项在image打包阶段生效。


    12.16.1. Support SSH

    是否需要支持 SSH


    BOOTLOGO选项。此选项在image打包阶段生效。此选项目前在opera用于配置bootcmd,iford之后的chip用于打包bootlogo所需的配置文件和图片。


    是否需要支持 BOOTLOGO


    12.17.2. bootlogo command (0)

    U-Boot bootcmd 中用于显示设备 0 的 bootlogo 命令。

    默认值为 "bootlogo"。多显示设备场景(如 HDMI + MIPI 同时显示)时,可配置为 "bootlogo 1 0 0 0 0 0"。


    12.17.3. bootlogo command (1)

    U-Boot bootcmd 中用于显示设备 1 的 bootlogo 命令。

    默认值为空。多显示设备场景(如 HDMI + MIPI 同时显示)时,可配置为 "bootlogo 0 0 0 0 1 0"。


    12.18. BOOTMUSIC

    BOOT MUSIC选项。此选项在image打包阶段生效。


    12.18.1. Support BOOTMUSIC

    是否需要支持 BOOTMUSIC


    12.18. PQ

    PQ选项。此选项在image打包阶段生效。


    12.18.1. Support PQ

    是否需要支持 PQ


    12.19. Basic rootfs file name

    rootfs选项。此选项在debian配置下生效,用于指定debian的rootfs文件名,文件应放置在project/image/rootfs/目录下,默认是debian-arm64.tar.gz。


    13. Rtos

    13.1. Rtos enable

    开启后则开启RTOS编译,此配置在编译时期和打包时期生效。

    pure linux系统不需要配置此项,请确保各项功能关闭


    13.2. rtos Bin

    Rtos image 的文件名,默认为 rtos.sz。


    13.3. RtosType

    RTOS编译开启时,可以编译打包系统类型选择,目前支援pure rtos和dualos两种选项。此配置在编译时期和打包时期生效。


    13.4. LH or HYP of Dualos Type

    当RtosType选择为dualos时需要配置Dualos方案。目前SGS支援light SMPLH(LH)和hypervisor(HYP)两种方案。此配置在编译时期和打包时期生效。


    13.5. Rtos build toolchain

    编译Rtos使用的工具链,与环境搭建保持一致。此配置在编译时期和打包时期生效。


    13.6. Rtos build config

    编译Rtos使用的config文件名字,此文件位于rtos目录。此配置在编译时期和打包时期生效。


    13.7. Support Sensor driver in RTOS

    编译sensor driver 进入 rtos。


    13.8. Config RTOS compile all Sensor Driver

    是否在RTOS系统中对所有Sensor Driver进行编译,默认为n


    13.9. Support Linux destroy rtos mi resource by MI_SYCALL

    支援MI_SYSCALL销毁rtos创建的多进程资源。关闭则只能由rtos来销毁rtos创建的多进程资源


    13.10. Earlyinit Options

    earlyinit 选项菜单。


    13.10.1. Select Earlyinit Mode

    选择 earlyinit mode。


    13.10.2. Set Earlyinit Setting Default Json Name

    设置要转成 header 的 json 名字,并且作为默认的 earlyinit setting。


    13.10.3. Set Earlyinit Setting Built-in Json Name List

    设置要转成 header 的 json 名字列表,以空格隔开。

    bootargs_rtos 添加 earlyinit_json=$(your_json_name),其中 $(your_json_name) 为对应的 json name。


    13.10.4. Support Dynamically Load Earlyinit Setting From File System

    支持启动时从文件系统加载 earlyinit 设置。


    13.10.5. Bitmap for early init enable

    使能的earlyinit sensor bitmap,由一个或多个sensor chn map 做或运算得到。


    13.10.6. Support Vif pipe line create

    使能 VIF 在earlyinit 中创建pipeline。


    13.10.7. EarlyInit log level

    earlyinit 日志等级设置


    13.10.8. Support sensor CM4

    使能 CM4 使用sensor。


    13.10.9. Support MIPI RX 2Lane mode

    使能 MIPI RX 2Lane。


    13.10.10. Support earlyinit light sensor enable

    支援 earlyinit 使用光敏传感器。


    13.10.11. Support skip earlyinit in cold boot

    支援冷启动时跳过 earlyinit。


    13.10.12. Support MIPI 2+2 lane mode

    使能 MIPI RX 2+2 Lane模式。


    13.10.13. Sensor PAD0 preset ID

    为传感器 PAD0 选择 IPL 阶段 earlyinit 设置


    13.10.14. Sensor PAD2 preset ID

    为传感器 PAD2 选择 IPL 阶段 earlyinit 设置


    13.10.15. Enable earlyinit IPL log

    启用 IPL 阶段 earlyinit 调试消息,开启此选项可能会增加从系统上电到第一张图像帧出现之间的时间。


    13.11. Rtos Application Options

    rtos app 相关配置选项


    13.11.1. Support audio application

    编译音频应用。


    13.11.2. Support bench application

    编译 bench 应用,会去调用 coremark 功能。


    13.11.3. Support bootloader application

    编译 rtos 模拟 bootloader 应用。


    13.11.4. Support coremark application

    编译 coremark 应用。


    13.11.5. Support pipeline demo applications

    编译串流示例应用。


    13.11.5.1 Support application selector

    支援板端动态切换已选的应用。


    13.11.5.2 Support CarCam application

    支援CARDV应用


    13.11.5.3 Support USB gadget application

    开启USB gadget 应用。


    13.11.5.4 USB_GADGET application config

    USB gadget 应用配置。


    13.11.5.4.1 Support IPU in USB gadget application

    在USB gadget 应用上支援 IPU功能


    13.11.5.4.2 Support IPU Detect Stream Number

    设定哪一路 SNR 要开启 IPU侦测功能


    13.11.5.4.3 Support FD3A by IPU

    IPU侦测的结果对 FD3A的支援


    13.11.5.4.4 Support MISC partition signature verification

    支持MISC分区签名验证


    13.11.5.4.5 Support usb auto test

    支持USB自动化测试


    13.11.5.5 Support Cust USB gadget

    对客户 USB gadget 上的支援


    13.11.5.6 Support IPC application

    编译客制化 USB gadget。


    13.11.5.7 IPC application config

    IPC应用配置


    13.11.5.7.1 enable MI_SDK_PIPELINE

    开启 IPC 应用中的 MI 串流


    13.11.5.7.2 Support AI APC in IPC application

    开启 IPC 应用中的 AI APC 功能


    13.11.5.7.3 Support SED in IPC application

    开启 IPC 应用中的 SED 功能


    13.11.5.7.4 Support IPU in IPC application

    开启 IPC 应用中的 IPU 功能


    13.11.5.7.5 Support OSD ARGB1555 in IPC application

    IPC 应用中开启 OSD 使用 ARGB1555格式。


    13.11.5.7.6 Support OSD BMP in IPC application

    IPC 应用中开启 OSD 使用 BMP格式。


    13.11.5.7.7 Support LDC in IPC application

    开启 IPC 应用中的 LDC 功能


    13.11.5.7.8 Support VDF in IPC application

    开启 IPC 应用中的 VDF 功能。


    13.11.5.7.9 Support PANEL in IPC application

    开启 IPC 应用中的 PANEL 功能。


    13.11.5.7.10 LDC calibration file format

    设置LDC 校准文件格式。


    13.11.5.8 Support Auto Bsp Test

    编译 rtos_bsp_demo 应用。


    13.11.5.9 Applications Supported in sdk/verify/ssmid

    编译 Sgs 中间件应用。


    13.11.5.10 Sgs Middleware Rtos Configuration

    应用配置,Sgs 中间件应用菜单


    13.11.5.10.1 Support Sgs Middleware Preload application

    编译 SGS 中间件 preload 应用。


    13.11.5.10.2 Sgs Middleware Preload File

    选择配置 SGS 中间件 preload 应用串流的 json 文件


    13.11.5.11 Applications supported in sdk/verify/sample_code

    编译 sample code中的应用。


    13.11.5.12 Applications configuration

    应用配置,打开选择应用菜单。


    13.11.5.12.1 Support CM4 application

    编译 CM4 相关应用。


    13.11.5.12.2 Support PRELOAD SAMPLE application

    编译 PRELOAD SAMPLE 应用。


    13.11.5.12.3 Support DUALOS SAMPLE application

    编译 DUALOS SAMPLE 应用。


    13.11.6. Camera setting storage

    选择 IPC pipeline 的配置load位置,misc或bootenv。


    13.11.7. Support CUS3A

    编译CUS3A。


    13.11.8. CUS3A AF enable map

    使能CUS3A AF 模块。


    13.11.9. Support Cust ISP

    支援 cust ISP。


    13.11.10. Support LPC driver

    编译 LPC 相关驱动。


    13.11.11. USB gadget options


    13.11.11.1 Composite device supports UVC function

    复合型设备支援UVC功能,Video相关功能


    13.11.11.2 Composite device supports UAC function

    复合型设备支援UAC功能,Audio相关功能


    13.11.11.3 Composite device supports HID function

    复合型设备支援HID功能,USB-HID是Universal Serial Bus-Human Interface Device的缩写,

    由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。


    13.11.11.4 Composite device supports Mass Storage function

    复合型设备支援MSDC功能,Mass Storage 是USB协议中的一部分, 是大容量存储器或者海量存储器的意思。

    我们的U盘就是利用的这个协议开发和制作的。遵从这个协议,可以让我们的USB从设备连接到USB Host设备上,并能够执行文件的传输(存储和读写等)。 一般的操作系统都集成了这个协议的驱动,所以我们的U盘等存储设备插入到PC上时,才不用安装驱动。


    13.11.11.5 Composite device supports Cummunication Device function

    复合型设备支援CDC功能,USB转串口即实现计算机USB接口到通用串口之间的转换。为没有串口的计算机提供快速的通道,

    而且,使用USB转串口设备等于将传统的串口设备变成了即插即用的USB设备。

    注意 以下是针对标准的CDC ACM的device的配置, 如果device不是cdc acm function, 需要开对应厂商config才能用


    13.11.11.6 Support USB Suspend To RAM feature

    USB进入Suspend状态时,支援STR省电模式


    13.11.11.7 Enable Vbus detection by GPIO

    Device跟Host断开,透过GPIO来判断是否有装置在上面。


    13.11.11.8 USB classes to support

    USB 支援的种类


    13.11.11.8.1 Support CDC class

    USB 支援 CDC


    13.11.11.8.2 Support HID class

    USB 支援 HID


    13.11.11.8.3 Select HID usage

    选择 HID 的使用场景


    13.11.11.8.4 Support MSC class

    USB 支援 MSC


    13.11.11.8.5 Support UAC class

    USB 支援 UAC


    13.11.11.8.6 UAC gadget options

    UAC 的配置选项:

    1. Support UAC MIC

      支援 UAC MIC 功能

    2. Support UAC speaker

      支援 UAC 的扬声器

    3. Supports UAC latency fine tune (TEAMS.SPEC.105ms)

      支援UAC 延时微调

    4. Supports UAC vesion

      USB 支援 UAC 的版本


    13.11.11.8.7 Support UVC class

    USB 支援 UVC


    13.11.11.8.8 UVC gadget options

    UVC 的配置选项:

    1. Number of UVC video streams

      UVC 视频流的数量

    2. Multiple UVC video streams

      多个 UVC 的视频流

    3. Support UVC status interrupt

      支援 UVC 中断

    4. Support window hello matadata header

      支援窗口的数据头


    13.11.12. Support rtos system unit test

    编译 rtos 的系统单元测试应用。


    13.11.13. Support mbx test application

    编译 mbx 测试应用。


    13.12. RTOS Master HW core ID

    指定RTOS运行在哪个物理核上。


    13.13. Fast Demo

    是否打包fast demo相关文件,并开机后自动运行。此参数是在image打包过程中生效的。


    13.14. Sensor Type

    Sensor型号,此参数会在打包过程中拷贝Sensor相关的资源文件到image对应的分区目录。例如:

    cp -rf $(PROJ_ROOT)/board/$(CHIP)/iqfile/$(SENSOR_TYPE)/$(SENSOR_TYPE)_api.xml $(miscL$(RESOURCE))
    

    13.15. Sensor1 Type

    Sensor1 型号,设定拷贝的 sensor1 相关资源。


    13.16. Sensor2 Type

    Sensor2 型号,设定拷贝的 sensor2 相关资源。


    13.17. Preload Setting file

    该参数配置在image打包过程中拷贝到misc/miscL分区的配置文件。与Rtos use application一同生效。

    if [[ "$(CONFIG_RTOS_APPLICATION)" = "dualos_camera" || "$(CONFIG_RTOS_APPLICATION)" = "usb_gadget_app" || "$(CONFIG_RTOS_APPLICATION)" = "aov_preload" || "$(CONFIG_RTOS_APPLICATION)" = "app_selector" ]]; then \
        cp $(PROJ_ROOT)/board/rtos/$(PRELOAD_FILE) $(misc$(RESOURCE))/PreloadSetting.txt ; \
    fi;\
    if [ -n "$(CONFIG_SSMID_PRELOAD_FILE)" ]; then \
        $(call copy_if_exists,$(PROJ_ROOT)/../sdk/verify/sample_code/libraries/ssmid_config/resource/$(CHIP)/$(CONFIG_SSMID_PRELOAD_FILE),$(misc$(RESOURCE))/ptree.json) \
    fi;
    

    13.18. dla firmware

    该参数配置在image打包过程中拷贝到misc/config分区的dla使用的固件


    14. Vmm

    14.1. Vmm Load Addr

    vmm 起始地址。


    14.2. Vmm Memory Size

    Vmm 使用的大小 。


    14.3. Vmm Limit Memory Size

    Vmm 限制的大小 。


    15. pm_rtos

    pm_rtos是为具有cm4硬件的CHIP配置的,其是独立于arm的另一套软硬件架构。


    15.1. pm_rtos enable

    pm_rtos功能开启配置。此配置在编译时期和打包时期生效。


    15.2. pm_rtos Bin

    打包image时拷贝的pm_rtos Bin名称。此配置在image打包过程中生效,文件路径在Image Partition Config对应文件中配置。


    15.3. run cm4 demo at startup

    在启动时运行 cm4 demo


    15.4. pm_rtos build toolchain

    编译pm_rtos所使用的toolchain,请参考环境搭建。此配置在编译时期生效。


    15.5. pm_rtos build config

    编译pm_rtos所使用的config文件名称。此配置在编译时期生效。


    16. Android

    Android编译环境配置。


    16.1. Android Ndk

    Android编译环境配置, 目前此配置仅支持opera。


    16.1.1. NDK API Version

    Android NDK API版本。


    16.1.2. NDK Clang Version

    Android NDK使用的Clang编译器版本。


    16.1.3. NDK Clang Target

    Android NDK编译目标平台。


    16.1.4. NDK Binutils Prefix

    Android NDK编译工具前缀。


    17. SECURE_BOOT

    安全启动相关配置。


    17.1. SECURE_BOOT

    安全启动实现选用的具体算法。此选项在image编译时生效。


    17.2. IMAGE_AES_DETAILS

    安全启动时image aes配置。此选项仅在SECURE_BOOT选择aes相关算法是生效。此选项在image编译时生效。


    17.3. Secureboot_debugmode

    安全启动调试模式。将会增加一些信息打印。此选项在image编译时生效。


    17.4. IPL_With_AES

    IPL AES加密选项。


    17.4.1. IPL_ENCRYPT

    IPL是否加密。此选项在IPL 编译时生效。


    17.4.2. IPL_AES_DETAILS

    安全启动时ipl aes配置


    18. Sdk Config

    sdk目录编译配置。


    18.1. sdk support

    是否编译和打包MI相关code


    18.2. Verify Compile Config

    sdk/verify目录编译配置。


    18.2.1. cardv_app

    是否编译和打包cardv/app目录内容。cardv_app是SGS为客户提供的Cardv后端软件。


    18.2.2. cardv iq bin list

    cardv 使用的 iq bin 列表


    18.2.3. cardv_ui

    是否编译和打包cardv/ui目录内容。cardv_ui是SGS为客户提供的Cardv前端显示软件。


    18.2.4. cardv_ffmpeg

    cardv app 使用到ffmpeg lib。


    18.2.4.1. ffmpeg_version

    选择cardv app所用到的ffmpeg版本。


    18.2.5. cardv_ui_type

    cardv ui 应用类型。


    18.2.5.1. zkgui

    是否编译和打包 zkgui 应用。


    18.2.5.2. cmsui

    是否编译和打包 cmsui 应用。


    18.2.6. mi_demo

    是否编译和打包mi_demo目录内容。mi_demo为mi内部模块ut测试相关的应用和配置文件。


    18.2.7. sample_code

    是否编译和打包 sample_code 目录内容。sample_code 是 SGS 为客户提供的一套开源的场景演示项目。


    18.2.8. samples binary release


    18.2.8.1. pack_sample

    pack sample会将sample demo打包到镜像里,emmc的版本才会配置这个,因为emmc的size比较大,nand和nor版本一般不配置这项。


    18.2.8.2. 3rd_party_libs

    3rd party libs会将第三方的库拷贝到镜像里


    18.2.8.3. ssplayer_enable

    ssplayer enable打开会编译sspler播放器


    18.2.8.4. bootlogo_mem_free_enable

    bootlogo mem free enable打开会编译出一个demo,这个demo用来清内存的


    18.2.8.5. mp3player_enable

    mp3player enable打开会编译mp3player播放器


    18.2.9. bsp_demo

    是否编译和打包bsp_demo目录内容。bsp_demo是SGS内部一套自动化测试bsp各个模块的测试框架。


    18.2.10. system_app

    是否编译和打包system_app目录内容。system_app是SGS内部一套自动化测试测试框架。


    18.2.11. ssmid

    是否编译和打包ssmid目录内容。ssmid是SGS内部开发的快速集成多场景的中间件。


    18.2.12. ssmid binary release


    18.2.12.1. release ssmid launch

    是否打包ssmid目录内容。如果有打开,则会拷贝ssmid-launch 相关的bin和资源文件到/customer/ssmid/下面


    18.2.13. amigos

    是否编译和打包ssmid目录内容。ssmid是SGS内部开发的测试多场景的测试框架。


    18.2.14. amigos binary release


    18.2.14.1. release amigos preview

    是否打包amigos目录内容。如果有打开,则会拷贝amigos preview相关的bin和资源文件到/customer/amigos/下面


    18.2.15. py_ipu

    是否打包py_ipu。如果打开,则会拷贝py_ipu库的whl文件到debian的/usr/local/share下。


    18.2.16. ffmpeg compile type

    用于配置ffmpeg编译类型,并根据对应功能开关自动选择默认值。


    18.3. Osdk Compile Config

    openSource sdk编译选项


    18.3.1. drm

    DRM模块是linux 原生支持的显示框架,用于替代DISP模块作为显示输出方案。开启该选项后编译sgs_drm.ko,显示硬件由sgs_drm统一管理;运行时不应同时加载mi_disp/mi_hdmi/mi_vdisp。


    18.3.2. gles_ldc

    基于OpenGLES实现的ldc畸变矫正模块。目前仅opera支持。


    18.4. sdk generic defconfig

    公有的 defconfig,包含公有的一些 config 选项。


    18.5. Merge all mi modules to a sgs_mi.ko

    将所有mi模块集成打包为一个sgs_mi.ko,以达到节省内存的目的。


    18.6. Set combine ignore modules name

    在 将所有mi模块集成打包为一个sgs_mi.ko时,设置需要忽略的模块


    19. PMIC

    PMIC编译配置。


    19.1. enable PMIC

    开启PMIC


    19.2. name of PMIC.bin

    编译镜像的名称


    19.3. name of PMIC device

    PMIC设备名称


    19.4. I2C bus for PMIC

    PMIC接在SOC那组I2C bus上


    19.5. I2C padmode for PMIC

    PMIC I2C padmode


    19.6. specify the toolchain

    PMIC镜像编译工具链


    19.7. specify the path for pmic toolchain

    PMIC镜像编译工具链路径


    20. Generic Options


    20.1. Chip

    芯片型号系列名称。以iFord系列为例,该系列芯片包含bga1、bga2、qfn128以及搭配不同DDR的组合。该参数在bringup阶段后一般不需要修改,新增defconfig只需要使用已有型号即可。该参数会影响project目录中的一些资源存放路径。


    20.2. Interface Compile Config

    mi相关的编译配置。仅当sdk/interface目录存在时生效。此目录下配置均在编译时生效,故以下各项不再单独说明。


    20.2.1. aio

    audio编译相关编译配置。启用ai或者ao模块则aio默认开启。


    20.2.1.1 mi_aio

    打开 aio 模块


    20.2.2. ai

    audio in 模块编译开关。编译产物为mi_ai.ko


    20.2.2.1 KAPI

    是否将 ai_api.c 编译进 mi_ai.ko


    20.2.2.2 mi_ai

    打开 ai 模块


    20.2.3. ao

    audio out模块编译开关。编译产物为mi_ao.ko


    20.2.3.1 KAPI

    是否将 ao_api.c 编译进 mi_ao.ko


    20.2.3.2 mi_ao

    打开 ao 模块


    20.2.4. aqserver

    开启 aqserver 算法。


    20.2.4.1 ALG_APC

    决定是否去编译


    20.2.5. cipher

    用于加解密的cipher模块。


    20.2.6. common

    mi common模块,为其他mi模块提供一些公有功能支持。所有mi ko要后于该模块被安装。


    20.2.7. cus3a

    cus3a算法模块。用户可自行开发AWB/AE/AF算法库透过注册AWB/AE/AF Interface与ISP连接。关闭后isp则不能使用该模块相关功能。


    20.2.8. debug

    mi_debug.ko编译开关。其功能设置请参考:PROC_DEBUG


    20.2.8.1. trace_cam_os_mem

    20.2.9. disp

    DISP是一个视频显示单元,主要功能是对前端输出的图像做硬件拼图,并对硬件拼图后的图像进行颜色空间转换,最终通过HDMI/VGA/MIPI/TTL等接口输出到显示器或LCD。此模块依赖mhal_disp功能,故将会强制打开。disp功能为内部模块提供功能支持。mi fb模块依赖disp功能,故当mi fb打开时disp将会强制打开。mi disp为用户层调用提供接口。


    20.2.9.1. mi_disp

    开启 disp 模块


    20.2.9.2. DISP_STATISTIC_DISABLE

    是否去打开 STATISTIC


    20.2.9.3. DBG_DISABLE

    是否去打开 DISP_DEBUG


    20.2.9.4. SYSFS_DISABLE

    是否去打开 SYSFS


    20.2.10. gfx

    GFX(Graphic Engine)硬件为画UI提供快速的图形绘制功能,主要有矩形色彩填充、位图搬移(支持缩放、旋转、镜像翻转、格式转换、alpha混合叠加、Color Key等操作)。目前仅Taiyaki、Takoyaki、Tiramisu、Ikayaki、Muffin、Mochi系列芯片支持GFX。mi gfx模块提供用户接口,编译产物为mi_gfx.ko


    20.2.11. hdmi

    HDMI (High Definition Multimedia Interface),即高清多媒体接口,是一种全数字化视频和声音发送接口,可以同时发送未压缩的音频及视频信号。

    HDMI可以分为TX 端RX端,TX即source设备,用来将数据传输给RX(sink设备)。本模块目前只支持基于HDMI ver1.4 的HDMITx。mi hdmi模块为用户层提供该模块的操作接口。


    20.2.12. ipu

    MI IPU模块实现了AI模型的推演功能加速。通过channel支持多个AI模型的推演,支持模块内部分配input/output Tensor,也支持直接使用前一级模块out buffer 作为input Tensor。


    20.2.12.1. mi_ipu

    开启 ipu 模块


    20.2.13. iqserver

    IQSERVER(Image Quality tuning Server)图像质量调校服务,用来完成调校工具(IQTool)和开发板之间的数据通信,包括ISP参数设置,获取图像,上传/下载相关文件等功能。


    20.2.14. isp

    图像信号处理(Image Signal Processing),实现HDR、3D/2D降噪、3A算法、WDR等相关功能。此模块编译同时依赖vif和sensor模块。isp子选项默认全开


    20.2.14.1. KAPI

    是否将 isp_api.c 编译进 mi_isp.ko


    20.2.14.2. mi_isp

    开启 isp 模块


    20.2.15. ispalgo

    isp算法模块,为用户提供接口。此模块依赖于isp模块。


    20.2.16. ive

    IVE(Intelligent Video Engine)是处理芯片智能分析系统中的硬件加速模块。


    20.2.17. jpd

    JPD解码模块提供创建解码通道、控制解码及传送码流等功能。jpd开启时mhal_jdp默认开启,mi_jpd为用户层调用提供接口。


    20.2.18. ldc

    镜头畸变矫正(Lens distortion correction),目前模块支持功能包括镜头畸变矫正、投影变换映射函数、图像拼接、图像拼接区域融合、防抖功能以及查找表功能。ldc开启时mhal_ldc默认开启,mi_ldc为用户层调用提供接口。


    20.2.18.1. mi_ldc

    打开 ldc 模块


    20.2.19. mipitx

    将Dram数据通过MIPI接口协议发送出去。mi_mipitx为用户层调用提供接口。


    20.2.20. rgn

    区域管理模块参与SCL模块的内部流处理的一个环节。底层硬件模块支持是GOP(Graphic output path),

    区域管理模块是利用 GOP 的特性抽象出来的一套软件接口,利用分时复用的原理使OSD(On-screen display)或者Cover贴到各个通道上。


    20.2.20.1. mi_rgn

    fb功能依赖于此模块。此模块开启时mhal_rgn默认开启。mi_rgn为用户层调用提供接口。


    20.2.20.2. mi_rgn_osd

    rgn osd支持使能,该功能依赖于mi_rgn,使用OSD功能且芯片支持时打开,可单独关闭。


    20.2.20.3. sw_osd

    OSD 拼图功能。OSD数超过Gwin数之后会自动把距离近的OSD拼到一起,以实现同一个通道上显示更多的OSD(128个)。

    该功能依赖于mi_rgn_osd,使用OSD拼图功能且芯片支持时打开,可单独关闭。


    20.2.20.4. overlay_blending

    OSD重叠区 blending功能。通过配置alpha,实现OSD重叠区的Blending效果。该功能依赖于sw_osd,使用OSD overlay_blending功能且芯片支持时打开,可单独关闭。


    20.2.20.5. mi_rgn_mff

    mi_rgn_mff支持使能,MFF包括Cover Frame Line功能,该功能依赖于mi_rgn,使用MFF功能且芯片支持时打开,可单独关闭。


    20.2.20.6. support_cover

    Cover支持使能,该功能依赖于mi_rgn_mff,使用Cover功能且芯片支持时打开,可单独关闭。


    20.2.20.7. mosaic

    Mosaic支持使能,该功能依赖于support_cover,使用Mosaic功能且芯片支持时打开,可单独关闭。


    20.2.20.8. cover_map

    多边形Cover功能,该功能依赖于support_cover,使用多边形Cover功能且芯片支持时打开,可单独关闭。


    20.2.20.9. support_frame

    Frame功能使能,该功能依赖于mi_rgn_mff,使用Frame功能且芯片支持时打开,可单独关闭。


    20.2.20.10. support_line

    Line功能使能,该功能依赖于mi_rgn_mff,使用Line功能且芯片支持时打开,可单独关闭。


    20.2.20.11. mi_rgn_ci

    color invert支持使能,该功能依赖于mi_rgn,使用color invert功能且芯片支持时打开,可单独关闭。


    20.2.20.12. buffer cnt

    buffer cnt统计功能,用于记录rng申请和释放buffer的数量,该功能依赖于mi_rgn,需要观察RGN buffer使用情况时打开,可单独关闭。


    20.2.20.13. mhal_rgn

    fb功能依赖于此模块。此模块开启时mhal_rgn默认开启。mi_rgn为用户层调用提供接口。


    20.2.21. sed

    SED(Smart Encoder)主要提供智能编码通道的创建和销毁、开启和停止检测源图像、计算结果并关联到指定的编码通道等功能。


    20.2.22. sensor

    SNR(sensor)模块实现获取摄像头接口信息、调整分辨率和帧率等功能。isp依赖于此模块。此模块与vif相互依赖。mi_sensor为用户层调用提供接口。


    20.2.22.1. KAPI

    将 sensor 的 api.c 编译进 ko


    20.2.22.2. mi_sensor

    打开 sensor 模块


    20.2.22.3. sensor support debug cmd

    sensor 是否去支持cmd debug


    20.2.22.4. sensor support csi interrput

    sensor 是否去支持 csi interrput


    20.2.22.5. sensor support IR

    sensor 是否去支持 IR


    20.2.22.6. sensor support realtime dual sensor

    是否去支持 realtime dual sensor


    20.2.22.7. sensor support PWM

    sensor 是否去支持 PWM


    20.2.23. sys

    MI_SYS是整个MI系统的基础模块,它给其他MI模块的运行提供了基础环境。


    20.2.23.1. KAPI

    将 sys_api.c 编译进 mi_sys.ko


    20.2.24. vdec

    vdec为视频解码模块,提供解码通道创建、码流传送及控制、输出图像裁剪和缩放等功能。nvr/xvr场景需要此模块,ipc场景一般不需要此模块。


    20.2.24.1. KAPI

    将 vdec_api.c 编译进 mi_vdec.ko


    20.2.25. vdf

    VDF实现MD,OD,VG视频通道的初始化,通道管理,视频检测结果的管理和通道销毁等功能。


    20.2.26. vdisp

    VDISP(virtual display)模块设计用来组合多份YUV/RGB等颜色空间的数据成一张全幅输出,并为每一个数据输入指定一个缩略图形式的显示窗口。特定缩略图窗口支持区域重叠。


    20.2.27. venc

    视频编码(video encoder)模块主要提供视频编码通道的创建和销毁、开启和停止接收图像、设置和获取编码通道属性、获取和释放码流等功能。此模块依赖vdec模块


    20.2.27.1. KAPI

    将 venc_api.c 编译进 mi_venc.ko


    20.2.27.2. mi_venc

    打开 venc 模块


    20.2.28. vif

    视频输入(video interface)实现启用视频输入设备、视频输入通道、绑定视频输入通道等功能。ispsensor模块均依赖此模块。vif子选项均需要默认开启,可根据需求调整mhal_vif log level与mhal_ispscl_log_level。


    20.2.28.1. mi_vif

    打开 vif 模块


    20.2.28.2. KAPI

    将 vif_api.c 编译进 mi_vif.ko


    20.2.28.3. vif_debug_interface

    是否去使能 vif interface 层的debug


    20.2.28.4. driver layer debug level

    驱动层调试级别


    20.2.29. vif support virtual layer

    vif支持虚拟层


    20.2.30. scl

    SCL将原始画面缩放到各个output port 指定分辨率。每个scl按照输入数据源的类型划分成不同的Device, 每一个output port 端口有crop/scaling/mirror/flip/pixel 转换功能。scl依赖于mhal_vpe功能,mi_scl为用户层调用提供接口。


    20.2.30.1. KAPI

    将 scl_api.c 编译进 mi_scl.ko


    20.2.30.2. mi_scl

    打开 scl 模块


    20.2.31. wlan

    无线局域网(wlan),提供了简单的wifi信号的扫描。连接功能,提供了对AP以及STA模式的支持。


    20.2.32. pcie

    PCIe(Peripheral component interconnect express)是一种通用的高速串行总线接口标准,广泛用于PC、手持设备、工业等各个领域。

    MI_PCIE具有MI通道(channel)和设备(device)的特性,通过其他MI模块与MI_PCIE模块的通道绑定的方式,可使MI内部的数据流经过PCIe的总线通讯传输到另外的SOC上。

    MI_PCIE另外提供用户层直接操作PCIe总线DMA的接口用于用户自定义数据类型的传输,并且提供一套基于PCIe总线的消息同步机制---RPMSG,消息同步结合PCIe总线DMA可以使用户扩展基于PCIe的传输协议。目前仅Muffin平台支持。


    20.2.32.1. mi_pcie

    打开 pcie 模块


    20.2.32.2. mhal_PCIE

    默认打开,决定是否参与编译


    20.2.33. dsp

    数字信号处理模块,目前仅Muffin平台支持。


    20.2.34. dpu

    DPU通过对多对摄像头输入的左右图像,进行特定算法处理后,输出与输入图像对应的深度信息。根据深度信息,通过计算可获得图像中物体相对摄像头的距离。


    20.2.34.1. KAPI

    将 dpu_api.c 编译进 mi_dpu.ko


    20.2.34.2. mi_dpu

    打开 dpu 模块


    20.2.35. dummy

    dummy模块实现了将inputBuf拷贝为outputBuf的简单工作流程。用户可将其outputBuf使用sys接口inject给下一级模块的inputPort。由于dummy属于mi模块所以它也支持mi proc查看debug信息。方便掌控buffer和帧率信息。副作用是由于有拷贝动作将会增加带宽消耗。


    20.2.36. fb

    MI_FB是一个基于Linux Framebuff实现的图形层设备驱动。它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作,用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由MI_FB模块驱动来完成。在提供Linux Framebuff基本功能的基础上,MI_FB还提供了一些扩展功能,如层间Alpha、ColorKey、设置显示区域等。fb依赖于mhal_rgn功能。


    20.2.36.1. KAPI

    将模块的 api.c 编译进模块的 ko 中


    20.2.36.2. disp_path

    MI_FB UI支持直接叠加到DISP模块上,只有DISP存在GOP硬件的chip支持该路径设置。disp_path依赖于disp模块。可根据需求单独关闭,节省code size。


    20.2.36.3. video_path

    MI_FB UI支持通过MI_RGN模块叠加到OSD可以attach的模块上。video_path依赖于rgn模块。可根据需求单独关闭,节省code size。


    20.2.37. nir

    在低照度环境下,可见光图像保留了图像的颜色信息,但信噪比差,细节丢失严重;红外图像有相对较高的信噪比,且细节表现较好,但丢失了图像的颜色信息。

    NIR模块通过将上述可见光图像和红外图像进行融合,既保留颜色信息,同时提升图像细节和信噪比,从而提高低照度环境下的图像质量。

    nir依赖于mhal_nir功能,mi_nir为用户层调用提供接口。


    20.2.38. hvp

    HVP用途主要是为了接入HDMIRX的video数据,经过简单的缩放、裁剪和帧率变换,向后传递给DISPSCL;帧率变化通过控制内部DMA访问的buffer深度来实现,运行方式目前支持frame mode/realtime mode两种,realtime mode下数据不经过内部DMA、无法做帧率控制。hvp依赖于mhal_hvp功能,mi_hvp为用户层调用提供接口。目前仅opera支持。


    20.2.38.1. mi_hvp

    打开 hvp 模块


    20.2.38.2. mhal_HVP

    默认打开,决定是否去参与编译


    20.2.39. pspi

    通过PSPI从sensor获取图像数据,或将图像数据通过PSPI传输到panel。pspi依赖于mhal_pspi功能,mi_pspi为用户层调用提供接口。


    20.2.40. hdmirx

    HDMI 分为RX 端和 TX端,TX 即为source 设备,用来将数据传输给RX 设备(Sink设备)。RX 端就是接收端,接收TX发送过来的HDMI信号。


    20.2.41. vge

    集成了多项图像处理功能,可以对一幅输入图像进行处理,如像素格式转换、Cover、OSD、Mosaic、画线、Faceframe等。


    20.2.41.1. mi_vge

    打开 vge 模块


    20.3. MI debug level and compiler options for code size verify config

    一些影响code size的编译配置。


    20.3.1 Mi Dbg

    开启 MI DBG


    20.3.2 Valid mi log level

    选择需要编译的log等级。


    20.3.3 MI USER LIB OPTIMAZITION

    user lib编译时传递给编译器使用的代码优化等级。


    20.3.4 enable mi kapi for mi interface called from kernel space

    编译mi user api相应的kapi,这些kapi接口函数与参数和user api一致,但kapi是为了使用者在kernel mode调用的,因此ko在编译运行时会多导出一些符号,这将增加一定的code szie。


    20.3.5 enable mi log FUNCTION info

    允许log中打印函数名。


    20.3.6 enable mi log FILE info

    允许log中打印其所在文件。


    20.3.7 use -ffunction-sections, -fdata-sections and --gc-sections to remove unused code

    使用 -ffunction-sections 以及 -fdata-sections 去将每个函数和变量都输出到一个 section,从而让链接器使用 --gc-sections 去回收没有被使用的函数和变量。但是注意这个可能会增加 codesize(因为 .symtab 里面的 t/d 数量会增加),为了避免 codesize 增加,需要配合 MINIMAL_MI_KO 使用。


    20.4. Proc Debug

    mi层proc debug功能,开启后可以通过对应模块的节点cat出一些debug信息。关闭后无法cat出信息。


    20.4.1. DEBUG SUPPORT

    使能 debug 功能


    20.4.2. ENABLE PROC DEBUG

    开启 proc 节点的 debug 功能


    20.4.3. Enable Common Dump Buf Info

    开启过后,可以 dump 出 bufinfo 共同的信息


    20.4.4. Enable Module Dump Buf Info

    开启过后,可以 dump 出 bufinfo 中各个模块的信息


    20.4.5. ENABLE ECHO CMD

    使能 echo cmd debug 功能


    20.4.6. Enable Sys Debug

    开启模块的 debug 功能


    20.4.7. Enable Snr Debug

    开启模块的 debug 功能


    20.4.8. Enable Vif Debug

    开启模块的 debug 功能


    20.4.9. Enable Isp Debug

    开启模块的 debug 功能


    20.4.10. Enable Scl Debug

    开启模块的 debug 功能


    20.4.11. Enable Venc Debug

    开启模块的 debug 功能


    20.4.12. Enable Vdec Debug

    开启模块的 debug 功能


    20.4.13. Enable Ive Debug

    开启模块的 debug 功能


    20.4.14. Enable Jpd Debug

    开启模块的 debug 功能


    20.4.15. Enable Ai Debug

    开启模块的 debug 功能


    20.4.16. Enable Ao Debug

    开启模块的 debug 功能


    20.4.17. Enable Rgn Debug

    开启模块的 debug 功能


    20.4.18. Enable Vge Debug

    开启模块的 debug 功能


    20.4.19. Enable Disp Debug

    开启模块的 debug 功能


    20.4.20. Enable Wbc Debug

    开启模块的 debug 功能


    20.4.21. Enable Hdmi Debug

    开启模块的 debug 功能


    20.4.22. Enable Panel Debug

    开启模块的 debug 功能


    20.4.23. Enable Vdisp Debug

    开启模块的 debug 功能


    20.4.24. Enable Pcie Debug

    开启模块的 debug 功能


    20.4.25. Enable Vdf Debug

    开启模块的 debug 功能


    20.4.26. Enable LDC Debug

    开启模块的 debug 功能


    20.4.27. Enable Dsp Debug

    开启模块的 debug 功能


    20.4.28. Enable Fb Debug

    开启模块的 debug 功能


    20.4.29. Enable Gfx Debug

    开启模块的 debug 功能


    20.4.30. Enable Hvp Debug

    开启模块的 debug 功能


    20.4.31. Enable Pspi Debug

    开启模块的 debug 功能


    20.4.32. Enable hdmirx Debug

    开启模块的 debug 功能


    20.4.33. Enable Nir Debug

    开启模块的 debug 功能


    20.4.34. Enable Dummy Debug

    开启模块的 debug 功能


    20.4.35. Enable Dpu Debug

    开启模块的 debug 功能


    20.5. enable ut api

    用于测试内部 ioctl 接口


    20.6. MI suspend to RAM and standby

    允许在sleep模式下将内容保存在不掉电的内存中,该模式称为STR。


    20.7. MI runtime pm core functionality

    允许mi模块在空闲时自动进入low power模式以达到省电目的,该模式称为runtime pm。


    20.8. Check arithmetic operations overflow

    用于开启/关闭 整型计算overflow检查相关功能


    20.9. Yuv420/nv21 data is max align uv height to 16

    Yuv420/nv21数据向上强制16byte对齐功能。此参数在mi ko/lib编译时生效。


    20.10. remove .ARM.exidx/.ARM.extab, and remove t/d in .symtab

    通过删除 .ARM.exidx/.ARM.extab 以及 .symtab 的 t/d 去减小 mi ko 的 codesize,但是 mi ko 的 backtrace 会无法打印出来。