Mochi与Tiramisu平台SDK使用差异
-
AUDIO接口完全重构,具体请参考API文档 MI AI API 和 MI AO API 以及demo(sdk\verify\xvr_demo\source\audio_all_test_case)。
-
MI_VDEC_CreateDev 接口可选调用(需要传入最大支持宽高,比如4096x4096;否则解码最大宽高只能到3840x2160)。
-
MI_ISP_ChnParam_t 增加参数bY2bEnable,可以通过MI_ISP_SetChnParam使能yuv to bayer的转换功能。如果VIF传过来的是YUV数据(隔行相机只能采集YUV格式),又想做3DNR(只支持bayer格式做3DNR),则需要设置bY2bEnable=TRUE。
-
MI_VDEC有两个device,每个device的最大解码能力为4K50,用户使用时需要计算好每个device的解码规格,避免单device超规格而另一个device富余的情况。
-
MI_DISP 64路显示注意事项(参考API使用文档 MI DISP API中 MI_DISP_BindVideoLayer的映射关系介绍):
1)layer0 和layer2 同时绑定到dev0。
2)layer0和layer2的,宽高大小都要根据实际timing来设置,不需要切分。
3)对于mi disp api 传入的channel,layer0和layer2 都分别是0-31。
4)对于mi sys bind,传入的channel,layer0 是0-31,layer2是33-64,因为中间还有一个layer1(用于PIP)固定使用了32。
-
MI_SYS_Init 需要早于其他 MI 模组的 Init 函数调用,且必须调用;如果是多进程使用MI模块,则每个进程都要调用MI_SYS_Init,否则系统会卡住。
-
Mochi的scl的device只有0和1(对应7组硬件),而tiramisu的scl的device有0/½/3(对应6组硬件)。
-
FB使用的内存需要在bootargs和/misc/config.ini设定。
setenv bootargs ubi.mtd=ubia,2048 root=/dev/mtdblock5 rootfstype=squashfs ro init=/linuxrc LX_MEM=0x80000000 mma_heap=mma_heap_name0,miu=0, sz=0x40000000 mma_heap=mma_heap_fb,miu=0,sz=0x1020000 mma_memblock_remove=0 cma=2M mtdparts=nand0:1536k@1280k(BOOT),1536k(BOOT_BAK),256k(ENV),5m(KERNEL), 5m(RECOVERY),6m(rootfs),1m(MISC),109056k(ubia)
config.ini设定方式跟之前fbdev.ini一致。
[FB_DEVICE_0] FB_HWLAYER_ID = 1 FB_HWWIN_ID = 0 FB_HWLAYER_DST = 3 FB_HWWIN_FORMAT = 5 FB_HWLAYER_OUTPUTCOLOR = 0 FB_WIDTH = 1280 FB_HEIGHT = 720 FB_TIMMING_WIDTH = 1920 FB_TIMMING_HEIGHT = 1080 FB_MMAP_NAME = E_MMAP_ID_FB FB_BUFFER_LEN = 8192 #unit:Kbyte,4096=4M, fbdev.ko alloc size = FB_BUFFER_LEN*1024
注意如果要用FB的鼠标,bootargs申请的大小要比config.ini中的FB_BUFFER_LEN大0x20000(固定大小)。
实际使用中如果要用多个fb设备,则bootargs申请内存要大于等于多个FB_BUFFER_LEN+128K(鼠标用)之和。
-
Tiramisu的dev0和dev1需要分别bind各自的layer,即dev0 bind layer0~1,dev1 bind layer2~3。
Mochi的disp除了可以使用Tiramisu的绑定方法,还可以dev0 bind layer0~4。即支持两种绑定方法。