uboot之logo显示【转】
本文转载自:http://blog.csdn.net/tuwenqi2013/article/details/60583735
版权声明:本文为博主原创文章,博主欢迎各位转载。
一、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生成的。