Visualización de la imagen de arranque de HiSilicon HiMMP, y la imagen de arranque afecta la visualización de la capa de video de la capa de aplicación

hisi3520dv400

1. ¿Dónde existe la imagen?
1) Guárdela en el flash nand, use el servidor tftp para descargar la imagen;

mw.b 82000000 ff 100000
tftp 82000000 1080.jpg
nand erase ec00000 100000
nand write 82000000 ec00000 100000

Leer la imagen de la pantalla del flash

nand read 9f200000 ec00000 100000#从nand flsh上读取数据
setenv jpeg_addr 0x9f200000
setenv jpeg_size 0x100000
setenv vobuf 0x9f300000
decjpg
startvo 0 32 12
startvl 0 0x9f300000 1920 0 0 1920 1080#启动视频层 [layer addr stride x y w h]

2) La imagen se almacena en la tarjeta SD.

Dado que hisi3520dv400 no tiene una interfaz directa de tarjeta SD, debe usar USB a SD

usb start#初始化
fatls usb 0#查看文件

fatload usb 0 9f000000 1.jpg#从SD卡中加载数据
setenv jpeg_addr 0x9f00000 #设置图片解码地址
setenv jpeg_size 100000#设置图片大小
setenv vobuf 0x9f100000#设置输出显示地址
decjpg#解码
startvo 2 1 0#startvo [dev type sync] 
startvl 3 9f100000 768 0 0 720 576#启动视频层 [layer addr stride x y w h]

Problema: después de que se muestre uboot, si no se detiene en 0, no se mostrará el video de la capa de aplicación. Si se detiene, la imagen se cerrará inmediatamente después de mostrarse, lo que no logrará el efecto de la pantalla de la bandeja de arranque.

Solución 1:
Busque el registro stopvo en Uboot y escriba el valor de apagado. No fue exitoso. Parece que no se puede acceder a la dirección directamente. No se encuentra el motivo específico.

HI_BOOL HAL_DISP_SetIntfEnable(HAL_DISP_OUTPUTCHANNEL_E enChan, HI_BOOL enIntf)
{
    
    
    volatile U_DHD0_CTRL DHD0_CTRL;
    volatile HI_U32 addr_REG;
    if(enChan <= CHANNEL_DHD_END)
    {
    
    
        addr_REG = Vou_GetChnAbsAddr(enChan,(HI_U32)&(pVoReg->DHD0_CTRL.u32));
        DHD0_CTRL.u32 = HAL_ReadReg((HI_U32*)addr_REG);
        DHD0_CTRL.bits.intf_en = enIntf;
        HAL_WriteReg((HI_U32*)addr_REG, DHD0_CTRL.u32);
    }
    else
    {
    
    
        HAL_PRINT("Error channel id found in %s: L%d\n",__FUNCTION__, __LINE__);
        return HI_FALSE;
    }
    return HI_TRUE;
}

Solución 2:
agregue un stopvo y luego inicie el programa en mpp

...//省略初始化
//stop
SAMPLE_COMM_VO_StopChn(VoLayer[0], VO_MODE_1MUX);
SAMPLE_COMM_VO_StopLayer(VoLayer[0]);
SAMPLE_COMM_VO_StopDev(VoDev[0]);

SAMPLE_COMM_VO_StopChn(VoLayer[1], VO_MODE_1MUX);
SAMPLE_COMM_VO_StopLayer(VoLayer[1]);
SAMPLE_COMM_VO_StopDev(VoDev[1]);
SAMPLE_COMM_VO_HdmiStop();

//重新初始化
...

El video se puede mostrar normalmente.

Supongo que te gusta

Origin blog.csdn.net/WANGYONGZIXUE/article/details/106624329
Recomendado
Clasificación