首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

很郁闷的有关问题,WinCE、Platform Builder达人请进来,多提提建议,多谢

2012-02-17 
很郁闷的问题,WinCE、Platform Builder达人请进来,多提提建议,谢谢!本人买了一块FriendlyARM(友善之臂)的板

很郁闷的问题,WinCE、Platform Builder达人请进来,多提提建议,谢谢!
本人买了一块FriendlyARM(友善之臂)的板子,用VS2005开发了一个程序要运行在板子上面,系统刷成WinCE 5.0了,程序开发也完成了,正当以为一切可以结束的时候,发现板子重启之后保存在WinCE里面的数据完全消失了,程序可以放在别的存储设备,,,,,但是VS2005开发的程序,调试过程中,VS会向WinCE的Windows文件夹写入很多文件(诸如.net CF,一些要引用的dll,还有一些CAB文件等等),这些文件也会随着掉电而消失,这些.net的支持文件消失了,程序再放到哪里都没有,没有这些支持文件程序是没法运行的。
  针对这个问题,我想到的是用Platform Builder 5.0定制系统,自己定制一个包含.net CF还有其他支持文件甚至包含程序文件的系统。Q1:因为我是这方面的新手,我想问问我这样想法有没有问题,因为我需要的不是系统能保存什么设置,我需要系统一开机的时候Windows下的文件夹含有我想有的文件就足够了,假若有别的方法,请指名,谢谢!

  其实Platform Builder我也安装,走到一步叫"系统就会接到从开发机广播过来的信息"的步骤时就毫无反应,请参照http://blog.csdn.net/cudng/archive/2007/07/17/1694609.aspx,Blog主也说只有8139的网卡才能支持,我现在手头上的都没有这芯片,今晚去买一张看看,,,,,,,,,但我把Blog主说的这文章之前的所有步骤都走完了,因为之前的步骤已经编译过了,所以相应的WorkSpace文件夹里面也有NK.bin文件了,我就尝试把这个文件刷进我的设备,刷了3个格子就刷不下去了。Q2:这个bin文件不能刷,那究竟到什么阶段的bin文件才能刷,一定要PB自动下载进去设备的才能用么?

Q3:用PB的过程中,定制BSPs类型的时候有过选择支持的CPU的过程,因为我的板子是ARM的CPU,我发现只选择ARM的时候,右边的Catalog/BSPs里面根本不会出现我定制的BSPs类型,这究竟是什么意思,我实在想不同...

Q4:我买的板子是带7寸的触摸屏的,这个产品根据显示输出的不同支持分了不同型号,厂商给每种型号的WinCE的bin文件都是不一样的,他们的bin是不是也用PB定制出来的?那么那些显示驱动,还有其他接口的驱动,有是在PB哪个过程刷进去的?上面的Blog好像没有说到过这个东西...

Q5:有人说这个板子运行的WinCE是保存在RAM,所以一掉电就会丢失数据,对WinCE的设置也一样消失,这样的优点就是不用维护系统,一重启就好了,,,,,但我发现一个问题,就是我设置的固定的IP地址,设置好后,无论我怎样关机,一开机还是能保持我关机前设置过的IP信息,这又是怎么一回事?实在是不解...

我的问题比较多,也知道大家不都是神,大家有知道的,就挑自己知道的问题回答好了...
觉得有什么需要提醒一下我的,也无任欢迎,这个帖子我会尽量把分数加上去,因为我真的逼切需要你的解答,希望大家可以热心帮助我,谢谢!

[解决办法]
windows 是RAM文件系统,肯定掉电就没有了。

不过我看有些人的机子不会,我觉得有可能做了处理,比如写个无界面的的开启启动程序,把这些文件拷贝到windows目录下。
我自己也不懂,我的SQL 3.0吧,装上去,启动也没有了,现在还没有时间研究呢。
[解决办法]
Q1很简单,直接把需要的文件做到Image里进去就可以了
Q3你需要在定制前把相应的CEC文件导入进去
Q4驱动程序是通过PB编译,最后包含在生成的Image中
Q5CE即支持RAM Base的文件系统,也支持RAM+ROM的文件系统,还支持ROM Only的文件系统,各取所需吧。
LZ所说的IP地址信息不丢失的问题应该是该系统实现了Hive based registry功能,注册表信息会保存在ROM上,掉电不会丢
[解决办法]
Q1:image就是用PB编译生成的,至于如何下载和烧写,卖开发板的厂家应该有详细文档说明以及工具软件.

Q2: PC端发广播信息,如果找到你的设备,会在ACTIVE DEVICE显示一个设备名; 你需要看一下你的设备在BOOT启动后是否和PC在一个网段,从你提的BOKE里IP设置为192.168.0.123即可,还有MAC地址如果没有设置也需要设置,不是全0就可以.

最好详细看下厂家写的手册,那里应该能解答你一些问题.
[解决办法]
windows 文件夹是RAM文件系统,断电就不会保存。
如果你一定要保存用户设置等数据的话,就用HIVE注册表吧。但是你要在windows目录下添加文件,那是绝对不行的。除非你硬件有备用电池,不让内存掉电。
如果你一定需要在windows目录下添加自己的文件(静态),可以重新编一个image,把需要的文件打包进来。
如果你需要动态在windows下添加文件,而且还要断电后开机还在,那有一种方法,
硬件上要有足够的ROM,把动态建立的文件添到windows目录的同时,也写进ROM,断电后开机时,要有一个程序在系统启动完毕后,再将保存的文件从ROM拷到windows目录下。
这样比较麻烦,不过lz为什么一定要在windows目录等ram文件系统下添加文件呢?

探讨
我现在最大最大的问题就是如何在WinCE下特别是Windows文件夹下保存数据而掉电也不消失?!,其他问题都是引申出来想了解一下而已!

难道没人遇到这种情况么?
大家都是怎么处理的,都给我支支招啊,最少也请告诉我定制系统能不能解决我这个问题,不能的话,我就不放心思在这上面了,另找办法去了~!
这200分帖子一定会结的,谢谢大家帮忙!

[解决办法]
PB定制的时候如下修改project.bib文件(一般在PBWorkspaces\PBTest\WINCE500\DeviceEmulator_ARMV4I\OAK\files中),可以把文件定制到内核中,掉电保存


放入内核中的文件名 PC机上的全路径 放入到设备的windows目录下 设置属性为system, hide
CAMBRIA.TTC D:\WINCE500\英文字体\CAMBRIA.TTC NK SH
[解决办法]
1、hive可以搞定
2、kitl问题,跟网卡无关,任何类型网卡都可以连接。当然前提要做好kitl的驱动
3、有人说了,cec问题
4、所有的bin都只能做其他用途,wince中lcd参数上报必须在驱动中实现。现在应该只有我作的bsp版本才有动态支持多个lcd模组,其他bsp都是定死的。
5、简单,都是norflash保存的信息。实际上你跑的版本没有设置正确,正常途径可以下载完烧录到任何ROM中的,再次启动使用binfs。速度快、节省内存
[解决办法]
Q1:
1.利用pb实现定制的nk包含Hive based registry功能。
2.应用软件中需要保存的文件存放到flash中。
3.需要开机就调用的部分,利用应用软件写入注册表,以使得下次开机的时候,系统依据注册表的信息,自动加载存在flash中的文件的信息。



nk是一种很复杂的映像文件,.bin格式的nk,它里面的内容一般都采用一种压缩算法,你可以想象,要修改nk,就好象要修改一个zip文件一样,很容易出错。在nk中加入Hive based registry功能,可能是将注册表专门存放在nk的某一特殊位置,这个位置容许修改。
Q2:
最好依据厂家的用户说明,一步都不要错的进行。格式化、网络设置等都要做。建议仔细看一下说明书。
Q3:
要把厂家提供的bsp包放到pb软件安装文件夹的指定位置。并在pb中加载它,如果pb原来有相同的cpu对应的bsp,删除它。加入新的。这个厂家提供的说明书都有说明,仔细看一下,就清楚了。
Q4:
不同的显示屏尺寸对应不同的nk.bin ,只能说明这些不同的nk中的显示驱动肯定略有不同,选择你自己的那个尺寸的nk,这个nk当然是用pb做出来的,应该是厂家为了方便用户,帮你做好的,当然你也可以自己利用pb做,不过在不熟悉pb的时候,直接利用厂家提供现有的pb工程修改成你所需要的再编译就好,自己做pb工程很容易出问题,而且你可能自己都不清楚是什么原因。
Q5:
这个和Q1可以采用同样的思路。


[解决办法]
你应该自己修改一下pb 把你的norflash 或则nandflash驱动装一下,然后在wince启动的时候装载一下flash设备 你把你 配置好的东西放到的 flash就可以了 掉电就不会消失了;
[解决办法]
不是把EXE打包进来,是把EXE运行需要的文件打包进来
[解决办法]
Q1:因为我是这方面的新手,我想问问我这样想法有没有问题,因为我需要的不是系统能保存什么设置,我需要系统一开机的时候Windows下的文件夹含有我想有的文件就足够了,假若有别的方法,请指名,谢谢! 
-->将你的程序需要的所有文件找到,然后统一复制到PB编译后的目录(Release),在platform.bib加入刚才那些文件,再次makeimg即可。
这里面涉及的就是“如何在镜像中加入自己的文件”,这步骤可以搜索一下,有很详细的说明。


Q2:这个bin文件不能刷,那究竟到什么阶段的bin文件才能刷,一定要PB自动下载进去设备的才能用么?
-->一定要PB编译成功的NK.bin才可以用来下载。不过既然厂家已经自带了多个NK,那这些nk.bin可以直接使用。


Q3:用PB的过程中,定制BSPs类型的时候有过选择支持的CPU的过程,因为我的板子是ARM的CPU,我发现只选择ARM的时候,右边的Catalog/BSPs里面根本不会出现我定制的BSPs类型,这究竟是什么意思,我实在想不同... 
-->需要在PB里面导入该开发板对应的cec,一般都会在厂商提供的光盘里,目录名一般就是CEC,里面能看到对应的cec文件。


Q4:我买的板子是带7寸的触摸屏的,这个产品根据显示输出的不同支持分了不同型号,厂商给每种型号的WinCE的bin文件都是不一样的,他们的bin是不是也用PB定制出来的?那么那些显示驱动,还有其他接口的驱动,有是在PB哪个过程刷进去的?上面的Blog好像没有说到过这个东西... 
-->都是用PB定制的。不同的屏对应不同的驱动,是在PB定制时,从开发板的BSP对应的CEC(看Q3)提供的组件中进行选择的。选好后,编译,就会生成对应的nk了。


Q5:有人说这个板子运行的WinCE是保存在RAM,所以一掉电就会丢失数据,对WinCE的设置也一样消失,这样的优点就是不用维护系统,一重启就好了,,,,,但我发现一个问题,就是我设置的固定的IP地址,设置好后,无论我怎样关机,一开机还是能保持我关机前设置过的IP信息,这又是怎么一回事?实在是不解... 
-->这个板子应该实现了HIVE REGISTER(HIVE注册表),可以将注册表的修改保存在flash中,掉电、重启都不丢失。
HIVE注册表只保存注册表修改,无法保存对系统文件的修改(\windows,\Program...,\MyDocum...之类)。

要实现对系统文件修改的保存,必须实现ROM版本,即将系统目录(\windows之类)映射到flash,所有对这些目录的修改(增加、减少、覆盖)都会在flash中保存,再次启动时加载flash下的目录,从而将之前的修改都体现出来。


[解决办法]
total space 383860 in 192 ranges
Writing D:\WINCE500\PBWorkspaces\Test2440\RelDir\smdk2440_ARMV4I_Release\NK.bin
Table of contents 8e0b98bc 00002360 ( 9056)
Writing ROM signature and TOC pointer at 8c200040
Kernel data copy section 8cf2add0 00000010 ( 16)
ROM Header 8e0b9868 00000054 ( 84)
First DLL code Address: 02cc0000
Last DLL code Address: 04000000
First DLL Address: 01c701de
Last DLL Address: 02000000
Physical Start Address: 8c200000
Physical End Address: 8e0bbc1c
Start RAM: 8e000000
Start of free RAM: 8e029000
End of RAM: 8ff00000
Number of Modules: 171
Number of Copy Sections: 1
Copy Section Offset: 8cf2add0
FileSys 4K Chunks/Mbyte: 64 <2Mbyte 64 2-4Mbyte 0 4-6Mbyte 0 >6Mbyte
CPU Type: 01c2h
Miscellaneous Flags: 0002h
Extensions Pointer: 8c202850
Total ROM size: 01ebbc1c ( 32226332)
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).
Error: Ram start overlaps rom binary
Rom end : 0x8e0bbc1c
Ram start: 0x8e029000
NK
physfirst 8c200000
physlast 8e0bbc1c
ulRAMFree 8e029000
Fatal error hit, exiting...
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).

Test2440 - 3 error(s), 14 warning(s)
改了为什么你的RAM起始地址还是8e000000
是不是编译的问题啊 这方面了解不多 我都是build and sysgen 的

热点排行