Win ce6 Eboot 中加入开机画面
来源:互联网 发布:java对接支付宝 编辑:程序博客网 时间:2024/05/23 00:09
昨天研究了一下 wince开机时加入个性化的画面,折腾了一上午,不是花屏就是 CE起不来……终于搞定,分享一下经验吧。。。
Wince加入开机画面方法一般有以下两种:
1、 在文件中下定义一个常量大数组,几百 K,如 const USHORT ScreenBitmap[] ,在显示图片的地方利用 for循坏把数组都拷贝到相应的 buffer中。
2、 把图片数据存放到 Flash的某位置,启动时使用特定方法把它读取。
第二种方法实现可能有一定的难度,没研究过,如有实现的,请告之俺。
第一种方法在启动的过程中,直接往显卡的 Framebuffer里面写数据。这个工作一般在 Eboot 里面做,如果在 OS 启动的时候一般就太晚了,如果不加入人为的延时,启动画面刚一显示,就到了 OS 画面了,看不到效果。在 Eboot 中,有个 InitDisplay()
static void InitDisplay(void)
{
……
// Display a bitmap image on the LCD...
//memcpy((void *)IMAGE_FRAMEBUFFER_UA_BASE, ScreenBitmap, LCD_ARRAY_SIZE_TFT_16BIT); // for WindowsCE logo
for(i = 0; i < 160 * 120; i++)
{
PWORD pWord = (PWORD)ScreenBitmap;
PWORD pFrmBuf = (PWORD)IMAGE_FRAMEBUFFER_UA_BASE;
pFrmBuf[4 * i - 2 * (i % 160)] = pWord[i];
pFrmBuf[4 * i - 2 * (i % 160) + 1] = pWord[i];
pFrmBuf[4 * i - 2 * (i % 160) + 160 * 2] = pWord[i];
pFrmBuf[4 * i - 2 * (i % 160) + 1 + 160 * 2] = pWord[i];
}
}
注 意到 memcpy((void *)IMAGE_FRAMEBUFFER_UA_BASE, ScreenBitmap, LCD_ARRAY_SIZE_TFT_16BIT); 显示启动画面其实就这一句,直接调用memcpy 函数,把 ScreenBitmap数组中的图像数据复制到 IMAGE_FRAMEBUFFER_UA_BASE 这个地址。这个其实就是直接往显卡缓冲区里面填东西了。 ScreenBitmap就是一个常量数组,可以从网上找一些相关工具来生成,也可以自己写个工具,把一张 BMP转成 16进制的数组。
到这里,基本上就实现了开机画面,但有的会存在一些问题。
我的设备是分辨率是 320*240 ,把一张320*240 的BMP 图片转换成数组后,有500 多KB ,boot loader 没有这么大的空间( 当然这个是可以修改的) ,再加上生成的Eboot.nb0 也很大,通过并口烧入需要很长时间。有什么办法可以解决呢?……再笨你也能想到压缩,是的,压缩烧入,运行的时候再解压。在网上搜索了一下,有的是使用插值算法。弄一张小图片,把它插值到320 x 240 。使用别人的一个算法,放大4 倍,一个点变四个点。代码也复制过来:
for(i = 0; i < 160 * 120; i++)
{
PWORD pWord = (PWORD)ScreenBitmap;
PWORD pFrmBuf = (PWORD)IMAGE_FRAMEBUFFER_UA_BASE;
pFrmBuf[4 * i - 2 * (i % 160)] = pWord[i];
pFrmBuf[4 * i - 2 * (i % 160) + 1] = pWord[i];
pFrmBuf[4 * i - 2 * (i % 160) + 160 * 2] = pWord[i];
pFrmBuf[4 * i - 2 * (i % 160) + 1 + 160 * 2] = pWord[i];
}
自己再准备一张160*120的图片,转换、编译、烧入,成功 。。。
- Win ce6 Eboot 中加入开机画面
- Win ce6 Eboot 中加入开机画面
- Wince6 Eboot中加入开机画面
- Wince6 Eboot中加入开机画面
- 转贴::Wince6 Eboot中加入开机画面
- Wince6 Eboot中加入开机画面
- Wince6 Eboot中加入开机画面
- Wince6 Eboot中加入开机画面
- Wince6 Eboot中加入开机画面
- Wince6 Eboot中加入开机画面
- Qt中开机启动画面
- 10秒钟更换Win XP/2003开机画面
- WinCE Eboot中加入Linux boot的支持
- 源码中修改开机画面及登录画面
- 更换eboot开机LOGO
- 更改嵌入式Linux中开机画面
- C#中Win程序画面初始位置问题
- nginx 在win中开机自启
- SQL Server 2008中的代码安全(二):DDL触发器与登录触发器
- 程序小技巧
- openCV 人脸检测 VC2008代码
- ARM USB 通信
- 关于仿智联招聘的多选页面效果的实现jquery
- Win ce6 Eboot 中加入开机画面
- 深夜更新博客的美女们[组图]
- 百度地图API初体验和偏移纠正方法
- 查看mysql连接数
- String类和StringBuffer
- 积分被扣,下载不了,有点烦
- 字符串操作函数
- 小知识
- 程序员必须知道的几个国外IT网站