一、logo的调用流程
|-->board_init_r: < board.c>
|--> stdio_init: <common/stdio.c>
|--> drv_lcd_init:<common/lcd.c>
|--> lcd_init: <common/lcd.c>
|--> lcd_ctrl_init: drivers/video/<与硬件相关 >
|-->lcd_clear();
|-->lcd_logo()<显示图片>
|-->bitmap_plot(0,85);<将图片读取到frambuffer>
二、读取bitmap写入frambuffer
1、 首先将图片数组的首地址赋给bmap。
bmap = &bmp_logo_bitmap[0];
2、 然后将图片数组数据写入frambuffer,然后显示
if(NBITS(panel_info.vl_bpix) == 16){
u16 col16;
fb16 = (ushort *)fb;
for (i = 0; i < BMP_LOGO_HEIGHT; ++i) {
for (j = 0; j < BMP_LOGO_WIDTH; j++) {
col16 = bmp_logo_palette[(bmap[j]-16)];
fb16[j] =
((col16 & 0x000F) << 1) |
((col16 & 0x00F0) << 3) |
((col16 & 0x0F00) << 4);
}
bmap += BMP_LOGO_WIDTH;
fb16 += panel_info.vl_col;
}
}
备注:
1、图片转化函数:\tools\bmp-logo.c 将bmp文件转化为二维数组bmp_logo_bitmap[](\include\bmp_logo_data.h)
2、通过makefile查到驱动文件\u-boot\drivers\video\jz_lcd\lcd_panel/truly_tft240240_2_e.c
3、 改变图片显示的首地址:比如第85行开始显示
bitmap_plot(0, 85);-------------- common\lcd.c
4、Include\Bmp_logo.h 定义图片大小也是\tools\bmp-logo.c生成的。
#defineBMP_LOGO_WIDTH 240
#defineBMP_LOGO_HEIGHT 70
#define BMP_LOGO_COLORS 240
#defineBMP_LOGO_OFFSET 16
5、Include\Bmp_logo_data.h保存图片的二维数组,由\tools\bmp-logo.c生成的。