背景
该方案可实现添加一个logo分区,后续可直接在开发板上更换logo图片,无需在源码中修改后重新编译烧写。
一、添加logo分区
elf@ubuntu:~/work/ELF2-linux-source$ vi device/rockchip/.chips/elf2/parameter.txt
修改内容如下图所示:
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boot),0x00040000@0x00028000(recovery),0x00010000@0x00068000(backup),0x01c00000@0x00078000(rootfs),0x00040000@0x01c78000(oem),0x00100000@0x01cb8000(logo),-@0x01db8000(userdata:grow)
注意:此处把logo分区的大小划成了0x00100000(512M),用户可根据自己需求修改。
1.png
二、修改uboot
1.修改u-boot/arch/arm/mach-rockchip/resource_img.c文件
elf@ubuntu:~/work/ELF2-linux-source$ vi u-boot/arch/arm/mach-rockchip/resource_img.c
搜索 rockchip_read_resource_dtb
添加两句
struct blk_desc *desc = rockchip_get_bootdev();
resource_setup_logo_bmp(desc);
最终效果
int rockchip_read_resource_dtb(void *fdt_addr, char **hash, int *hash_size)
{
        struct resource_file *f = NULL;
        int ret;
        struct blk_desc *desc = rockchip_get_bootdev();

#ifdef CONFIG_ROCKCHIP_HWID_DTB
        if (resource_scan())
                return -ENOENT;

        f = resource_read_hwid_dtb();

#endif
        /* If no dtb match hardware id(GPIO/ADC), use the default */
        if (!f)
                f = resource_get_file(DEFAULT_DTB_FILE);

        if (!f)
                return -ENODEV;

        ret = rockchip_read_resource_file(fdt_addr, f->name, 0, 0);
        if (ret < 0)
                return ret;

        if (fdt_check_header(fdt_addr))
                return -EBADF;

        *hash = f->hash;
        *hash_size = f->hash_size;

        printf("DTB: %s\n", f->name);
        resource_setup_logo_bmp(desc);
        return 0;

}
2.修改u-boot/configs/board_elf2_uboot_defconfig文件
elf@ubuntu:~/work/ELF2-linux-source$ vi u-boot/configs/board_elf2_uboot_defconfig
添加两行
CONFIG_ROCKCHIP_RESOURCE_IMAGE=y
CONFIG_ANDROID_AVB=n
2.png
注意:CONFIG_ANDROID_AVB本来就存在,直接改为CONFIG_ANDROID_AVB=n
三、编译并烧写
修改完成之后全编译并烧写。
烧写完成后启动开发板,使用 fdisk -l 命令查看,即可看到logo分区:
3.png
四、更新logo
将 logo.bmp 和 logo_kernel.bmp 放入开发板中,执行下列命令:
root@elf2-buildroot:~# cat logo.bmp > logo.img && truncate -s %512 logo.img && cat logo_kernel.bmp >> logo.img
root@elf2-buildroot:~# dd if=logo.img of=/dev/block/by-name/logo
1968+1 records in
1968+1 records out
1007670 bytes (1.0 MB, 984 KiB) copied, 0.0459117 s, 21.9 MB/s
root@elf2-buildroot:~# sync
重启之后发现logo已经更新。

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.