imx6将默认的开机进度条改为动画

一、下载psplash

地址:https://download.csdn.net/download/chidaoqi1607/12373339

 

二、去掉进度条

打开psplash.c,注释掉进度条相关代码,如下:

/*
   //进度条上面的框框
  psplash_fb_draw_rect (fb, 
            0, 
            fb->height - (fb->height/6) - h, 
            fb->width,
            h,
            PSPLASH_BACKGROUND_COLOR);
*/

#if 0
  /* Draw progress bar border */
  psplash_fb_draw_image (fb, 
             (fb->width  - BAR_IMG_WIDTH)/2, 
             fb->height - (fb->height/6), 
             BAR_IMG_WIDTH,
             BAR_IMG_HEIGHT,
             BAR_IMG_BYTES_PER_PIXEL,
             BAR_IMG_RLE_PIXEL_DATA);
#endif

 // psplash_draw_progress (fb, 0);

 

三、实现显示单个图片

1.将想要显示的png图片(图片像素要与屏幕像素一致)放入源码下,然后输入以下命令

./make-image-header.sh myir_linux.png POKY
此时会生成myir_linux-img.h文件,里面就是png对应的数据

2.再次打开psplash.c,添加myir_linux.png的数据,包含头文件

#include "myir_linux-img.h"

在main函数中添加

  psplash_fb_draw_image (fb, 
             (fb->width  - MYIR_IMG_WIDTH)/2, 
             //((fb->height * 5) / 6 - MYIR_IMG_HEIGHT)/2,
             (fb->height - MYIR_IMG_HEIGHT)/2,
             MYIR_IMG_WIDTH,
             MYIR_IMG_HEIGHT,
             MYIR_IMG_BYTES_PER_PIXEL,
             MYIR_IMG_RLE_PIXEL_DATA);

这里的宏定义都是对应myir_linux-img.h中的,例如此时myir_linux-img.h中的宏定义:

#define MYIR_IMG_ROWSTRIDE (1280)
#define MYIR_IMG_WIDTH (320)
#define MYIR_IMG_HEIGHT (480)
#define MYIR_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
#define MYIR_IMG_RLE_PIXEL_DATA ((uint8*) \
  "\354\5\16\32\377\203\6\20\35\377\202\6\21!\377\202\10\23#\377\215\11\25" \
  "*\377\205\10\23#\377\1\6\20\35\377\377\5\16\32\377\377\5\16\32\377\252" \
  "\5\16\32\377\1\6\20\35\377\202\6\21!\377\204\10\23#\377\211\11\25*\377" \
  "\206\10\23#\377\2\11\21\35\377\6\20\35\377\377\5\16\32\377\377\5\16\32" \
  "\377\253\5\16\32\377\202\6\20\35\377\1\10\23#\377\203\6\21!\377\215\10" \
  "\23#\377\1\11\21\35\377\202\6\20\35\377\377\5\16\32\377\377\5\16\32\377" \
  "\255\5\16\32\377\202\6\20\35\377\204\6\21!\377\212\10\23#\377\1\6\21" \

.......................................................

........................................................

3.编译psplash

指定交叉编译工具链路径:source /opt/fsl-imx-x11/4.9.11-1.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

然后:make

此时会生成psplash,psplash-write可执行文件,将其放入arm文件系统的/usr/bin/下

因为psplash.sh脚本在根文件系统/etc/init.d中,此项已经存在,psplash.sh的链接在根文件系统/etc/rcS.d/目录下,用于开机启动,所以重启后就能看到效果了。

 

四、实现动画

动画:多个图片连续刷就行。

1.将gif分成多张图片

2.将每张图片执行类似./make-image-header.sh myir_linux.png POKY的操作,生成多个.h文件

3.在psplash.c中包含多个.h文件,并修改多个.h中 MYIR_IMG_RLE_PIXEL_DATA的名字便于区分

4.在main函数中写入多张图片并加延时,如下:

  psplash_fb_draw_image (fb, 
             (fb->width  - MYIR_IMG_WIDTH)/2, 
             //((fb->height * 5) / 6 - MYIR_IMG_HEIGHT)/2,
             (fb->height - MYIR_IMG_HEIGHT)/2,
             MYIR_IMG_WIDTH,
             MYIR_IMG_HEIGHT,
             MYIR_IMG_BYTES_PER_PIXEL,
             MYIR_IMG_RLE_PIXEL_DATA1);
 usleep(50000);
  psplash_fb_draw_image (fb, 
             (fb->width  - MYIR_IMG_WIDTH)/2, 
             //((fb->height * 5) / 6 - MYIR_IMG_HEIGHT)/2,
             (fb->height - MYIR_IMG_HEIGHT)/2,
             MYIR_IMG_WIDTH,
             MYIR_IMG_HEIGHT,
             MYIR_IMG_BYTES_PER_PIXEL,
             MYIR_IMG_RLE_PIXEL_DATA2);
 usleep(50000);
  psplash_fb_draw_image (fb, 
             (fb->width  - MYIR_IMG_WIDTH)/2, 
             //((fb->height * 5) / 6 - MYIR_IMG_HEIGHT)/2,
             (fb->height - MYIR_IMG_HEIGHT)/2,
             MYIR_IMG_WIDTH,
             MYIR_IMG_HEIGHT,
             MYIR_IMG_BYTES_PER_PIXEL,
             MYIR_IMG_RLE_PIXEL_DATA3);
 usleep(50000);

...............................................

...............................................

5.编译psplash如上,重启即可

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值