Mochi与Tiramisu平台SDK使用差异


  1. AUDIO接口完全重构,具体请参考API文档 MI AI APIMI AO API 以及demo(sdk\verify\xvr_demo\source\audio_all_test_case)。

  2. MI_VDEC_CreateDev 接口可选调用(需要传入最大支持宽高,比如4096x4096;否则解码最大宽高只能到3840x2160)。

  3. MI_ISP_ChnParam_t 增加参数bY2bEnable,可以通过MI_ISP_SetChnParam使能yuv to bayer的转换功能。如果VIF传过来的是YUV数据(隔行相机只能采集YUV格式),又想做3DNR(只支持bayer格式做3DNR),则需要设置bY2bEnable=TRUE。

  4. MI_VDEC有两个device,每个device的最大解码能力为4K50,用户使用时需要计算好每个device的解码规格,避免单device超规格而另一个device富余的情况。

  5. 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。

  6. MI_SYS_Init 需要早于其他 MI 模组的 Init 函数调用,且必须调用;如果是多进程使用MI模块,则每个进程都要调用MI_SYS_Init,否则系统会卡住。

  7. Mochi的scl的device只有0和1(对应7组硬件),而tiramisu的scl的device有0/½/3(对应6组硬件)。

  8. 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(鼠标用)之和。

  9. Tiramisu的dev0和dev1需要分别bind各自的layer,即dev0 bind layer0~1,dev1 bind layer2~3。

    Mochi的disp除了可以使用Tiramisu的绑定方法,还可以dev0 bind layer0~4。即支持两种绑定方法。