ssd202d-logo-cmd_bootlogo分析

cmd_bootlogo.c运行过程

common/autoboot.c:593:  disp_logo(0);
ssd202d-logo-cmd_bootlogo分析_第1张图片

sprintf(cmd_str, "bootlogo %d 1 0 0 0", logo_id);

ssd202d-logo-cmd_bootlogo分析_第2张图片

do_display函数

ssd202d-logo-cmd_bootlogo分析_第3张图片 ssd202d-logo-cmd_bootlogo分析_第4张图片

获取对应结构体,里面有各种参数

ssd202d-logo-cmd_bootlogo分析_第5张图片

ssd202d-logo-cmd_bootlogo分析_第6张图片

ssd202d-logo-cmd_bootlogo分析_第7张图片

========================================================================

_BootJpdYuvCtrl:数据转换

ssd202d-logo-cmd_bootlogo分析_第8张图片

ssd202d-logo-cmd_bootlogo分析_第9张图片

ssd202d-logo-cmd_bootlogo分析_第10张图片

把yuv444转换成yuv420,然后旋转数据也是在这里设置

===============================================================

_BootDispCtrl:显示logo

ssd202d-logo-cmd_bootlogo分析_第11张图片

ssd202d-logo-cmd_bootlogo分析_第12张图片

ssd202d-logo-cmd_bootlogo分析_第13张图片

ssd202d-logo-cmd_bootlogo分析_第14张图片

然后就完成了整套logo显示流程了!

总结:

disp_logo(0);                                        //common/autoboot.c:5
    ->sprintf(cmd_str, "bootlogo 0 1 0 0 0");        
        ->do_display
            -> _BootJpdYuvCtrl
                -> _BootLogoYuv444ToYuv420 //处理数据,旋转就是这里控制
            -> _BootDispCtrl //分辨是什么屏幕类型,mipi,RGB,HDMI
                ->MHAL_DISP_InputPortSetAttr(pInputPortCtx, &stInputAttr);
                ->MHAL_DISP_InputPortFlip(pInputPortCtx, &stVideoFrameBuffer);
                ->MHAL_DISP_InputPortEnable(pInputPortCtx, TRUE);

你可能感兴趣的:(ssd202d,linux)