海思篇之开机logo的加载(Hi3531a代码版)

在看这篇博客之前,建议大家先参考前一篇博客海思篇之开机logo的加载(Hi3531a命令版),在了解了logo加载的流程之后,接下来的代码篇才会更容易理解。我用的开发板是Hi3531a,不同的版本可能有所不同,这里仅供大家参考。

  • 找到/HisiSDK/Hi3531A_SDK_V1.0.5.0/osdrv/opensource/uboot/u-boot-2010.06/include/configs/hi3531a.h这个文件并打开,修改Environment Configuration这个模块的内容(大概在170行),进行如下修改:
  1. 添加如下代码:
    #define CONFIG_EXTRA_ENV_SETTINGS
    #define CONFIG_JPEG_ADDR “0x4a500000” //jpeg_addr
    #define CONFIG_JPEG_SIZE “0xee28” //jpeg_size
    #define CONFIG_VOBUF “0x4a800000” //vobuf
  2. 修改CONFIG_BOOTCOMMAND宏定义为:
    #define CONFIG_BOOTCOMMAND “setenv jpeg_addr 0x4a500000;setenv jpeg_size 0xee28;setenv vobuf 0x4a800000;nand read 0x42000000 0x7c00000 0xee28;decjpg;startvo 0 36 7;startvl 0 0x4a800000 1280 0 0 1280 720;mw.b 0x42000000 0xff 0x400000;nand read 0x42000000 0x100000 0x400000;bootm 0x42000000”
    注意:
    1) 这里CONFIG_BOOTCOMMAND 下的前3条命令参考上一篇博客海思篇之开机logo的加载(Hi3531a命令版)
    2)nand read 0x42000000 0x7c00000 0xee28是指从海思nand flash的0x7c00000地址中读取0xee28长度的数据到内存地址0x42000000 作为缓存数据(图片);
    3)接下来的decjpg,startvo,startvl 同样参考前面的海思篇之开机logo的加载(Hi3531a命令版)
    4)mw.b 0x42000000 0xff 0x400000是指清空内存地址0x42000000上的长度为0x400000字节的缓存数据;
    5)nand read 0x42000000 0x100000 0x400000是从nand flash读取kernel到内存地址0x42000000;
    6)bootm 0x42000000是指kernel的加载地址。

效果图如下:
在这里插入图片描述

  • 找到/HisiSDK/Hi3531A_SDK_V1.0.5.0/osdrv/opensource/uboot/u-boot-2010.06/common/env_common.c这个文件并打开,修改数组default_environment[]的内容(大概在60行),修改如下:
  1. 在数组的末尾加上:
    #ifdef CONFIG_EXTRA_ENV_SETTINGS
    //CONFIG_EXTRA_ENV_SETTINGS
    “jped_addr=” CONFIG_JPEG_ADDR “\0”
    “jped_size=” CONFIG_JPEG_SIZE “\0”
    “vobuf=” CONFIG_VOBUF “\0”
    #endif

效果图如下:
在这里插入图片描述

  • 关闭以上两个文件,编译uboot,最后生成.bin文件,如下图:
    在这里插入图片描述
    最后把编译生成的uboot烧录到板子就OK啦!

猜你喜欢

转载自blog.csdn.net/weixin_44362642/article/details/86748892