关于WINCE6。0开机LOGO加进度条的问题。

shuilingshenjun 2009-11-02 09:29:57
请问6。0下,开机LOGO上如何加进度条,是在BOOT上加,还是在OAL上加,我的那张初始LOGO是在OAL上加的。。
...全文
471 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
guopeixin 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 veabol 的回复:]
引用 19 楼 reallyu 的回复:
这个我做过,在每个驱动中都刷新LCD,效果是实现了,但是我觉得方法比较SB
不知道在OAL层启动一个线程来刷新LCD,在Display驱动中关闭这个线程,这种方法可行不,不过这个难以做到滚动条走完启动,只能像XP启动那样,一个滚动条来回跑.

是啊,我也想知道在OAL层是否会有这样的方法,不过在OAL层用线程是否会有问题呢?没有看到OAL层使用线程的例子,并且启动阶段进行线程切换是否会有问题?其实如果在启动过程中能总是与OAL进行同样的函数交互就最好了。
[/Quote]
呵呵,要是有这个方法就好了
OneOnce 2009-11-12
  • 打赏
  • 举报
回复
如果我没记错友坚做过
博说医械研发 2009-11-10
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 reallyu 的回复:]
这个我做过,在每个驱动中都刷新LCD,效果是实现了,但是我觉得方法比较SB
不知道在OAL层启动一个线程来刷新LCD,在Display驱动中关闭这个线程,这种方法可行不,不过这个难以做到滚动条走完启动,只能像XP启动那样,一个滚动条来回跑.
[/Quote]
是啊,我也想知道在OAL层是否会有这样的方法,不过在OAL层用线程是否会有问题呢?没有看到OAL层使用线程的例子,并且启动阶段进行线程切换是否会有问题?其实如果在启动过程中能总是与OAL进行同样的函数交互就最好了。
Reallyu 2009-11-10
  • 打赏
  • 举报
回复
这个我做过,在每个驱动中都刷新LCD,效果是实现了,但是我觉得方法比较SB
不知道在OAL层启动一个线程来刷新LCD,在Display驱动中关闭这个线程,这种方法可行不,不过这个难以做到滚动条走完启动,只能像XP启动那样,一个滚动条来回跑.
leemuxiang 2009-11-04
  • 打赏
  • 举报
回复
看一下QQ号为4176 4381的空间,里面有相关方面的建议,或许对你有用
feishanm 2009-11-03
  • 打赏
  • 举报
回复
EBOOT中加吧。NBOOT只有4K呀。
sunrain_hjb 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 veabol 的回复:]
引用 13 楼 sunrain_hjb 的回复:
引用 8 楼 black_potato 的回复:
根据我的平台讲一下我的理解哈:

WinCE一个典型的启动过程:从Nand启动,bootloader和内核都保存在Nand里。

启动时,主要有两个步骤:一是bootloader初始化板子并把内核从nand拷到内存里面,二是跳到内存里面运行内核加载各个接口的驱动。

对于第一个步骤,占用的时间比第二个长得多,估计要7-10这样,第二个步骤估计也就1-3秒这样,所以我的做法是在bootloader里面添加开机的logo,只在第一个步骤的时候进行动态显示(用进度条的移动来表示),第二个步骤的时候就不再进行动态地显示了。

在内核从nand拷到内存的时候,有个专门的函数,比如说FMD_ReadSector(dwSectorAddr, pbBuffer, NULL, 1),你可以根据其中的dwSectorAddr这个参数来设置进度条的动态显示了:比如说你的SectorAddr总共为100,先LCD的中间画一个小长方形的白矩形条,开始的时候在矩形条的左边画一个小红块,然后当dwSectorAddr每增加10的时候你就在将小红块向右移整个矩形条的10%和位移。当内核从nand拷到内存完毕,你的小红块也就移到了最右边了。


就是这个思路,启动OS时的停滞是难免的。

如果是在从NAND拷贝到RAM里边加动态显示根本就没有必要,看下打印信息,这个读的过程基本上可以说是瞬间过去的,加了动态也没意义



[/Quote]
这个要看平台的,有些读取NK时间会比较长,如果时间很短,那确实没有必要加进度条了,显示一个LOGO足矣。
博说医械研发 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 harktrip 的回复:]
为何要进度条?
开机4~5秒就看到桌面了,进度条多余的,开机logo放个倒是真的
[/Quote]
你们的BOOTLOADER是自己重新写的吧?
并且驱动少,或者是驱动是在WINCE界面出现后由其它AP再进行加载?
如果是后者的话生产后供其它公司使用开发AP就不是很方便了。
博说医械研发 2009-11-03
  • 打赏
  • 举报
回复
不同的BSP出来的效果不一样,我们的BSP bootloader的时间比WINCE的启动时间短,因为我们驱动比较多,并且FLASH的盘符是三个,每个盘符大概要占去一秒钟的时间。
harktrip 2009-11-03
  • 打赏
  • 举报
回复

为何要进度条?
开机4~5秒就看到桌面了,进度条多余的,开机logo放个倒是真的
-小仙- 2009-11-03
  • 打赏
  • 举报
回复
这么都喜洋洋
black_potato 2009-11-03
  • 打赏
  • 举报
回复
根据我的平台讲一下我的理解哈:

WinCE一个典型的启动过程:从Nand启动,bootloader和内核都保存在Nand里。

启动时,主要有两个步骤:一是bootloader初始化板子并把内核从nand拷到内存里面,二是跳到内存里面运行内核加载各个接口的驱动。

对于第一个步骤,占用的时间比第二个长得多,估计要7-10这样,第二个步骤估计也就1-3秒这样,所以我的做法是在bootloader里面添加开机的logo,只在第一个步骤的时候进行动态显示(用进度条的移动来表示),第二个步骤的时候就不再进行动态地显示了。

在内核从nand拷到内存的时候,有个专门的函数,比如说FMD_ReadSector(dwSectorAddr, pbBuffer, NULL, 1),你可以根据其中的dwSectorAddr这个参数来设置进度条的动态显示了:比如说你的SectorAddr总共为100,先LCD的中间画一个小长方形的白矩形条,开始的时候在矩形条的左边画一个小红块,然后当dwSectorAddr每增加10的时候你就在将小红块向右移整个矩形条的10%和位移。当内核从nand拷到内存完毕,你的小红块也就移到了最右边了。
博说医械研发 2009-11-03
  • 打赏
  • 举报
回复
如果是EBOOT的动态效果的话就在每个函数调用的时候刷新一下进度条吧,但是在开始launch OS之后还有很长的时间不能更新进度条,这就是我为什么说是否需要在驱动里再刷新进度条的原因。
xilidecai 2009-11-03
  • 打赏
  • 举报
回复
可以放到内核目录下,也可以做到NBOOT里面,Nboot 并不具备烧写功能,它只能读取已经烧写处理好的文件:开机画面(BootLogo)和WinCE 内核。是用来启动WINCE内核的。
九个太阳2023 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sunrain_hjb 的回复:]
在BOOT里加就可以了,没有必要在OAL和驱动里做。
[/Quote]

那个动态效果怎么做呢?
sunrain_hjb 2009-11-03
  • 打赏
  • 举报
回复
在BOOT里加就可以了,没有必要在OAL和驱动里做。
guopeixin 2009-11-03
  • 打赏
  • 举报
回复
这个东西好,我喜欢,回头也尝试一下
shuilingshenjun 2009-11-03
  • 打赏
  • 举报
回复
我也加了,但是没有显示在LCD上。
我在EBOOT里的main.c 里加画像素的函数。在bootpart.cpp的BP_ReadData,里加了画进度条的函数,。这样始终不行,都不知道是在哪里出了问题,也不知道应该怎么去调试。
博说医械研发 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sunrain_hjb 的回复:]
引用 8 楼 black_potato 的回复:
根据我的平台讲一下我的理解哈:

WinCE一个典型的启动过程:从Nand启动,bootloader和内核都保存在Nand里。

启动时,主要有两个步骤:一是bootloader初始化板子并把内核从nand拷到内存里面,二是跳到内存里面运行内核加载各个接口的驱动。

对于第一个步骤,占用的时间比第二个长得多,估计要7-10这样,第二个步骤估计也就1-3秒这样,所以我的做法是在bootloader里面添加开机的logo,只在第一个步骤的时候进行动态显示(用进度条的移动来表示),第二个步骤的时候就不再进行动态地显示了。

在内核从nand拷到内存的时候,有个专门的函数,比如说FMD_ReadSector(dwSectorAddr, pbBuffer, NULL, 1),你可以根据其中的dwSectorAddr这个参数来设置进度条的动态显示了:比如说你的SectorAddr总共为100,先LCD的中间画一个小长方形的白矩形条,开始的时候在矩形条的左边画一个小红块,然后当dwSectorAddr每增加10的时候你就在将小红块向右移整个矩形条的10%和位移。当内核从nand拷到内存完毕,你的小红块也就移到了最右边了。



就是这个思路,启动OS时的停滞是难免的。
[/Quote]
如果是在从NAND拷贝到RAM里边加动态显示根本就没有必要,看下打印信息,这个读的过程基本上可以说是瞬间过去的,加了动态也没意义


sunrain_hjb 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 black_potato 的回复:]
根据我的平台讲一下我的理解哈:

WinCE一个典型的启动过程:从Nand启动,bootloader和内核都保存在Nand里。

启动时,主要有两个步骤:一是bootloader初始化板子并把内核从nand拷到内存里面,二是跳到内存里面运行内核加载各个接口的驱动。

对于第一个步骤,占用的时间比第二个长得多,估计要7-10这样,第二个步骤估计也就1-3秒这样,所以我的做法是在bootloader里面添加开机的logo,只在第一个步骤的时候进行动态显示(用进度条的移动来表示),第二个步骤的时候就不再进行动态地显示了。

在内核从nand拷到内存的时候,有个专门的函数,比如说FMD_ReadSector(dwSectorAddr, pbBuffer, NULL, 1),你可以根据其中的dwSectorAddr这个参数来设置进度条的动态显示了:比如说你的SectorAddr总共为100,先LCD的中间画一个小长方形的白矩形条,开始的时候在矩形条的左边画一个小红块,然后当dwSectorAddr每增加10的时候你就在将小红块向右移整个矩形条的10%和位移。当内核从nand拷到内存完毕,你的小红块也就移到了最右边了。

[/Quote]

就是这个思路,启动OS时的停滞是难免的。
加载更多回复(2)

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧