WinCE下动态LOGO的做法?

ljh1024   2009-2-18 09:43 楼主

先来说说规格:
开机需要两个LOGO,分别是一个静态LOGO用来显示公司名字,一个是动态LOGO用来显示CE的加载过程。

第一个应该比较好弄,在bootloader中OENPlatformInit中初始化屏完毕后,将要显示的图片数据复制到显存中即可。
问题是第二个,怎么在CE桌面显示之前显示一个动态的LOGO(有进度条)呢?

回复评论 (20)

指到LCD 显示的BUFFER填入你要显示的东西的颜色就可以了
点赞  2009-2-18 10:11
恩,那如何显示动画呢?如果一直处于刷屏处理的话,CE的加载岂不停止了?
点赞  2009-2-18 10:20
关注 中
点赞  2009-2-18 13:50
LZ 能不能说一下静态的那个logo是怎么实现的,你的CPU 是pxa300吗?
点赞  2009-2-18 14:47
引用: 引用 4 楼 AlicePeter 的回复:
LZ 能不能说一下静态的那个logo是怎么实现的,你的CPU 是pxa300吗?

首先说一下,我的CPU是ARM,三星的2443.
静态的LOGO很好做有两个地方可以做,一个在Eboot里,一个在OAL里。
具体做法就是在平台初始化里,屏初始化完后,给显存中将图片的数据复制进去就行了。
点赞  2009-2-18 15:00
引用: 引用 2 楼 friendfish 的回复:
恩,那如何显示动画呢?如果一直处于刷屏处理的话,CE的加载岂不停止了?


怎么会停止呢?

加载和进度条写在同一个循环里面,交叉执行,就可以做到了,我就是这么做的。
点赞  2009-2-18 15:10
引用: 引用 6 楼 gooogleman 的回复:
引用 2 楼 friendfish 的回复:
恩,那如何显示动画呢?如果一直处于刷屏处理的话,CE的加载岂不停止了?


怎么会停止呢?

加载和进度条写在同一个循环里面,交叉执行,就可以做到了,我就是这么做的。


哦?具体说说撒
点赞  2009-2-18 16:07
结帖率:50.00%

???

只发不结的回帖的没有啥意思。

——这个东西就是这个原理

for(...flash块数++)
{
   读flash数据到内存;
    动态显示进度条
    读完读完flash数据&进度条显示到最后-》退出循环,启动系统。
}
点赞  2009-2-18 16:20
引用: 引用 8 楼 gooogleman 的回复:
结帖率:50.00%

???

只发不结的回帖的没有啥意思。

呵呵,貌似有意见啊?没结的帖子不就在等答案么,有了答案自然就接了啊。

引用: 引用 8 楼 gooogleman 的回复:
——这个东西就是这个原理

for(...flash块数++)
{
读flash数据到内存;
动态显示进度条
读完读完flash数据&进度条显示到最后-》退出循环,启动系统。
}

这个好像只是把NK复制到RAM里的进度吧?我希望的是就像windows启动时有进度条的那种效果,就是进度条转啊转,然后就到CE桌面了。
点赞  2009-2-18 16:36
加载开始会读取整个镜像的大小,读取时是按字节或者32bit读的,计算读取的字节数,每读10%,就将进度条前进一格。
点赞  2009-2-18 16:49
引用: 引用 10 楼 shuiyan 的回复:
加载开始会读取整个镜像的大小,读取时是按字节或者32bit读的,计算读取的字节数,每读10%,就将进度条前进一格。

这个是否只是加载NK时的进度呢?这个进度是否只是在Eboot中呢?
按照上面的是否只能做到加载完NK,而eboot跳转到OAL再到桌面出来的这段时间呢?

可能是我没说清楚,我想弄一个就像PC机上的效果,一加电首先出来的是BISO的LOGO(或者是生产商的LOGO),然后windows加载,这个过程会有进度条一直在转,然后就到了登录界面了。
明鉴~
点赞  2009-2-18 17:00
OAL那点时间根本感觉不到什么,你还没有反映就进去了,PC机无非也是这样

复制最需要时间,启动的时间基本上是感觉不到。

如果你要把启动的时间也算进去,那么你自己重新修改OAL,这个东西向实现也不难。

PC机子其实是几个个启动画面了
点赞  2009-2-18 17:06
引用: 引用 12 楼 gooogleman 的回复:
OAL那点时间根本感觉不到什么,你还没有反映就进去了,PC机无非也是这样

复制最需要时间,启动的时间基本上是感觉不到。

如果你要把启动的时间也算进去,那么你自己重新修改OAL,这个东西向实现也不难。

PC机子其实是几个个启动画面了

因为原来做静态LOGO是在OAL里做的,一加电在LOGO出来后大概要等5秒左右(实测)显示桌面。这个时间不算长也不算短。
现在是在Eboot里做LOGO,然后再OAL里做动态LOGO。我是这么想的,起一个硬件定时器(系统不用的)然后定时在中断处理里刷LOGO(只需刷动态的一小部分),如果这样的话,就需要知道什么时候要显示桌面了,然后取消中断。
点赞  2009-2-18 17:22
你的方法可行。我的是在bootloader,我觉得OAL根本没有必要放图片了,一下子就进入wince里面了。
点赞  2009-2-18 17:28
我的启动总时间大概5~8秒,还没有用multibin

如果用了,估计三秒就能启动。
点赞  2009-2-18 17:29
引用: 引用 15 楼 gooogleman 的回复:
我的启动总时间大概5~8秒,还没有用multibin

如果用了,估计三秒就能启动。

multibin是很快,但是咱们的前提都只是启动到CE的桌面,只是停留在我们的平台上。

但如果要开发一款专用机,CE启动成功后会加载应用程序(去掉CE的Shell),那么用户可能的要求就是LOGO完了后就是程序界面而不是桌面了,如果应用程序比较大,可能需要的时间就比较多了,这可能就需要动态LOGO来掩饰以下了。
明鉴~
点赞  2009-2-18 17:39
做几张不同角度的静态LOGO图片,每隔0.X秒显示一张,就是动态的了。不知可不可行,哈哈!
点赞  2009-2-18 17:48
再顶一次~
点赞  2009-2-19 16:32
引用: 引用 16 楼 friendfish 的回复:
引用 15 楼 gooogleman 的回复:
我的启动总时间大概5~8秒,还没有用multibin

如果用了,估计三秒就能启动。

multibin是很快,但是咱们的前提都只是启动到CE的桌面,只是停留在我们的平台上。

但如果要开发一款专用机,CE启动成功后会加载应用程序(去掉CE的Shell),那么用户可能的要求就是LOGO完了后就是程序界面而不是桌面了,如果应用程序比较大,可能需要的时间就比较多了,这可能就需要动态LOGO来掩饰以下了。
明…


那么,这就是应用程序的问题了吧。
不过,一般应用程序的启动都不会太长时间吧,不知道你的应用到底有多大。
启动慢,主要还是NK加载的慢,可以在EBOOT中做一个进度条,效果会好一点。
点赞  2009-2-20 00:14
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复