位图或logo和开机显示画面,是两个完全不同的东西。

logo显示uboot相关信息,如版本号等。

开机画面是用户下载到固定位置后uboot加载的。

1.开机画面

在uboot中使用splash screen可以实现u-boot启动后,在LCD上显示自定义图片。

#define CONFIG_SPLASH_SCREEN   1

#define CONFIG_EXTRA_ENV_SETTINGS   \

  "splashimage=10080000\0"

并且要定义splashimage变量以及splash变量所定义的地址存放bmp图片。

2. log图片

include/bmp_logo.h  //定义logo相关属性及数据, 由工具制作而成。

12 #define BMP_LOGO_WIDTH      240
  13 #define BMP_LOGO_HEIGHT     109
  14 #define BMP_LOGO_COLORS     30
  15 #define BMP_LOGO_OFFSET     16

3.实现过程

common/lcd.c

start_armboot()  -->  devices_init()/devices.c

-->drv_lcd_init()/ common/lcd.c

-->lcd_init() /common/lcd.c

-->lcd_clear()

-->lcd_logo()

--> lcd_display_bitmap(addr, 0, 0);  //显示开机画面

--> bitmap_plot(0, 0);  //显示logo

4.lcd相关数据结构,定义于include/lcd.h

typedef struct vidinfo {
162     u_long vl_col;      /* Number of columns (i.e. 640) */
163     u_long vl_row;      /* Number of rows (i.e. 480) */
164     u_long vl_clk;  /* pixel clock in ps    */
165
166     /* LCD configuration register */
167     u_long vl_sync;     /* Horizontal / vertical sync */
168     u_long vl_bpix;     /* Bits per pixel, 0 = 1, 1 = 2, 2 = 4, 3 = 8, 4 = 16 */
169     u_long vl_tft;      /* 0 = passive, 1 = TFT */
170
171     /* Horizontal control register. */
172     u_long vl_hsync_len;    /* Length of horizontal sync */
173     u_long vl_left_margin;  /* Time from sync to picture */
174     u_long vl_right_margin; /* Time from picture to sync */
175
176     /* Vertical control register. */
177     u_long vl_vsync_len;    /* Length of vertical sync */
178     u_long vl_upper_margin; /* Time from sync to picture */
179     u_long vl_lower_margin; /* Time from picture to sync */
180
181     u_long  mmio;       /* Memory mapped registers */
182 } vidinfo_t;
183
184 extern vidinfo_t panel_info;
typedef struct vidinfo {
162     u_long vl_col;      /* Number of columns (i.e. 640) */
163     u_long vl_row;      /* Number of rows (i.e. 480) */
164     u_long vl_clk;  /* pixel clock in ps    */
165
166     /* LCD configuration register */
167     u_long vl_sync;     /* Horizontal / vertical sync */
168     u_long vl_bpix;     /* Bits per pixel, 0 = 1, 1 = 2, 2 = 4, 3 = 8, 4 = 16 */
169     u_long vl_tft;      /* 0 = passive, 1 = TFT */
170
171     /* Horizontal control register. */
172     u_long vl_hsync_len;    /* Length of horizontal sync */
173     u_long vl_left_margin;  /* Time from sync to picture */
174     u_long vl_right_margin; /* Time from picture to sync */
175
176     /* Vertical control register. */
177     u_long vl_vsync_len;    /* Length of vertical sync */
178     u_long vl_upper_margin; /* Time from sync to picture */
179     u_long vl_lower_margin; /* Time from picture to sync */
180
181     u_long  mmio;       /* Memory mapped registers */
182 } vidinfo_t;
183
184 extern vidinfo_t panel_info;
该结构体示例化panel_info定义于board/atmel/at91sam9g10ek/sam9g10ek.c中:
297 vidinfo_t panel_info = {
298     vl_col:     320,
299     vl_row:     240,
300     vl_clk:     6400000,
301     vl_sync:    ATMEL_LCDC_INVLINE_INVERTED |
302             ATMEL_LCDC_INVFRAME_INVERTED|
303             ATMEL_LCDC_INVCLK_INVERTED,
304     vl_bpix:    3,
305     vl_tft:     1,
306     vl_hsync_len:   1,
307     vl_left_margin: 70,
308     vl_right_margin:18,
309     vl_vsync_len:   1,
310     vl_upper_margin:13,
311     vl_lower_margin:9,
312     mmio:       AT91SAM9261_LCDC_BASE,
313 };

uboot中log处理的更多相关文章

  1. uboot-tiny4412启动流程(下)----如何将自己的裸板测试程序加入uboot中启动测试

    今天在工作上搞了一天高通的芯片uboot程序,目的是希望将一个裸板的程序移植到uboot中,并且开机让它运行.这个芯片是NXP4330,目前是高通的一个芯片,基于ARM-contexA9架构,那么就跟 ...

  2. uboot中添加FIQ中断及相关问题

    本文主要说明了在uboot中添加FIQ中断时遇到的问题以及对应的解决办法. 首先交代一下项目的软硬件环境.硬件方面,使用s3c2440作为主控芯片,外接串口.网卡等设备.软件方面,主控芯片上电后运行u ...

  3. u-boot中nandflash初始化流程分析(转)

    u-boot中nandflash初始化流程分析(转) 原文地址http://zhuairlunjj.blog.163.com/blog/static/80050945201092011249136/ ...

  4. (四)ubuntu学习前传—uboot中对Flash和DDR的管理

    1.uboot阶段Flash的分区 (1)所谓分区,就是说对Flash进行分块管理.(2)PC机等产品中,因为大家都是在操作系统下使用硬盘的,整个硬盘由操作系统统一管理,操作系统会使用文件系统帮我们管 ...

  5. uboot中gd的定义和使用

    近期在做uboot中nand启动相关的工作,遇到一个问题一直纠结着.如今最终明确了这个问题,想想还有好多兄弟在某个黑暗的角落里或者某台电脑前纠结着呢,所以赶紧写下来以供查阅. uboot versio ...

  6. u-boot中分区和内核MTD分区关系

    一.u-boot中环境变量与uImage中MTD的分区关系 分区只是内核的概念,就是说A-B地址放内核,C-D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等. 一般我们只需要分3-4 ...

  7. 关于Yaffs2在u-boot中的支持

    开发板是一块2G的MLC的NandFlash,页大小8k+512,为其移植u-boot到yaffs2这了.以前在Mini2440上移植过2k+64的slc的NandFlash的Yaffs2支持,当然也 ...

  8. uboot中raise:Signal #8 caught的根本原因

    在移植uboot时编译一切正常,但uboot启动中载入自己写的网卡驱动出现故障,一直在打印raise:Signal #8 caught google  百度了一番,也有非常多人遇到了这个问题,大家都说 ...

  9. 分析uboot中 make xxx_config过程

    make xxx_config实质上就是调用了 首先看MKCONFIG: [注意]SRCTREE=源文件下的目录 之后的语句: @$(MKCONFIG) $(@:_config=) arm arm92 ...

随机推荐

  1. PAT 1085 Perfect Sequence

    PAT 1085 Perfect Sequence 题目: Given a sequence of positive integers and another positive integer p. ...

  2. TScrollBox响应鼠标滚轮问题

    Delphi的TScrollBox本身并不响应鼠标滚轮事件(不知道为什么),但可以在ScrollBox的鼠标滚动事件中进行控制: procedure TfrmTaskNoteEdit.ScrollBo ...

  3. Oracle Explain Plan,hint解释与示例

    Oracle 专业dba博客:http://blog.csdn.net/tianlesoftware Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响S ...

  4. xp 如何打开(进行)远程桌面连接

    http://apps.hi.baidu.com/share/detail/31102654http://help.360.cn/5030804/40072526.htmlhttp://hi.baid ...

  5. NVIDIA PureVideo Decoder解码器注册码

    http://www.amznz.com/nvidia-purevideo-decoder/ 重装系统后当然得装终极解码来看高清电影,这次为了给喜欢看HD影片的朋友,特意奉上NVIDIA7以上显卡的N ...

  6. C#搞工控的一些代码

    首先工控项目都会用到: using System.Runtime.InteropServices; 1.字节转化为单精度浮点数 2.单精度转成字节 3.使用结构体 4.使用动态链接库 5.ASCCII ...

  7. 通俗易懂,C#如何安全、高效地玩转任何种类的内存之Span的脾气秉性(二)。 异步委托 微信小程序支付证书及SSL证书使用 SqlServer无备份下误删数据恢复 把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中 通过XDocument方式把List写入Xml文件

    通俗易懂,C#如何安全.高效地玩转任何种类的内存之Span的脾气秉性(二).   前言 读完上篇<通俗易懂,C#如何安全.高效地玩转任何种类的内存之Span的本质(一).>,相信大家对sp ...

  8. 解决svchost占用内存过高问题

    摘抄自:https://jingyan.baidu.com/article/d169e1867cea7e436611d801.html svchost占用内存过高,会导致内存100%电脑卡住,CPU温 ...

  9. 如何在 Ubuntu 和 CentOS 上启用 Nginx 的 HTTP/2 协议支持

    HTTP/2 是 HTTP 网络协议的主要修订版本,其专注于 HTTP 协议的性能改进.HTTP/2 协议的目标是减少延迟,并且允许在 Web 浏览器和服务器之间的一个连接上并行发起多个请求,因此 W ...

  10. [Golong]学习笔记(一) 基础知识

    Go编程基础 Go的内置keyword(25个) 不多 break default func interface select case defer go map struct chan else g ...