如何实现WINCE 启动画面(开机logo)? (PXA300+ Monahans L )
如题CPU 是PXA300 BSP Monahans L
现在没有启动画面,要实现启动画面,下载内核时的提示画面,都是静态的不需要动画.或者只显示一些提示语类似"OS image downloading...". 虽然看到很多人在网上问这个问题了,但有些地方还不清楚,所以再问一下.
有种方案是把图片放在flash里,在eboot里去读出图片更新显示buffer.
这种方法
1.不知道何时放图片到flash里?
2.图片放到flash的什么地址?
3.显示buffer的地址如何定义?
说一下我现在的状态.在C:\WINCE500\PLATFORM\ZYLONITE_MHL\SRC\BOOTLOADER\EBOOT\main.c里的OEMPlatformInit()函数里加了LCD 的显示函数InitLCDC();这个函数是bsp里就有的,就显示了红绿蓝3个色条.
void DrawBuffer(void)
{
UINT32 *fb = (UINT32 *) BMAN_FB_PHY_ADX; // realize fhy==vir
int x, line;
/*
// R
for(line=0; line<105; line++)
for(x=0; x<120; x++)
*fb++ = 0xF800F800;
// G
for(line=0; line<105; line++)
for(x=0; x<120; x++)
*fb++ = 0x07E007E0;
// B
for(line=0; line<110; line++)
for(x=0; x<120; x++)
*fb++ = 0x001F001F;
}
地址原来定义如下
#define BMAN_FB_PHY_ADX 0x80200000
这样在eboot时这个画面会显示出来但是在下载内核到7%时屏就会花掉,后来我改了地址如下
#define BMAN_FB_PHY_ADX 0x820b0000
改后下载时这个画面就不会变化了,但下载完启动时屏就会花掉之后变白屏,好想给清屏了.
Loading Image from Flash...
Start block: 5
Number of blocks: 472
Image start address in RAM: 0x800B0000
LoadImageFromFlash: Block: 0x00000005 (5), pImageBufferRAM: 0x800B0000, numBloc
ks 0x01D8 (472)
blockSize = 0x00020000 (131072), sectorsPerBlock = 0x00000040 (64)
numBlocks = 0x1D8
...............................................................................
...............................................................................
........................................(程序走到这里显示屏就花掉).................
...............................................................................
...............................................................................
.............................................................................
Loading Image from Flash Done!
)....................................
reset后启动也是一样,开始有显示图画,后面就没有了.
#define BMAN_FB_PHY_ADX 0x820b0000
改后下载时这个画面就不会变化了,但下载完启动时屏就会花掉之后变白屏,好想给清屏了.
可能是地址的问题,确定这里空闲吗,后面没有对它的操作吗
对RAM 和FLASH 的配置我还不清楚在哪个文件里看,该怎么看.不好意思,水平比较低:(请知道的告诉我一下吧,谢谢啦!
0x820b0000 地址我是在config.bib里看到的,不知道是不是空闲.
下面是config.bib文件
----------------config.bib----------------
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
;
; Use of this source code is subject to the terms of the Microsoft end-user
; license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
; If you did not accept the terms of the EULA, you are not authorized to use
; this source code. For a copy of the EULA, please see the LICENSE.RTF on your
; install media.
;
; Memory Map
; ----------
;*****************************************************************************
;* RAM Layout: Nand boot; non IU
;* ------------------------------
;* --------------------------------------> 8400_0000 for x16
;* | |
;* | |
;* | NK RAM |
;* | |
;* --------------------------------------> 820B_0000 *autosize can alter the start
;* | Start OS (NK) |
;* | |
;* --------------------------------------> 800B_0000
;* | |
;* | IPL RAM (188k) |
;* --------------------------------------> 8008_1000
;* | |
;* | IPL NK (128k) |
;* --------------------------------------> 8006_1000
;* | RESUME ARGS(2k) |
;* --------------------------------------> 8006_0800
;* | EBT ARGS(2K) |
;* --------------------------------------> 8006_0000
;* | IPL Stack (60k) |
;* | EBT Stack (60k) |
;* --------------------------------------> 8005_1000
;* | IPL Stack (4k) |
;* | EBT Pagetables (4k) |
;* --------------------------------------> 8005_0000
;* | |
;* | EBT RAM (64K) |
;* --------------------------------------> 8004_0000
;* | |
;* | EBT NK (256K) |
;* --------------------------------------> 8000_0000
;*
;******************************************************************************
MEMORY
; Name Start Size Type
; ------- -------- -------- ----
ARGS 80060000 00001000 RESERVED
NK 800B0000 02000000 RAMIMAGE
; RAM 820B0000 01F50000 RAM
; IMM reserve 224K
IF BSP_MONAHANS_L
;RAM 820B0000 01F50000 RAM
;
; Temp locale to copy SRAM data for L
RAM 820B0000 01F10000 RAM
IMCPY 83FC0000 00040000 RESERVED
ELSE
RAM 820B0000 01F18000 RAM
ENDIF
CONFIG
AUTOSIZE=ON
KERNELFIXUPS=ON
COMPRESSION=ON
FSRAMPERCENT=0x0A0A0A0A
IF IMGPROFILER
PROFILE=ON
ELSE
PROFILE=OFF
ENDIF
;
; ROMFLAGS is a bitmask of options for the kernel
; ROMFLAGS 0x0001 Disallow Paging
; ROMFLAGS 0x0002 Not all KMode
; ROMFLAGS 0x0010 Trust Module only
;
IF IMGTRUSTROMONLY
IF IMGNOTALLKMODE
ROMFLAGS=12
ELSE
ROMFLAGS=10
ENDIF
ELSE
IF IMGNOTALLKMODE
ROMFLAGS=02
ELSE
ROMFLAGS=00
ENDIF
ENDIF
;
; NOR nbo
;
;ROMSTART=97C00000
; ram image .nb0
ROMSTART=800B0000
; From memory.cfg.xml
; NAND flash size
; Totals should add up to total NAND - reserved
; (From memory.cfg.xml - 0x03F90000)
IF IMGULDR
; Give ULDR less ROM
ROMSIZE=00590000
ELSE
; Give OS rest of space.
ROMSIZE=03A00000
ENDIF IMGULDR
; NB0 file should contain image
ROMWIDTH=32
这种方法
1.不知道何时放图片到flash里?
2.图片放到flash的什么地址?
3.显示buffer的地址如何定义?
说下我现在的做法吧
1.图片是和Nboot、Eboot、NK一样事先就放在Flash里面的
2.至于放在Flash哪个地址,这个就看你喜欢了,我的顺序是 Block0 是Nboot Block1是Eboot,接着是图片,再接着就是NK了,这个地址嘛,你自己定,随你高兴,只要你先显示的时候把你图片的内容放到LCD显示的缓存就可以了
#define BMAN_FB_PHY_ADX 0x80200000
这样在eboot时这个画面会显示出来但是在下载内核到7%时屏就会花掉,后来我改了地址如下
#define BMAN_FB_PHY_ADX 0x820b0000
改后下载时这个画面就不会变化了,但下载完启动时屏就会花掉之后变白屏,好想给清屏了.
查一下你给LCD缓存的内容对不对就行了,这种看下代码就很清楚了
引用: 引用 3 楼 xuweiyue 的回复:
这种方法
1.不知道何时放图片到flash里?
2.图片放到flash的什么地址?
3.显示buffer的地址如何定义?
说下我现在的做法吧
1.图片是和Nboot、Eboot、NK一样事先就放在Flash里面的
2.至于放在Flash哪个地址,这个就看你喜欢了,我的顺序是 Block0 是Nboot Block1是Eboot,接着是图片,再接着就是NK了,这个地址嘛,你自己定,随你高兴,只要你先显示的时候把你图片的内容放到LCD显示的缓存就可以了
1.图片数据是用烧写BootImage.nb0的软件烧写进去的吗?只要自己指定flash的offset.
这个图片数据是什么文家格式的呢?xx.c?
2.我在哪里可以查到我的flash的使用情况,怎么知道哪块flash是空闲的,而且我怎么保证我存放图片的flash不被wince系统使用到?
1.图片数据是用烧写BootImage.nb0的软件烧写进去的吗?只要自己指定flash的offset.
这个图片数据是什么文家格式的呢?xx.c?
图片数据一般是通过bootloader来烧写,格式看你代码里怎么用的,现成的工具很多,把BMP转换成.c的,当成文件来处理就可以了
2.我在哪里可以查到我的flash的使用情况,怎么知道哪块flash是空闲的,而且我怎么保证我存放图片的flash不被wince系统使用到?
这个是查不到的,除了去看自己的Bootloader
你的Flash驱动可以指定被CE访问的空间,这之外的CE是不会来使用的
图片数据一般是通过bootloader来烧写?不好意思,能不能说详细点?
比较方便的是将图片转换成像素的数组,
编译到EBOOT里去吧。
没试过,直接烧写图片文件到Flash。
这次解决问题托的时间好长,终于要结贴了,呵呵.没有得到满意的答复.
简单说下最后的解决方法,
1.在eboot里简单显示了几个单词,所以没有讲图片存到flash里.现在也不知道这种方法要怎么作.
2.通过调整frame buffer地址到0xa3bb0000 并在config.bib将这段地址设置为reserved.在oeminit()里在初始化一下buffer就可以一直显示了.
结贴!