海思3515开发方案实现开机启动画面功能

来源:互联网 发布:淘宝网火车票 编辑:程序博客网 时间:2024/03/29 07:29

 海思提供的uboot是支持开机启动画面的,在提供的帮助文档中提到了一些命令来实现该功能:

setenv jpeg_addr 0x800C0000

setenv jpeg_size 0x10000

setenv vobuf 0xC7160000 

 

接下来需用tftp下载图片到指定的内存地址中,注意这里的地址必须是一个有效的地址,要不然图片载入不成功。

烧写开机画面:
tftp 0x800C0000 logo.jpg
protect off 0x800C0000 0x800fffff
erase 0x800C0000 0x800fffff
tftp 0x800C0000 logo.jpg

接下来就是解码和显示:

decjpeg

startvo 0 2 7

startvo 2 0 0

stopgx 0

stopvo 0

 

通过命令测试成功了,接下来就是在uboot源码中实现了。

我们是在uboot启动内核之前做的。

修改Cmd_bootm.c中的do_bootm函数,添加如下代码:

  char *s=NULL;
    long u =0;
 long vobufAddr = 0;
 s = getenv("vobuf");
    if(s)
    {
     vobufAddr = simple_strtol(s,NULL,0);
    }
    else
    {
     printf("Invalid vobuf address!\n");
     vobufAddr = 0xc8000000;
    }
    printf("+++++++++++++++++<<vobufAddr=%#x>>\n", vobufAddr);
load_jpeg();
 jpeg_decode();
 set_vobg(0, 0x000000);
 start_vo(0,2,7); // start_vo[dev, type, sync], -<dev> : 0(HD), 1(AD), 2(SD)
 start_vo(2,0,0); // 第3个参数, 0(PAL),1(NTSC), 7(800x600), 8(1024x768),9(1280x1024),10(1366x768),11(1440x900)
 start_gx(0,vobufAddr,1600,0,0,800,600);
 start_gx(2,vobufAddr,1600,0,0,720,576); 

 

然后图片是放在flash的某个固定地址中的。

 

原创粉丝点击