Alkaid Defconfig¶
REVISION HISTORY¶
| Revision No. | Description |
Date |
|---|---|---|
| 1.0 | 02/01/2024 | |
| 1.1 | 05/29/2024 | |
| 1.2 | 06/03/2024 | |
| 1.3 | 07/02/2024 | |
| 1.4 | 08/12/2024 | |
| 1.5 | 08/12/2024 | |
| 1.6 | 03/12/2025 | |
| 1.7 | 03/31/2025 | |
| 1.8 | 05/27/2025 | |
| 1.9 | 09/19/2025 | |
| 1.10 | 10/13/2025 | |
| 1.11 | 02/05/2026 |
1. 概述¶
1.1. 功能说明¶
alkaid defconfig是整个project编译环境的顶层配置文件,defconfig依托于menuconfig的形式提供了图形化配置界面。
为显示menuconfig界面请参照环境搭建文档设置好toolchain后在project目录执行:

图1-1 alkaid defconfig对应的menuconfig图形界面
alkaid defconfig主要的配置项如下:
- 产品形态
- 开发板
- 工具链配置
- Uboot配置
- OPTEE
- DRAM_LAYOUT配置
- linux kernel配置
- image打包相关配置
- Sensor摄像头传感器配置
- Init System
- 杂项功能配置
- RTOS配置
- Vmm
- pm_rtos
- Android
- SECURE_BOOT
- Sdk 配置
- PMIC 配置
- Generic Options
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配置就存在于:
如果不同Board需要有不同的配置可参考该路径新增配置。
3.2. Board Name¶
开发板型号全称,一般不需要修改。此参数会影响image打包过程中使用到的一些配置脚本,以iFord为例:
目录下会保存一些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为例:
该目录会安装一些事先编译好的lib以及编译过程中产物以供后续image打包阶段使用。
4.3. Toolchain Version¶
工具链方案对应的软件版本。参数影响同上。
4.4. Toolchain Rel¶
工具链前缀,bringup时已经确定,一般不需要修改。以iFord为例:
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的路径为:
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的路径为:
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自己的分区配置文件。
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进行编译并打包的文件。对应文件的存放路径为:
使用者可根据自己需要进行添加修改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
12.17. BOOTLOGO¶
BOOTLOGO选项。此选项在image打包阶段生效。此选项目前在opera用于配置bootcmd,iford之后的chip用于打包bootlogo所需的配置文件和图片。
12.17.1. Support 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 的配置选项:
-
Support UAC MIC
支援 UAC MIC 功能
-
Support UAC speaker
支援 UAC 的扬声器
-
Supports UAC latency fine tune (TEAMS.SPEC.105ms)
支援UAC 延时微调
-
Supports UAC vesion
USB 支援 UAC 的版本
13.11.11.8.7 Support UVC class¶
USB 支援 UVC
13.11.11.8.8 UVC gadget options¶
UVC 的配置选项:
-
Number of UVC video streams
UVC 视频流的数量
-
Multiple UVC video streams
多个 UVC 的视频流
-
Support UVC status interrupt
支援 UVC 中断
-
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对应的分区目录。例如:
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)实现启用视频输入设备、视频输入通道、绑定视频输入通道等功能。isp和sensor模块均依赖此模块。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数据,经过简单的缩放、裁剪和帧率变换,向后传递给DISP或SCL;帧率变化通过控制内部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 会无法打印出来。