前两天介绍了WinCE启动界面的定制,在实际应用中经常还需要让用户方便修改启动LOGO。通常情况下,启动LOGO是编译到BOOT代码中的。为了实现动态修改启动LOGO,需要将LOGO保存至Flash中,BOOT启动时从特定的位置将其读取出来,并填入FrameBuffer。另外,必须让用户能够通过应用程序在WinCE系统中修改Flash中保存的LOGO。为了方便BOOT中显示,一般会在PC上利用Img2LCD将图片文件转换为能够直接填充进FrameBuffer的格式。如果要让该功能更灵活,则必须在WinCE上实现类似于Img2LCD的功能,直接让用户选择不同格式和大小的图片,转换完成后直接写入Flash中。

    启动LOGO在Flash中存储的位置也是需要考虑的一个问题。最简单的方法就是将其放在WinCE内核的后面。这样BOOT中读取LOGO跟读取内核可以用一套代码。同样,WinCE应用程序中更新内核与更新LOGO也可以用一套代码。只是在划分空间时,需要留出一些余量,以免以后在调整的过程中捉襟见肘,不够灵活。

    在我目前使用的平台上,4GB大小的NAND划分如下。

BIOS修改工具下载_应用程序

 

    可以看到BOOT占4MB,System占4KB,用于存储一些必要的数据,Kernel用于存储NK.nb0,目前为56MB,后面剩下8MB的空间就可以用来存储一张或者多张启动LOGO。实际上启动LOGO存放的位置是60MB,与Kernel之间留有4MB的余量,以防后患。4MB用来存LOGO,至少可以存的下一张分辨率为1024*768的32位色图。

    应用程序中添加一小段类似于更新NK的代码实现更新LOGO.bin文件,界面如下。

BIOS修改工具下载_BIOS修改工具下载_02

    目前已经基本实现了以上所说的动态更新LOGO的功能,接下来主要考虑如何支持多种格式、多分辨率和不同位色的图片文件,也就是在WinCE系统上实现一个类似于Img2LCD的软件。