Posted on 2007-05-13 15:59
Walzer 阅读(59439)
评论(138) 编辑 收藏
1、先装Visual Studio 2005, 我拿到的是Professional Edition。最好别用DEFAULT安装,把组件CUSTOM一下,不然会花很多冤枉的磁盘空间。WINCE600的Platform Builder不像WINCE500是独立的,而是作为VS2005的插件,以后建立和定制OS、编译调试全部在VS2005里完成
2、安装Visual Studio 2005 Service Pack 1, 发布的地址 http://msdn2.microsoft.com/zh-cn/vstudio/bb265237.aspx
这是必须的装的,Release Note里面提到SP1提供了Windows Embedded 6.0 platform and tools support。
不同的VS2005版本(Standard / Professional / Tem Edition) 会对应到不同的下载上,不过简单点就用这个下载 http://www.microsoft.com/downloads/details.aspx?familyid=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&displaylang=en 430多兆,通吃所有版本。
3、可选,安装Visual Studio 2005 Service Pack 1 Update for Windows Vista。
发布和下载网址
http://www.microsoft.com/downloads/details.aspx?FamilyID=90e2942d-3ad1-4873-a2ee-4acc0aace5b6&displaylang=en
在SP1的基础上增加对VISTA的支持。注意一定要先装SP1,再装这个,在System Requirements里强调了Required Software: licensed copy of a Visual Studio 2005 and Visual Studio 2005 Service Pack 1. 我当时以为这个包含了上面SP1,浪费了不少时间
4、安装MSDN,从VS2005的安装页里选择。新版的MSDN界面功能看起来比较酷,但CE6的Product Documentation写得实在潦草,不少细节貌似没写清楚,所以这里建议选上CE5的产品文档留着以后作参考。
5、安装Windows Embedded CE 6.0。应用开发人员可以不装,在后文会提到可以利用CE6生成的SDK来工作;但是不装的话,恐怕无法在本地MSDN得到CE6的产品文档,另外还有PUBLIC目录下丰富的application sample code了。
几个注意点:
(1) 在下图这步才可以改路径。点选组件后,然后点下面的Browse。这里不像WINCE500安装时有专门的一步来改路径。害我狂点next/back几圈才找到。

(2) CE6没有专门的一个Emualtor(x86)选项了, 我以为是包含在x86里面, 后来发现x86部分我白装了。WINCE600和VS2005的模拟器可以直接跑ARM指令,他们管这个叫ARMulator ( 貌似LINUX上先有这个东西, MS抄人家的? )。这导致了CE5 的基于x86的Emulator无法在VS2005上跑起来,得用个很绕路并且不太好用的方法,等我用顺了再写文章出来。
(2) 注意磁盘空间,我选装了ARMV4I和X86两个,用掉6.5G,比WINCE500还要大些。
6、安装Windows Embedded CE 6.0 Platform Builder Service Pack 1,同样地,应用开发人员可以不装。
发布页 http://www.microsoft.com/downloads/details.aspx?FamilyId=BF0DC0E3-8575-4860-A8E3-290ADF242678&displaylang=en
这份只升级platform builder,并不修改WINCE600目录下的代码
--------------------------------
如果BSP开发人员不打算用模拟器的话,装到这步就行了。做应用的继续往下看
7、安装Microsoft Device Emulator 2.0。发布页
http://www.microsoft.com/downloads/details.aspx?FamilyID=dd567053-f231-4a64-a648-fea5e7061303&DisplayLang=en
注意下载时有32位版本和64位版本。安装后,emulator程序仍然在C:\Program Files\Microsoft Device Emulator\1.0下面,没有再生成一个叫2.0的目录,我总感觉被微软忽悠了。
8、安装Virtual Machine Network Driver for Microsoft Device Emulator, 发布页
http://www.microsoft.com/downloads/details.aspx?FamilyID=dc8332d6-565f-4a57-be8c-1d4718d3af65&DisplayLang=en //该发布页已过时无法找到,我把该文件自己传了一份,请从下面地址下载
http://files.cnblogs.com/walzer/Virtual%20Machine%20Network%20Driver%20for%20Microsoft%20Device%20Emulator.rar
不装这个的话,模拟器是启动不起来的,黑屏。如果通过命令行模式让DeviceEmulaotr.exe加载编译好的,可以看到串口输出窗口显示卡在初始化DMA传输的步骤上。我在这个问题上卡了近一个通宵,睡一觉起来才运气好翻到这个发布页,终于弄过去的。CE6模拟器的Download和Transport方式叫"Device Emulator (DMA)",我一开始理解成Direct Memory Access,以为微软为了解决模拟器上单步调试缓慢的问题,让内存和模拟器进程DMA方式传输什么数据呢,类似双端口RAM的方式在内存里直接传了,和ActiveSync,TCP/IP连接就无关了。后来才发现这个DMA估计是Device Emulator Adaptor,会自动去找模拟器上有什么可用的连接方式,还是TCPIP/ActiveSync/KITL/Manual等几种老方法。VISTA上没有ActiveSync了,只好用TCP/IP连接,不装这个virtual switch那就当然连不上了。
9、VISTA用户最好安装这个: Windows Mobile Device Center 6,作为ActiveSync的替代品,我预感在以后调试多半得用到
32位版:http://www.microsoft.com/downloads/details.aspx?FamilyID=83d513ea-9df9-4920-af33-3a0e2e4e7beb&DisplayLang=en
64位版:http://www.microsoft.com/downloads/details.aspx?FamilyID=6eb8d0aa-bc6b-4864-8ffe-dc26e1d9f843&DisplayLang=en
我在XP SP2和VISTA BUSINESS上都成功安装了CE6,并且各自新建了DeviceEmulator项目(现在不叫PBWorkspace了,叫OSDesigns),编译完后用CE6 Attach Device成功启动;然后再编译生成SDK,安装到XP SP2或VISTA上后,再从VS2005里从Emulator SDK新建VC项目,编译并在Emulator上单步调试,现在Emulator就不是从Attach Device连接的了,而是从Device Emulator Manager启动的,也就是说应用开发人员可以完全不用装CE6,只要装VS2005就可以了。
发两张通关靓图, Device Emulator Manager, 和自己定制生成的CE6中文模拟器


Feedback
已经好了,可能是过了一段时间emulator才启动好
--引用--------------------------------------------------
lifeikile: @Walzer
博主你好!
我这个仿真器还是黑屏,nk已经disable了kitl,你看是怎么回事?
谢谢
--------------------------------------------------------
@Walzer
关于VS2005上运行PB导出的SDK,结合你那个ce5的文章,我是这么做的:
1.打开或者新建一个OSdesign的工程;
2.Project->Add New SDK
3.配置SDK(现在只知道简单配置方法)
在Solution Explore,在SDKS中的NEWSDK上右键-〉property可进行简单配置
4.Build
同3,NEWSDK上右键-〉build
5.接下来就是安装build好的SDK1.msi
*****************************
请教一个问题:
1.emulator如何和desktop连接?我想把一些文件和可执行程序放到emulator上?
谢谢!
博主,你好,我在开发时
在BUILD完以后,在project里添加了SDK,并且吧SDK也BULID了
安装生成的SDK时
最最后进度时出现一个对话框说“ToolsMsmCA(Error):system package,xml file xxxx”什么的。请问您遇到过吗?这个怎么解决啊?
yangyantian: 我安装好以后,看到那个我自己设置的模拟器MyDeviceEmulator
但是那个属性的“传输”那里的选项里面只有“TCP连接传输”
没有其他的
引导程序那里也是不对。
“只有activeSync启动提供程序”
那里出了问题了啊!??
我都做了好几次了啊!
hujaguo@163.com
234498655
需要你的帮助!
@lifeikile
谢谢你在回复里完善了VS2005里的做法!
(1) emulator和desktop通过虚拟的TCP/IP连接,所以前面要安装什么虚拟网卡驱动.
(2) 可以在emulator启动后的界面里设置share folder, 可以访问PC端的文件夹. 或者你用REMOTE TOOLS里面有个FILE VIEWER也可以把文件上传到EMULATOR上.
@luckyant
我安装自己定制的SDK时很顺利,没有遇到你提到的错误.
@黄建国
[但是那个属性的“传输”那里的选项里面只有“TCP连接传输”,没有其他的]
这是对的. 前面你问的那句"只有activeSync启动提供程序"是哪里提到的? 我前面的回答错误了,十分抱歉! EMULATOR启动依靠所谓的Emulator Startup Service, 在CE6里应该是合并到Device Manager里面了, 而连接是依靠TCP/IP的.
你现在的情况是EMULATOR黑屏无法正常启动吗? lifeikile的回复倒是提醒了我,EMULATOR第一次启动要花比较长的时间, 第二次后就比较快了,你可能得耐心等等.
@Walzer
再请教一个问题:
情况如下:
我首先build os image时,disable kitl, 并导出sdk,安装之,则再emulator manager中cradle,就可以通过activesync连接emulator;
现在有一个应用,需要enable kitl,所以我重新build os image时,enbale kitl;成功后,attach;之后该怎么通过acitivesync连接emulator?
此外,如何disable KITL-over-DMA ?
谢谢!
yangyantian:
WinCE5.0定制自已的ARM中文模拟器
我安装好定制的SDK以后,在VS2005中工具->选项->设备工具->设备中看到那个我自己设置的模拟器
Microsoft DeviceEmulator: ARMV4I_Release
但是那个属性的“传输”那里的选项里面只有“TCP连接传输,没有“DMA”传输。
引导程序那里也是不对。
“只有activeSync启动提供程序”
那里出了问题了啊!??
我都做了好几次了啊!
hujaguo@163.com
234498655
需要你的帮助!
@黄建国
疯掉了,搞不定了, 我已经把CE6卸载四五个月了,记忆好模糊,再尝试回答楼上的问题会越答越错。我推荐楼上到http://blog.yesky.com/Blog/vincentzhou/ 上去问VincentZhou,他是我朋友,前阵子刚做完一个CE5到CE6的移植工作,应该对CE6会比较熟悉。
yangyantian:
WinCE5.0定制自已的ARM中文模拟器
非常感谢你的多方支持,目前经过自已二天研究,终于搞定了。。。
谢谢!!
Walzer, 你好!
我试图使用emulator调试celog程序时,当程序执行到loadkernellibrary时,emulator弹出以下错误,请问这个问题该怎么解决?
不胜感激!
---------------------------
Device Emulator
---------------------------
Error: The emulation layer does not support the functionality that is being accessed.
---------------------------
OK
---------------------------
@lifeikile
我没有用过LoadKernelLibrary这个函数, 但是从文档的说明来看, 这是个BSP层用的API, 负责把DLL加载到高于0x80000000的KERNEL SPACE空间. 而你通过EVC在EMULATOR上跑的都是应用程序, 更确切地说你调试跟踪到的应该是位于SLOT 0地址范围内的,APP应该不能管到KERNEL SPACE的东西.
回过头来说,你想加载哪个DLL, 逼得你放弃LoadLibrary, 而不得不用LoadKernelLibrary这个函数呢?
@Walzer
你好!DLL是自己写的,需要加载到内核模式才可以正常工作,emulator是不是不支持内核态编程?
谢谢!
请楼主多多指教啊,我在这个问题上面卡了三天了,下面的工作都弄不成,着急的头发都快白了。我在使用WINCE5.0编译内核,以前编译X86 bsp平台下的内核没有错误,可以下载到模拟器运行。然后安装了EVC和一些SDK写了些应用程序练练手,现在要上真实设备MIPS 调试,mips AMD au1200的bsp也安装了,定制au1200的winCE内核时候就报出错误:已复制两个文件。
there were errors with building。
后来我就重装了winCE,和相关的BSP安装升级包,build,报错:
第一个
d:\WINCE500\PLATFORM\DB1200\DRIVERS\IDE_1200\ide_1200.cpp(319) :error C2065: 'm_bDMAReadCommand' : undeclared identifier
第二个
d:\WINCE500\PLATFORM\DB1200\DRIVERS\IDE_1200\ide_1200.cpp(319) : error C2065: 'm_bDMAWriteCommand' : undeclared identifier
第三个
LINK : fatal error LNK1181: cannot open input file 'obj\MIPSII\retail\ide_1200.obj'
感觉好像是IDE驱动的问题?还有我始终农不清它一会儿一个错,错错大不同,是怎么回事,哪里设置的问题吗??请大家帮助啊!!
@albert4278
哈, 这种问题你应该找提供BSP的厂商. 我估计你是没仔细看BSP使用文档, 把什么编译开关弄错了,在PB的环境变量里没设对. 既然编译报说'm_bDMAReadCommand' 和'm_bDMAWriteCommand' 两个变量未声明, 你就在整个BSP代码里找找这两个变量是在哪里声明的,声明的地方是否被什么#ifdef #endif包括起来了. 最最简单的,直接打电话找提供BSP的技术支持.
@lifeikile
你试试用SetKMode这个API把自己的应用程序进程提升到KERNEL MODE, 看能否过去. 我没干过你这么暴力的事情, EMULATOR上就更不用说了. 你要注意EMULATOR上的地址空间分配和板子上的不一样.
楼主谢谢你的回答。后来我就在源代码里找这两个变量的定义,点击右键想看“go to defination of..”来找它们的定义处,但是这个选项是灰色不可用的,
你说我该怎么找它们的声明处呢?
问的问题可能弱智,请您不吝赐教。
@albert4278
我喜欢的做法是用Source InSight建立个PROJECT, 把BSP的代码全部加到这PROJECT里, 然后用Search Project来搜索变量名, 保证出来.
谢谢您的回复。
下面是解决过程:
1 重装了winCE5.0,重装前把它删的干干净净,和它有关的啥都不留下来,注册表用优化大师清楚了很多遍。
2 安装mips au1200的BSP,以及升级包。
3 定制mips平台上的winCE内核,编译。报错依然是:
d:\WINCE500\PLATFORM\DB1200\DRIVERS\IDE_1200\ide_1200.cpp(319) :error C2065: 'm_bDMAReadCommand' : undeclared identifier
d:\WINCE500\PLATFORM\DB1200\DRIVERS\IDE_1200\ide_1200.cpp(319) : error C2065: 'm_bDMAWriteCommand' : undeclared identifier
LINK : fatal error LNK1181: cannot open input file 'obj\MIPSII\retail\ide_1200.obj'
3 找到报错误的源代码处:并且试图找到这两个变量的定义在何处,检查了ide_1200.cpp,ide_1200.h,都没有发现这两个变量的定义。我有个同事也遇到过类似的问题,后来他安装了au1200的bsp升级包,问题解决了。从这里可以得到启发,试试把他的相关文件替换到我这边,看看行不行;于是把ide_1200.lib和相关一个文件夹ide_1200拷贝到我的相关目录下。再编译,漫长等待,发现不行,错误变了,提示一个文件打不开:can’t open input file:××.inf,具体名字忘记了。看看这个文件所在目录,发现也在au1200的bsp安装包下面,心想这样替换了这个文件以后不知道还有甚么错误,干脆把整个au1200的bsp都拷贝过来算了。于是把整个D:\wince500\WINCE500\PLATFORM\DB1200这个文件夹都拷贝到了我相应的目录下面;选择选项:sysgen current bsp,编译通过,说明这个bsp都没有问题了。再选择sysgen编译内核。漫长等待,成功了。
提醒:以后遇到怀疑是BSP的问题,可以在修改BSP后,编译bsp,这样等待时间短,也可以首先定位是不是BSP的问题。比如我这种情况,如果直接选择sysgen and build,等待时间非常漫长,也不能尽快明确错误。如果我每次替换D:\wince500\WINCE500\PLATFORM\DB1200下的一些文件的时候就只编译bsp,至少节约一个小时。
问题症结:BSP安装包和升级包没有发挥作用,没有被winCE platform识别,非要我手动替换了才行。也许是以前受到了损坏,卸载重装时候又没有卸干净,这都是猜测。
类似问题不敢说这就是解决之道,希望我的经验带来一些思路。
@albert4278
可怜的albert, 原来你是选择了最最慢的一种方法,怪不得那么痛苦.
(1) BUILD AND SYSGEN会把PUBLIC里和PLATFORM下你对应BSP的代码都重新编译, 而SYSGEN只编译PLATFORM下的BSP代码. 所以应该保持只用SYSGEN. 除非你修改了PUBLIC里的代码(最好别这样干)才需要BUILD AND SYSGEN. 注意PUBLIC下的SOURCE CODE编译出来的库未必和PUBLIC里原来提供的库一样! 也就是说那些只是SAMPLE CODE,而不是RELEASE CODE, 但库是RELEASE的. 我的机器SYSGEN一次20-30分钟, BUILD AND SYSGEN需要大概一个半小时.
(2) 印象中, 在BUILD CURRENT BSP之前, 需要在REL目录下已经有拷贝了PUBLIC的一些库文件, 如果你对一个新建的干净的WORKSPACE进行BUILD CURRENT BSP应该是通过不了的, 在编译时LIB和DLL相互LINK一旦遇到PUBLIC下的库就挂掉了, 所以BUILD CURRENT BSP之前最好先SYSGEN一下, 失败中止后再用BUILD CURRENT BSP
(3) 比BUILD CURRENT BSP更快的方法, 是在PB的FILE VIEW里面, 对前面出错的目录点右键, 在右键菜单里单独BUILD CURRENT PROJECT, 如果能正确生成LIB或DLL就过了,不用把BSP里其他目录一并再编译一遍.
@Walzer
太谢谢你了!!!好楼主。刚开始学习winCE上的开发,啥都不懂,你给我说了这么多,我以后就知道了很多方法,觉得这个弯路走的也值了。
楼主能不能推荐一些让我这种菜鸟能快速入门的一些资料呢?固然有些过程是要慢慢来,但是有些东西能早点知道对以后的进展也是很有帮助的,楼主大侠给我指点下迷津吧。呵呵。
再次谢谢指点,^_^。
@albert4278
貌似没有捷径,最好的资料就是产品文档,那份HELP. 本来我想和你推荐说让单位去找WINCE/WINMOBILE培训的, 以前我部门里请了研博培训, 但实际上培训效果一般, 又贵得要死, 讲师是讲得好, 但很多东西没用过时在培训课堂上听的不太明白, 都得自己用一段时间后才能掌握.
谢谢楼主。:)
我现在有一个问题。我手头有一份winCE下的应用程序源代码,但是没有甚么project信息之类的,该代码包下包括若干个文件夹和两个批处理文件,我估计一个文件夹就是一个工程,因为文件夹下都有一个winMain()主程序入口,也有make文件。当然也有一些文件夹里面的资源是共有的,比如inc文件夹,lib文件夹,图片文件夹之类的。
这个makefile也很奇怪,内容如下:
!if 0 (一堆版权声明) !endif
!if 0 (一堆授权声明)!endif
!INCLUDE $(_MAKEENVROOT)\makefile.def
我在pc上搜索了一下,D:\wince500\WINCE500\PUBLIC\COMMON\OAK\MISC下有个makefile.def文件,也就是这个文件存在于PB的定制内核相关的文件下,从这里我判断是要编译到pb定制的内核镜像文件里面去
我不知道wince下的make文件怎么使用,有EVC 的IDE不就不需要make来进行编译了吗?而且感觉这个makefile的作用就是设置一些环境的作用,那我该如何使用它呢?
还提供了两个设置环境变量和拷贝一些文件的两个批处理文件,比如批处理文件的内容是:SET IMG_USESKIN=1
SET WINCEREL=1
SET LOCALE=0409
SET RELEASETYPE=SDK
........
@build -c
@copy /y "%_PRIVATEROOT%\%_APPDIR%\FLASHPLAYER\RES\%_APPSIZE%\*.ini" "%_FLATRELEASEDIR%\"
@copy /y "%_PRIVATEROOT%\%_APPDIR%\FLASHPLAYER\RES\%_APPSIZE%\*.bib" "%_FLATRELEASEDIR%\"
..........
@makeimg
另一个批处理文件也差不多,也是set 什么什么,但是有一句指令很迷惑,我在网上搜索也找不到,@jdate2.exe >"%_PRIVATEROOT%\%_APPDIR%\VersionTool\version.txt"
@SetVersion.exe
这个jdate.exe是什么呢,pc上找不到这个文件,不过感觉该命令没有甚么编译程序的实质作用吧。
我认为这两个批处理文件就是在把应用程序编译到内核前对环境变量或者说编译环境做个设置,然后再把应用程序代码编译到镜像里面去。但是这批处理文件怎么用呢?完全雾里看花的感觉。请楼主大侠给我点指点吧。
@albert4278
(1) 你说的估计是WINCE\PUBLIC里面的一些SAMPLE, 用makefile, sources和dirs, 在Platform Builder里面编译. 你可以看看WINCE500文档里的Developing an Operating System->Build System->OS Design Configuration Files->Source Code Configuration Files里说明
(2) PUBLIC下的makefile.def是所有目录里makefile的头头,通吃BSP和应用, 那里面的东西最好别改, 也不是必须全部弄懂. 这就像LINUX下的makefile一样,写到很大很全很通用的程度时, 就只有作者自己才看得懂了. 我们所要做的只是针对目录写sources和dirs文件, 定一写makefile.def里需要的参数. 做BSP的时候就得自己写.
(3) 有EVC的IDE就不需要那个MAKE文件了. 我也不喜欢用PB来编译应用. 自己用EVC建个VCW, 把那些C/CPP文件加进去,照样可以编出来跑.
楼主大侠您好。看了你的建议,我受到了很大的启发。
我觉得自己还是对pb集成开发环境下对c、c++源文件的编译过程,比如build.exe如何调用那些批处理文件,如何引用环境变量胡里胡涂,才不知道手里这个应用程序怎么搞。对比了%_WINCEROOT%\PLATFORM\DB1200\Src\Drivers\ 这些目录下面的一些源文件,dir,source,makefile后,发现这些东西都是一个固定的模式写出来的,而且其作用我也有了一定的了解,所以我也不打算深究它们了。但是这些例程都有一个扩展名pbpxml的工程文件,我要是运行就直接添加然后sysgen,再makeimg就可以,但是手头这个应用程序源码在dir文件的平行目录下还有两个批处理文件,如果我要把该目录下的各个文件夹分别作为单独的工程(这些文件夹下面只有源文件,没有pbpxml工程文件)添加到EVC下面,这两个批处理文件怎么处理呢?它们的内容如我上次的帖子中所说。我感觉这些源文件最好在PB下面跑,为什么呢?因为它的makefile内容里面包含的是!INCLUDE $(_MAKEENVROOT)\makefile.def ,而且批处理文件下的很多命令是copy什么什么到某个winCE安装目录下甚么方面的,如果我在evc下面添加,这些环境变量怎么设置呢?这个批处理文件又如何调用呢?public目录下有很多工程文件,如果把它们添加到evc下而不是pb下,它们那些设置环境变量或者拷贝文件的步骤又是如何实现呢?
问了这么多,真给楼主添麻烦。可是现在糊涂的不行,求求大侠能指点吧,谢谢您啦。
楼主可否把邮箱给我?
我把程序包的结构给您发过去,这样感觉说不清。
請問樓主
我在現在要啟動IDE 硬碟,可是在ide_1200.reg去設定,但是怎麼樣都抓不到HD ,並且在console下卻看見 CIDE1200 - CPCIDiskAndCD::Init() Failed. Aborting
請問這是哪邊設定出暸問題??
我的ide_1200.reg的設定如下:
;
; Copyright (c) 2005 BSQUARE Corporation. All rights reserved.
;
; This file is to be included in platform.reg as required.
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\HDProfile]
"Name"="IDE Hard Disk Drive"
"Folder"="Hard Disk"
"AutoMount"=dword:1
"AutoPart"=dword:0
"AutoFormat"=dword:0
"MountFlags"=dword:1
"FileSystem"="fatfsd.dll"
"PartitionDriver"="mspart.dll"
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\HDProfile\FATFS]
"EnableCacheWarm"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\Builtin\IDE1200]
"Prefix"="IDE"
"Dll"="ide_1200.dll"
"Order"=dword:2
"SoftResetTimeout"=dword:3 ; ATA/ATAPI spec defines 31s ceiling; this is too long
"StatusPollCycles"=dword:100 ; Status register DRQ/BSY polling; 256 poll cycles
"StatusPollsPerCycle"=dword:20 ; Status register DRQ/BSY polling; 32 polls per cycle
"StatusPollCyclePause"=dword:05 ; Status register DRQ/BSY polling; 5 milliseconds between poll cycles
"SpawnFunction"="CreateIDE1200"
"Legacy"=dword:0
"IRQ"=dword:25 ; THDP-AU1200-II External IRQ line
; On the Pb1200 the 3 IDE address lines are static bus AD[5-7]
; this gives a register stride of 0x20
;
"RegisterStride"=dword:20
; IoBase - 1st entry is for CS0 space, second entry is for CS1 space
; On the Pb1200 IDE CS1 is activated when AD[8]==1, this corresponds to
; address 0x0C8000100 upwards. However, PCI devices (which we are pretending to be)
; don't map the first 4 bytes of their CS1 space so we actually need to start the
; seconds IoBase with an offset of 0x80 (4 bytes * 0x20 stride).
;
#if $(BUILD_PB1200)==1
"IoBase"=multi_sz:"0C800000","0C800180"
#else
"IoBase"=multi_sz:"18800000","18800180"
#endif
"IoLen"=multi_sz:"100","100"
"BusType"=dword:0
"InterfaceType"=dword:0
"IClass"=multi_sz:"{CDDC3621-3512-4b3f-BB6F-B4DD5E061795}"
"Disable48BitLBA"=dword:0
; Device0 is the Master device on the Primary channel
[HKEY_LOCAL_MACHINE\Drivers\Builtin\IDE1200\Device0]
"Prefix"="DSK"
"DeviceId"=dword:0
"Dll"="ide_1200.dll"
"IntEnable"=dword:1
"DMA"=dword:2 ; enable DMA
"InterruptDriven"=dword:1 ; enable interrupt driven I/O
"DoubleBufferSize"=dword:10000 ; 128 sector (65536 byte) double buffer
"DrqDataBlockSize"=dword:200 ; 1 sector (512 byte) DRQ data block
"WriteCache"=dword:01 ; enable on-disk write cache
"LookAhead"=dword:01 ; enable on-disk look-ahead
"TransferMode"=dword:22 ; Multi-word DMA mode 2
"Object"="CreateIDE1200"
"Ioctl"=dword:4
"InactivityTimeout"=dword:7530 ; 30 second timeout (value is hex milliseconds)
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}","{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"
; Device1 is the Slave device on the Primary channel
[HKEY_LOCAL_MACHINE\Drivers\Builtin\IDE1200\Device1]
"Prefix"="DSK"
"DeviceId"=dword:1
"Dll"="ide_1200.dll"
"IntEnable"=dword:1
"DMA"=dword:1 ; enable DMA
"InterruptDriven"=dword:1 ; enable interrupt driven I/O
"DoubleBufferSize"=dword:10000 ; 128 sector (65536 byte) double buffer
"DrqDataBlockSize"=dword:200 ; 1 sector (512 byte) DRQ data block
"WriteCache"=dword:01 ; enable on-disk write cache
"LookAhead"=dword:01 ; enable on-disk look-ahead
"TransferMode"=dword:22 ; Multi-word DMA mode 2
"Object"="CreateIDE1200"
"Ioctl"=dword:4
"InactivityTimeout"=dword:7530 ; 30 second timeout (value is hex milliseconds)
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}","{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"
; Leave drive on during user idle and system idle unless IDE driver decides otherwise.
; Without this the hard drive will not be able to request to power itself up while
; in user or system idle modes.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\UserIdle\{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}]
"Default"=dword:0 ; D0
; Leave drive on during system idle unless IDE driver decides otherwise
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\SystemIdle\{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}]
"Default"=dword:0 ; D0
@albert4278
你在BLOG左边找"私人留言", 把你EMAIL地址留给我.
@晴天593
不像是注册表的问题了,你在C++函数里Data Abort, 应该跟踪进去看看哪条语句ABORT, 什么条件导致了ABORT, 而不是在程序外围去查. 如果BSP是由芯片商提供的,那么可以联系芯片商的技术支持.
楼主您好,我是albert4278
我留过言了。
谢谢你的关注
walze 楼主,您好。
我现在PB编译内核的时候总是提示
0 error 0warning
但是there were errors with building
为了看清错误,我会再执行build os-> make runtime image
这时提示regcomp: Error: InitRegistry FAILED on or near line 680 of D:\wince500\WINCE500\PBWorkspaces\db12000107\RelDir\DB1200_MIPSII_Release\reginit.ini.
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).
我查看了reginit.ini.的680行,是一行空,啥都没有,前面是
[HKEY_LOCAL_MACHINE\Time Zones]
"Default"=LOC_DEFAULT_TIMEZONE
后面是:[HKEY_LOCAL_MACHINE\Time Zones\Dateline Standard Time]
"Display"=mui_sz:"coredll.dll,#32768"
"Dlt"=mui_sz:"coredll.dll,#33024"
"Std"=mui_sz:"coredll.dll,#33280"
"TZI"=hex:d0,02,00,00,00,00,00,00,c4,ff,ff,ff,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
中间一行空行就是680行,这个错误该怎么解决呢?
网上搜到一些很少的相似问题,说修复.reg文件,因为这些文件被最后做成reginit.ini文件,但是我不知道如何修复,修复哪里,现在镜像都没编译成,也不能用remote registry editor看注册表信息。希望看到您的回复,谢谢啦。
@杰奎琳的小猫咪
你先找下reginit.ini里的这一段TIME ZONE是哪个.reg文件里包含过来的, 直接去修改那个reg文件里的内容
空行出问题的话,你检查一下这个空行上是否有些空格, 或者把文本转到16进制的看看有什么异常, 有时候很怪异的ASCII码或UNICODE码会显示为空格, 你看到那地方没显示字符出来,不等于那地方没有数据.
walzer,您好。
之前提的问题我通过看build.log的错误提示,和具体在哪里挂掉的说明,解决了pb编译内核总是不成功的问题。另外通过添加组件,解决了那个argon播放器启动的时候flash播放器非法操作的问题。其实都很简单的 ^_^
现在我经常看一些应用代码,它里面会用到很多宏,比如DEBUGREGISTER,等等。我一般查找自己不了解的函数和宏它们的意思和出处,都会使用MSDN和PB的帮助文档这两个工具,但是我发现很多宏都查不到(函数倒是大部分可以查到),不知道它们是什么意思,在哪个头文件定义的,给我看代码带来很大困难。我想问问您我如何查到这些呢?
春节快到啦,祝节日愉快,如果需要长途旅行回到家,就一定会一路顺风:)
@杰奎琳的小猫咪
只有两种情况,SDK里(MS的,或者其他公司的), 项目里自己写的.
对于SDK里的,你翻翻MSDN, 或者其他公司提供SDK时一并提供的文档一般可以找到;
对于第二种情况, 你搞个Source In Sight建立项目, 把整个应用代码全部加进去, 同步一下整个项目, 然后点到宏的时候, 如果这个宏在工程的某个文件里有定义, 那么CONTEXT窗口就会显示定义的这个地方了.
博主你好,我已经做到导出SDK并安装到XP SP2上了。
只是,对“再从VS2005里从Emulator SDK新建VC项目,编译并在Emulator上单步调试”这句话不是很理解。
上面那句话的,是不是:“打开vs2005”->“新建一个VC项目”->然后...(我不知道怎么做了)?
@flyingsky
步骤如下
(1) 打开VS2005新建一个VC项目
(2) 注意选择SMART DEVICE的
(3) 然后就有选SDK的这步了, 你可以看到POCKET PC 2003, SMART PHONE 2003等, 还有你刚安装上去那个EMULATOR SDK的名字, 把你加进去的SDK选择到右边的列表里
(4) PROJECT建成后, 你可以在主界面的SDK下拉菜单里切换不同的SDK进行编译
我在vs2005里,用pb定制内核的时候总是出现编译错误:
LINK : fatal error LNK1104: cannot open file 'D:\WINCE600\MyOSDesigns\MyOSDesign\MyOSDesign\Wince600\DeviceEmulator_ARMV4I\cesysgen\oak\target\ARMV4I\debug\services.exe'
NMAKE : fatal error U1077: 'link' : return code '0x450'
Stop.
NMAKE : fatal error U1077: 'C:\WINCE600\sdk\bin\i386\nmake.exe' : return code '0x2'
Stop.
重装软件无用,恢复系统也是老样子,郁闷~
谁能帮我解答下,谢谢了~
我的邮箱,msn:lordenal@126.com
76楼的,这种情况我以前经常遇到,编译总是挂掉。后来看build.log,注意,不是error.log,这个error.log一点用都没有,build.log很长,你用“error”关键字查查,看看它记录的error出现在哪里,因为什么原因error的。比如我那次找到“error:addlib....”后来发现我在相关目录下addlib文件已经被损坏了,重新拷贝了一个覆盖掉就好了。后来遇到编译出错的问题都是这样解决的,build日志很管用。
博主,你好!我在CE5.0里自己制作了一个armv4i的sdk,在platform builder里执行attach device时,提示如下错误:The virtual machine could not be started because there was not enough memory available on the host.我找了一个下午也没有找到原因。望指教。
博主好,我在光盘原有的ARMSYS2410.pbxml上添加了一些内核组件,选择sysgen后,出现
BUILD: [00:0000000000:ERRORE] Build.log: create file failed.
下面还有
Error: Could not find file 'D:\WINCE500\PBWorkspaces\ARMSYS2410\RelDir\smdk2410_ARMV4I_Release\kern.exe' on disk
nk.exe D:\WINCE500\PBWorkspaces\ARMSYS2410\RelDir\smdk2410_ARMV4I_Release\kern.exe NK SH
Error: failed setting line
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).
在wince500文件夹里搜kern.exe只在别的工程里有,copy过来应该不合适,
请问博主如何解决?
不过用供应商提供的SDK做OSDESIGN时,启动模拟器黑屏,设置COM1输出调试信息,控制台没有信息输出。楼主有没有好建议?
@connie
供应商提供的SDK是针对他们的硬件开发板的,你拿来做模拟器,不黑屏才怪. 模拟器应该是用微软自带的EMULATOR SDK.
你不可能只拿了人家的SDK,而手里没他们的开发板吧?
看了前面的一些问题和回答,对于这个模拟器,还是比较困惑。
这个模拟器的适用范围是什么。比如我有一个ARMV4I的bsp,不是微软的,用它来生成sdk后,可以在这个模拟器上运行吗?同是ARM架构但不同厂商的芯片做出来的开发板都不太一样,要在模拟器上运行,有什么要求呢?
补充:s3c2410并不支持3D硬加速,好像有ARM9的芯片支持(即芯片内部带加速器),这样的话这个模拟器,在3D这个上面有用吗?模拟器怎么知道这些寄存器是干什么的呢?这个比较典型。
又比如串口,不同的IC,memory的map不一样吧,相关外围的寄存器地址和操作也不是完全一样吧。那模拟器如何知道呢?
模拟器到底能模拟什么?
所以是不是一定要用微软提供的bsp呢?她的bsp又是针对哪款ic呢?2410吗?还是别的?
Walzer 老师您好,我现在刚刚参与一个应用WINCE 5。0一个项目,买了MARVELL 得开发板,我在Platform Builder 里用他们提供得BSP 建了一个workspace,结果最后点击finish 按钮时,跳出了警告窗口:“One or more BSP's that are not installed wre found in the selected Platform Builder project file.The configrations will be grayed out the configration combobox.”我发现Build OS 下拉菜单下得Build选项都是灰色得不可用,如果我创建workspace时选其他得BSP 就不会出现这样得问题。好像是和我用得BSP 有关系得。请问我该怎么办那。
@wanmeiyese
本来我只有把握说CE5上绝对不能这样干. 刚才请教了马宁大大, 现在看来CE6上也没门.
不论是CE5或CE6,都不可以在模拟器上运行由其他平台供应商提供的BSP. 很奇怪你拿BSP的时候没和开发板/评估板一起拿来吗?
你可以把模拟器理解成一块开发板, 和这开发板配套的BSP就是微软自带的那个;你绝对不能把其他BSP编译了在模拟器这块板子上跑
@AliceCUI
可能是你没有在CATALOG里面导入MARVELL BSP的一个东东, 导入一个文件就OK了, 导入后在CATALOG的THIRD PARTY目录下会多出一些东西. 具体怎么弄我是不记得了,手上也没PB5了. 你可以让MARVELL提供一份他们BSP的HOW TO BUILD或HOW TO USE之类文档,一般这种文档里会有详尽的如何添加如何编译说明.
@Walzer
好快啊。感谢回答。开发板我拿了,但是我们有好几个人在学,在自己的板子没出来之前,有人提议是不是可以搞个emulator之类的。我的判断是我们的bsp生成的sdk,放到模拟器上,能运行,但是绝对有很多问题。根本的原因就是我之前描述的。模拟器只是能执行ARM指令,并有特定的外设。虽然我们板子的处理器是ARM4vi的,但是memory map(包括各模块的寄存器地址)和模拟器的并不一样。要能运行,我们的扳子应该和微软的bsp对应的板子是同处理器(至少)。
@AliceCUI
你的问题我也遇到过。
虽然我解决了,但是原因在什么地方,我也不太清楚。
既然你能新建workspace, 说明你导入了xxx.cec文件,并且在CATALOG的THIRD PARTY目录下多出了你板子的bsp。
----------------------------------------
你先把那个bsp去除,并删掉原来的文件。
你得到的bsp应该是一个压缩包吧。
你先把它拷贝到platform下,然后解压,解压的文件名称跟xxx.cec的xxx要一样,包括大小写。
然后导入xxx.cec文件。
你再建一个os试试看,应该可以了。
如果还不行,只能问板子的技术支持了。
@wanmeiyese
嘿嘿, 你那个判断是错的,应该是完全不能运行. 这点在CE6上我还没太大把握,问了下马宁, 确认过了. 只有APP可以跨EMULATOR/硬件板上运行,BSP上完全不通。
即使和ARMULATROR是同处理器, 但GPIO配置、内存地址空间分配等完全一样的概率,应该和找到火星人的概率一样吧。
多谢wohuazhen的补充,我上面要说的就是导入那个CEC文件。他估计是CEC文件名称跟BSP名字不一样,那个地方不能随便改的,不然PB会找不到。
谢谢各位啊,这个地方真好啊,这么多老师啊给我解答!谢谢啊!
@Walzer
我建workspace之前已经通过import “Zylonite.cec”文件把BSP 加载进去了,catalog也有THIRD PARTY下得我加载得BSP了。
MARVELL给我们得支持太少了,唉,没办法。供应商是新加坡得,我们在上海研发,得不到很好得技术支持。
@wanmeiyese
我昨天也察觉到这个现象了,我突然想到用CEC Editor 编辑cec文件得时候BSP directory栏里写得是“Zylonite”,而实际目录是:C:\WINCE500\PLATFORM\ZYLONITE_HML
他们提供得一个命令行编译文件“WinCE_50_Build_BSP.bat”可以编译生成"EBOOT.nb0" 和"NK.nb0"。
我贴出这个文件开头得一部分:
“
@echo off
set _WINCEROOT=C:\WINCE500
cd /d %_WINCEROOT%\public\common\oak\misc
set _PLATFORM=%1
if /i (%_PLATFORM%) == () set _PLATFORM=ZYLONITE_MHL
if /i (%_PLATFORM%) == (zylonite) goto :WINCE_ENV
if /i (%_PLATFORM%) == (zylonite_mhl) goto :WINCE_ENV
if /i (%_PLATFORM%) == (mainstoneii) goto :WINCE_ENV
goto :HELP
:WINCE_ENV
call wince.bat ARMV4I CEBASE %_PLATFORM%
echo.
echo %_WINCEROOT% is now the default directory
echo.
set WINCEDEBUG=retail
if /i not (%2)==() set WINCEDEBUG=%2
”
这个bat文件我还不太懂(不好意思,新手刚接触wince 5)。不过我看他是对PLATFORM%)目录进行设定,才可以编译得。应该是这样吧。
@Walzer
@wanmeiyese
今天早上收到了新加坡一个作wince得同事得关于我提问得回复:内容如下
The Marvell BSP does not support build from the platform builder.
So your results are correct.
You have 2 options:
1. Edit the BSP's batch file to add/remove the components, and build from command line (as per user guide).
2. Edit the BSP's environment files to point to the correct directory, so that it can be use with the platform builder.
第一条我估计对我比较难,第二条路我不清楚在哪里改这个路径,是不是在cec editor里那?我一会尝试下。各位老师有提示吗?
@AliceCUI
第一条的add/remove the componets in batch file这个我也没搞过
第二条嘛, 我猜是改_PLATFORM那个参数, 你用UltraEditor把Zylonite.cec文件打开来看看,我印象CEC文件好象里面是XML的,很容易看懂那些参数在干什么.
@Walzer
我刚才做了下试验:如下
1,将BSP 解压后得文件夹名改为和CEC 文件名一致,改后BSP 路径为:C:\WINCE500\PLATFORM\Zylonite
2,选择“Platform-->BSP Wizard-->Clone an existing BSP”下来菜单中有了我们板子BSP 得名字“Intel DBMonhans Dev Platform”,(原来没做作第一步操作时,这里得下拉菜单没有出现我们板子得BSP 得名字!!)选择我们板子得BSP 做了一个clone BSP 名字是“TESTCYH”要生成得cec是“TESTCYH.cec”一直点击next完成BSP 得clone:Intel DBMonhans Dev Platform COPY。
3,选择“Tools-->cec editor”,打开刚成建得“TESTCYH.CEC”
确保BSP Directory为“TESTCYH”,所属文件为“TESTCYH.cec”
4,将“TESTCYH.cec”导入catalog。
5,选择“File-->New Platform”新建一个OS ,选择BSP "Intel DBMonhans Dev Platform COPY",完成。
这时Build OS 菜单下选项可用了,但是下面得信息窗口显示出2条红色字体得错误信息:
Added the Error Report Generator feature (SYSGEN_WATSON_DMPGEN) to the platform.
Added the Error Report Transfer Driver feature (SYSGEN_WATSON_XFER) to the platform.
Added the Error Reporting Control Panel feature (SYSGEN_WATSON_CTLPNL) to the platform.
不知道这是因为哪里得问题?
@Walzer
用BSP"Zylonite",新建一个OS ,效果也是和上面得操作一样:Build OS 菜单下选项可用(但是我没有build,因为太花时间,我的机器慢),但是下面得信息窗口显示出3条红色字体得错误信息:
Added the Error Report Generator feature (SYSGEN_WATSON_DMPGEN) to the platform.
Added the Error Report Transfer Driver feature (SYSGEN_WATSON_XFER) to the platform.
Added the Error Reporting Control Panel feature (SYSGEN_WATSON_CTLPNL) to the platform
我现在研究下 Zylonite.cec.呵呵,Build OS 菜单下选项可用了貌似有进展了啊,加油!
Pass 1...
Warning: Unable to do imports from ppp.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from schannel.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from k.schannel.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from eapol.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from eapchap.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from crypt32.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from k.crypt32.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from cryptdll.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from k.cryptdll.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from credssp.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from k.credssp.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from mstscax.dll to CREDUI.dll - will late bind
Warning: Unable to do imports from cetsc.exe to CREDUI.dll - will late bind
Pass 2...
RAM AutoSize: RAM Start=83aa0000 RAM Size=0044f000
Found pTOC at 0000101c
No imports for nk.exe
No imports for kitl.dll
No imports for kernel.dll
No imports for coredll.dll
No imports for k.coredll.dll
Warning: Unable to do imports from ppp.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from schannel.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from k.schannel.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from eapol.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from eapchap.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from crypt32.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from k.crypt32.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from cryptdll.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from k.cryptdll.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from credssp.dll to RSAENH.dll - will late bind
Warning: Unable to do imports from k.credssp.dll to RSAENH.dll - will late bind
No imports for shdoclc.dll
Warning: Unable to do imports from mstscax.dll to CREDUI.dll - will late bind
Warning: Unable to do imports from cetsc.exe to CREDUI.dll - will late bind
No imports for pwd_res.dll
Processing NK
老师我编译的时候遇到了这些警告是什么原因啊
@AliceCUI
哈哈,你不要看到ERROR就认为是错误. 注意看语法
Added ' the Error Report Generator feature (SYSGEN_WATSON_DMPGEN)' to the platform.
把 生成错误报告的组件(SYSGEN_WATSON_DMPGEN) 加到PLATFORM里面.
DOCTOR.WATSON是WINCE里面用来生成错误报告的工具.
@ Walzer
见笑了啊:)
呵呵,是啊,当时我还觉得不对劲那看语法不是错误但是用红色字体显示出来了,我想是不是这个信息语法不严谨,呵呵。
后来查到了PB5x_Cmd_Line_Bld_Env_Vars.bat文件里设置了这个三个变量
set SYSGEN_watson_dmpgen=1
set SYSGEN_watson_xfer=1
set SYSGEN_watson_ctlpnl=1
如果去掉这3个变量就没有上面的3个报告了,呵呵。
另外好消息,我们OS在Platform 的编译通过了,主要是修改了dirs里的编译目录,去掉了DIRS= \
apps
在zylonite_common.bib文件里把UsbSwitch.exe去掉
IF OSV_WINCENET
UsbSwitch.exe $(_FLATRELEASEDIR)\UsbSwitch.exe NK
ENDIF
就可以了。
但是我们用Platform建了OS 以后没有作把catalog item加入到OS 的造作,只是修改了一些类似上述的文件,感觉一些配置和功能的加入还是通过文件来完成的,通过DIRS 文件指定了编译的目录,
通过C:\WINCE500\PLATFORM\ZYLONITE\FILES文件夹下的zylonite_common.bib指定了要编译的drivers
通过C:\WINCE500\PLATFORM\ZYLONITE文件夹下的PB5x_Cmd_Line_Bld_Env_Vars.bat设置变量
其他用到的文件我还不清楚,用PB Build OS 的过程中都调用那些文件那?
我们接下来的问题:把WIN MOBILE 的一个BSP 中的PowerManage 和touch 功能移植到WINCE 5,因为现在我们的BSP 没有实现这两个功能,这两个BSP 的硬件很相似:
WIN MOBILE bsp:Marvell PXA310,DA9034作电池管理和lcd
WINCE 5 BSP:Marvell PXA300,DA9030作电池管理和lcd
首先看了下两个BSP 的目录结构几乎一样的,关于这样的移植,Walzer老师有什么建议,我是不是首先得找到关于这部分得driver再说了。但是我也得知道如何加driver到我们得BSP 才行,最后加好了,就要看driver那里休要修改。
我觉得任务好艰巨!!加油!!!
@AliceCUI
PXA都演进到310了啊.
关于移植我就没什么想法了, 自己没具体做过这两个模块, 都是非流式接口的. POWER MANAGER会比较难.
@Walzer
抱着谨慎的态度,我决定做一些实验。
首先,我下载了microsoftdeviceemulatorbsp.msi,安装后用PB生成SDK,装上,到VS5005下,工具|选项|设备,设置显示屏大小,然后工具|设备仿真管理器,连接刚才做的SDK,成功启动WinCE 5.0。
NOTE:在用PB做SDK时我发现它的BSP包内的东西和SMD2410的差不多,我想处理器一定是S3C2410了。
接着,我用SMD2410的BSP用同样的步骤做了一个SDK,装上,同样的方法,成功启动WinCE 5.0,只是屏幕大小的设定有些问题。
最后,我用购买的开发板(processor name:pollux,ARM926,with 3D ,MagicEyes,Korea)的BSP用同样的方法生成SDK,但是无法正常启动,连黑屏都没见到,像陷入死循环一样。
-----------------------------------------------------------------
-----------------------------------------------------------------
后来我发现,前两个BSP的虚拟地址映射表,除了最后一项,其它全一样。从OAL里的东西看,表明处理器应该是S3C2410。
-----------------------------------------------------------------
-----------------------------------------------------------------
我想,要用这个模拟器,关键就是OAL里设及的硬件。
博主您好 我attach Device的时候出现 这种错误 是什么原因呢
Error:Invalid or missing ROM image
@牛司朋
因为你并没有SYSGEN成功生成一个有效的NK.BIN文件
我在无串口的笔记本电脑中安装wince 6.0, 按照上述方式安装了所有软件。
1. 但是发现 项目->属性->Debugger选项中没有CE Dump File Reader和Sample Device Emulator EXDI 2 Driver。请指教。
2. 且定制一个WinCE6.0内核后,用模拟加载,黑屏。用usb口连接了一个usb转串口工具,但加载时说找不到串口,LastError=... 。不知道什么原因,呵呵,
但是 build窗口提示 1 succeeded 0 failed 0skipped啊
还有啊 博主
我吧wokspace建在了别的盘里 当我编译完之后 attach Device的时候
出现Cannot locate the run-time image file:F:\OsDesign\MyOsTest\RelDir\CEPE_x86_Debug\nk1.bin
make sure you have built a run-time image
这个问题怎么解决呢 谢谢
@Walzer
我从win mobile的BSP 移植了部分文件到WINCE 5 的bsp,经过几次编译几次修改错误,最后这个错误不知道如何修改了:build.log文件最后:
BUILD: [01:0000001243:INFO ] obj\ARMV4I\retail\micco.obj
BUILD: [01:0000001244:INFO ] D:\WINCE500\public\CEBASE\cesysgen\sdk\lib\ARMV4I\retail\coredll.lib D:\WINCE500\public\CEBASE\cesysgen\oak\lib\ARMV4I\retail\ceddk.lib D:\WINCE500\platform\ZYLONITE_MHL\lib\ARMV4I\retail\monahans_xllp.lib D:\WINCE500\public\CEBASE\cesysgen\sdk\lib\ARMV4I\retail\corelibc.lib
BUILD: [01:0000001245:INFO ] D:\WINCE500\platform\ZYLONITE_MHL\lib\ARMV4I\retail\Zy_Micco.exp
BUILD: [01:0000001246:ERRORE] monahans_xllp.lib(xllp_gpio_expander.obj) : error LNK2019: unresolved external symbol OSD_GPIO_Expander_IOMapping referenced in function XllpGpioExpanderI2CWrite
BUILD: [01:0000001247:ERRORE] monahans_xllp.lib(ResourceLock.obj) : error LNK2019: unresolved external symbol OSDS_DestroyLock referenced in function RM_DeInitService
BUILD: [01:0000001248:ERRORE] monahans_xllp.lib(ResourceLock.obj) : error LNK2019: unresolved external symbol OSDS_AcquireLock referenced in function RM_DeInitService
BUILD: [01:0000001249:ERRORE] monahans_xllp.lib(ResourceLock.obj) : error LNK2019: unresolved external symbol OSDS_GetCurrentThreadID referenced in function RM_InitLock
BUILD: [01:0000001250:ERRORE] monahans_xllp.lib(ResourceLock.obj) : error LNK2019: unresolved external symbol OSDS_CreateLock referenced in function RM_InitLock
BUILD: [01:0000001251:ERRORE] monahans_xllp.lib(ResourceLock.obj) : error LNK2019: unresolved external symbol OSDS_ReleaseLock referenced in function RM_ReleaseLock
BUILD: [01:0000001252:ERRORE] monahans_xllp.lib(xllp_logmessage.obj) : error LNK2019: unresolved external symbol OSDS_LogMessage referenced in function xllp_LogMessage
BUILD: [01:0000001253:ERRORE] D:\WINCE500\platform\ZYLONITE_MHL\target\ARMV4I\retail\Zy_Micco.dll : fatal error LNK1120: 7 unresolved externals
BUILD: [01:0000001254:INFO ] Stop.
BUILD: [00:0000001255:PROGC ] Files Warnings Errors
BUILD: [00:0000001256:PROGC ] Midl 0 0 0
BUILD: [00:0000001257:PROGC ] Resource 0 0 0
BUILD: [00:0000001258:PROGC ] Message 0 0 0
BUILD: [00:0000001259:PROGC ] Precomp Header 0 0 0
BUILD: [00:0000001260:PROGC ] C/Cpp/Cxx 0 0 0
BUILD: [00:0000001261:PROGC ] Assembler 0 0 0
BUILD: [00:0000001262:PROGC ] Static Libraries 4 0 0
BUILD: [00:0000001263:PROGC ] Dll's 16 1 8
BUILD: [00:0000001264:PROGC ] Exe's 9 0 0
BUILD: [00:0000001265:PROGC ] Resx 0 0 0
BUILD: [00:0000001266:PROGC ] Csharp Targets 0 0 0
BUILD: [00:0000001267:PROGC ] Other 0 32 1
BUILD: [00:0000001268:PROGC ]
BUILD: [00:0000001269:PROGC ] Total 29 33 9
BUILD: [00:0000001270:PROGC ]
BUILD: [00:0000001271:PROGC ] 33 Warnings, 9 Errors
----------------------------------
build.eer 文件如下:
BUILD: [Thrd:Sequence:Type ] Message
BUILD: [01:0000001246:ERRORE] monahans_xllp.lib(xllp_gpio_expander.obj) : error LNK2019: unresolved external symbol OSD_GPIO_Expander_IOMapping referenced in function XllpGpioExpanderI2CWrite
BUILD: [01:0000001247:ERRORE] monahans_xllp.lib(ResourceLock.obj) : error LNK2019: unresolved external symbol OSDS_DestroyLock referenced in function RM_DeInitService
BUILD: [01:0000001248:ERRORE] monahans_xllp.lib(ResourceLock.obj) : error LNK2019: unresolved external symbol OSDS_AcquireLock referenced in function RM_DeInitService
BUILD: [01:0000001249:ERRORE] monahans_xllp.lib(ResourceLock.obj) : error LNK2019: unresolved external symbol OSDS_GetCurrentThreadID referenced in function RM_InitLock
BUILD: [01:0000001250:ERRORE] monahans_xllp.lib(ResourceLock.obj) : error LNK2019: unresolved external symbol OSDS_CreateLock referenced in function RM_InitLock
BUILD: [01:0000001251:ERRORE] monahans_xllp.lib(ResourceLock.obj) : error LNK2019: unresolved external symbol OSDS_ReleaseLock referenced in function RM_ReleaseLock
BUILD: [01:0000001252:ERRORE] monahans_xllp.lib(xllp_logmessage.obj) : error LNK2019: unresolved external symbol OSDS_LogMessage referenced in function xllp_LogMessage
BUILD: [01:0000001253:ERRORE] D:\WINCE500\platform\ZYLONITE_MHL\target\ARMV4I\retail\Zy_Micco.dll : fatal error LNK1120: 7 unresolved externals
请问这个到底是哪里除了问题了。
@AliceCUI
你这全部是unresolved external symbol,还是很有规律地缺掉了OSDS这个模块的函数,你先在代码里搜索一下这些函数具体是哪个或哪些文件里实现的,这些文件的目录下的SOURCES文件打开看下生成了哪个LIB, 然后最后这个LIB怎么层层被LINK到你要生成的Zy_Micco.dll里面.
应该是这个LIB实际上并没有被LINK到DLL里面, 八成是编译开关导致的. 具体是哪个编译开关, 那就在C/C++代码和SOURCES文件里找了
WinCE 中怎样实现播放一段wav 或wma或MP3格式的语音呢 具体函数是什么啊 我用PlaySound(TEXT("\\sounds\\bell.wav"),NULL,SND_SYNC|SND_NODEFAULT);怎么实现不了啊 我把\\sounds\\bell.wav直接放到工程文件夹的根目录下了
我把SND_NODEFAULT去掉之后 只播放一声“嘀”的声音 估计那是系统的声音吧
@Walzer
我查到这几个函数都是在这个目录下
C:\WINCE500\PLATFORM\COMMON\SRC\SOC\pxa3xx\OSD
的3个文件里定义的:
OSDGpio_expander.c
OSDLogging_WinCEUM.c
OSDLocking_WinCEUM.c
同目录下的sources文件为:
!if "$(BSP_MONAHANS_P)" == "1"
SKIPBUILD=1
!endif
TARGETNAME=osd_pxa3xx
TARGETTYPE=LIBRARY
INCLUDES= \
$(_PLATFORMROOT)\common\src\soc\pxa3xx\oal\inc; \
$(_PLATFORMROOT)\common\src\soc\pxa3xx\inc; \
$(_PLATFORMROOT)\common\src\soc\pxa3xx\XLLP_processor\include; \
$(_TARGETPLATROOT)\src\inc; \
$(_TARGETPLATROOT)\src\drivers\xllp_plat\include
SOURCES=\
OSDLogging_WinCEUM.c \
OSDLocking_WinCEUM.c \
OSDGpio_expander.c
osd_pxa3xx.lib和osd_pxa3xx.pdb在E:\PB\COMMON\lib\ARMV4I\debug
和E:\PB\COMMON\lib\ARMV4I\retail两个目录下,打开osd_pxa3xx.lib也都是一堆二进制数字。
@Walzer
我查了,这个错误和C:\WINCE500\PLATFORM\COMMON\SRC\SOC\pxa3xx\OSD 目录文件没关系,出错是在Linking \WINCE500\PLATFORM\ZYLONITE_MHL\SRC\DRIVERS\Micco\ directory.时,打开WINCE500\PLATFORM\ZYLONITE_MHL\SRC\DRIVERS\Micco下的souces文件:参考移植前的文件,如果加上这两句:
TARGETLIB_OSD=$(_PLATCOMMONLIB)\$(_CPUINDPATH)\osd_pxa3xx.lib
TARGETLIBS= \
$(TARGETLIB_OSD)
build后报错就变成了:
;--------build.log文件最后------------
BUILD: [00:0000001175:PROGC ] Linking \WINCE500\PLATFORM\ZYLONITE_MHL\SRC\DRIVERS\Micco\ directory.
BUILD: [00:0000001176:PROG ] 'NMAKE.EXE -i -c BUILDMSG=Stop. LINKONLY=1 NOPASS0=1 MAKEDLL=1'
BUILD: [01:0000001177:INFO ] makefile.def: BUILDROOT is C:\WINCE500\PLATFORM\ZYLONITE_MHL
BUILD: [01:0000001178:INFO ] makefile.def: Including C:\WINCE500\PLATFORM\ZYLONITE_MHL\sources.cmn
BUILD: [01:0000001179:ERRORE] .\sources.(22) : U1033: syntax error : '$(TARGETLIB_OSD)' unexpected
BUILD: [01:0000001180:INFO ] Stop.
BUILD: [01:0000001181:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. LINKONLY=1 NOPASS0=1 MAKEDLL=1 failed - rc = 2
BUILD: [00:0000001182:PROGC ] Files Warnings Errors
BUILD: [00:0000001183:PROGC ] Midl 0 0 0
BUILD: [00:0000001184:PROGC ] Resource 0 0 0
BUILD: [00:0000001185:PROGC ] Message 0 0 0
BUILD: [00:0000001186:PROGC ] Precomp Header 0 0 0
BUILD: [00:0000001187:PROGC ] C/Cpp/Cxx 0 0 0
BUILD: [00:0000001188:PROGC ] Assembler 0 0 0
BUILD: [00:0000001189:PROGC ] Static Libraries 5 0 0
BUILD: [00:0000001190:PROGC ] Dll's 13 1 0
BUILD: [00:0000001191:PROGC ] Exe's 9 0 0
BUILD: [00:0000001192:PROGC ] Resx 0 0 0
BUILD: [00:0000001193:PROGC ] Csharp Targets 0 0 0
BUILD: [00:0000001194:PROGC ] Other 0 32 2
BUILD: [00:0000001195:PROGC ]
BUILD: [00:0000001196:PROGC ] Total 27 33 2
BUILD: [00:0000001197:PROGC ]
BUILD: [00:0000001198:PROGC ] 33 Warnings, 2 Errors
;-----build.eer文件-------
BUILD: [Thrd:Sequence:Type ] Message
BUILD: [01:0000001179:ERRORE] .\sources.(22) : U1033: syntax error : '$(TARGETLIB_OSD)' unexpected
BUILD: [01:0000001181:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. LINKONLY=1 NOPASS0=1 MAKEDLL=1 failed - rc = 2
不知道这里还和那个地方有关系?
厂商提供的编译好的nk.nb0下到板子上该有的功能一个也没少。
可是我按照厂商的说明书编译出来的东西,一开始出错,后来换了一个bsp编译没问题。可是要么启动不了,死在某个地方,要么启动了功能却没有实现,比如sd卡没发现,u盘没发现,usb鼠标没发现。
我用的是PB5.0的评估版,操作系统是盗版的win2000,和这些有关系吗?
我想实现 当鼠标进入某个特定区域 就播放一段语音 比如“你好,欢迎光临!” 怎么实现呢?
@Walzer
请问:我们得硬件是PXA300 系统WINCE5,现在有个很棘手得问题,就是我们得系统反应速度非常慢,特别是当系统启动到出现桌面图标,双击一个图标打开得速度非常慢(10~20s),查了WINCE 启动时得时钟是正常得(ACCR 得设置值)。
另外我们另一个项目和我们现在得wince方案一样,我们把我们项目得BootImage.nb0 和nk.bin 下载到另一个项目得板子上,出现桌面图标并双击图标打开得速度很快(1,2s)。
请问这和硬件得甚么部分有关系吗?
您好,想請問您pollux的開發板是在何處購買,我也想買一塊來玩玩,謝謝您~
大家好,,花了好多时间看了大家的留言,呵呵,,大多数看不懂,小妹初学windows ce,有个问题已经折腾好久了,大家帮帮忙:利用pb4.2建了一个emulator,build platform ,然后通过了connect,这时模拟器正常启动。可是当我导出相应的SDK并安装后,nk.cem打开模拟器是黑屏,evc也用不了。。怎么回事啊?
博主,您好!
我是一名新手,我用wince5.0编译一个新建的PB的时候,提示有下面的错误:
making: FATAL ERROR:Cannot open F:\新建文件夹\2222\Reldir\smdk2440a_ARMV4I_Relea\postproc\platform.bib
making: FATAL ERROR:Cannot open F:\新建文件夹\2222\Reldir\smdk2440a_ARMV4I_Relea\postproc\platform.bib
我试了好多遍,只建一个空的PB什么都不加也是那样,不用默认的目录也是那样,您可以帮我看看试什么原因吗?
我对这个问题困惑了很久,您能帮我一下吗,谢谢!
请问博主,我装完了WINCE Emulator 2.0 和Visaul network 了.
怎么才能把新的emulator 添加到Divece Emulator manager里呢?
我看了你们的讨论,说要先编绎SDK,再装SDK才能调出来,SDK要怎么来生成呢?
偶是每一次做这个,,,,都在摸索,请教一下..
ARM的模拟器是跑起来了,但是CEPC不知道怎么才能跑起来...
我自己弄了好久没有成功..
Deal All,
Could you tell me where I can download "Windows Embedded CE 6.0" ?
Thank you very much.
我先安装了visual studio 2008,接着安装wince6.0,但没有看到TOOL选项,安装完成后visual studio 2008里面没有发现platform builder.
不知道2008是不是也要像2005一样,装个sp1之类的.
我装了楼主说的这些, 但现在没法在VS2005中创建CE6 project。选择创建
new project => platform builder for ce 6.0 => select bsp => select design template => finish 然后又回到了platform builder for ce 6.0 那一步。 这个问题应该怎么解决
请教楼主:
=====================================================
3、在输入模拟器长宽的地方的确是有BUG,很不爽。我当时是不管它,直接输入自己想要的数值,而不管界面上显示出来的数字。我在最后那张截图里的SIZE是640*480的,远超你说的99限制了。
=====================================================
我没楼主那么幸运,我想生成一个640x480,或者480x272的SDK,按照楼主的方法,多次试验都不奏效。楼主现在对这个问题可有新的见解?多谢!:)
大家能否建一个QQ群,这样,交流起来也容易些。
可惜我的QQ不够资格。呵呵
这个玩艺可真不好玩。
摸索了近一个月了,总算跑起来了。
应用程序也可以模拟了。
但照这个速度,不知道要那年那月才能出点成果。
哎!
刚开始上手会痛苦一点,多加班吧.
等熟悉微软这套游戏规则后就轻松了.
目前我们正在 测试pxa310 wince6.0的安装,bsp文件编译以后我们得到了BootImage.nb0,下载到后开发板后,连接超级终端得到了如下信息:
Eboot Alive
*** OBM is running ***
-Flash Configured.
-Fuse Config from boot ROM: 0x9
-Loading OS Loader Image
ID: OLSO
Code: 7
Code: 8
-Verifying Checksums...
-XFer Control To OS Loader...
Eboot Alive
按下 “white space”键却得不到 eboot 的配置选项,我想向您请教一下,我们此时应该如何做。如何才能正确的下载wince 系统
博主你好
我用的是ce6.0+vs2005,用release编译后Attach Device能正常连接模拟器,也是导出sdk配置Emulator时输入长和宽的时候直接输入自己想要的640*480,安装导出的sdk后从Device Emulator Manager启动时提示屏幕宽度必须时介于64--800之间的偶数,请问这究竟是什么原因,应该怎么改正呢?谢谢!
请问博主,我定制的时候选了默认语言为简体中文,为啥模拟器启动后中文都变成方框了?
安装CE6 时出错
ToolsMsmCA(error):setup package issue or corecon corructed:CDeviceSDKInstallShim ADD/Remove failed.HR=0x80070005
我之前装了VS2005,还安装了VS2005 SP1(VS80SP1-KB926601-X86-ENU。EXE/VS80SP1-KB932232-X86-ENU-for vista.exe)
现在安装CE6时就出错了,安装进度停在Installing the Generic SDK处。请各位帮忙解决一下!
谢谢!!
--引用--------------------------------------------------
cici_zh: 安装CE6 时出错
ToolsMsmCA(error):setup package issue or corecon corructed:CDeviceSDKInstallShim ADD/Remove failed.HR=0x80070005
我之前装了VS2005,还安装了VS2005 SP1(VS80SP1-KB926601-X86-ENU。EXE/VS80SP1-KB932232-X86-ENU-for vista.exe)
现在安装CE6时就出错了,安装进度停在Installing the Generic SDK处。请各位帮忙解决一下!
谢谢!!
--------------------------------------------------------
我和这问兄台遇到的问题一样!
请各位帮助下下~~
请问楼主 我的cpu是AMD的 我下了他的bsp包 在wce5.0 上运行我的应用程序 速度很快 可我把这个用同样的方法用到wce6.0上是 我的应用程序就死机,我的应用程度是一个多线程来显示图片的项目,一个是定时器来触发线程,一个是按键来触发线程 我在WCE6.0 上我看了消息队列 定时器触发线程第二次 消息就被堵筛了 后面的消息还是一条一条的来 就是没有处理消息 就这样就死机了 请问我应该怎么修改 谢谢楼主了 小女子弄了好久了
@nifang
1. 同一款CPU和开发板,对ce5和ce6的BSP包是不同的,驱动接口那边改了不少。是否你需要一个CE6的BSP包?不过我感觉你这程序的问题和CE几可能没关系.
2. 我没太看懂"定时器触发线程第二次 消息就被堵塞了 后面的消息还是一条一条的来 就是没有处理消息"这句的意思.
3. 凭经验,我觉得你的问题应该是出在: 现在你有三个THREAD, 之间有哪些共享的资源, 是否会相互竞争导致死锁, 线程中是否需要加一下互斥体或信号量? 这种事情上最经常出现卡死.
请教楼主:我按照您说的步骤做了,但是安装SDK后,在仿真器管理中连接时提示出错,请问做SDK时要注意什么,谢谢
请教楼主:我按照您说的步骤做了,但是安装SDK后,在仿真器管理中连接时提示出错,请问做SDK时要注意什么,谢谢
连接失败,提示说,参数不正确,,真是郁郁呀。。
请问你这个模拟器能上网吗?
我自己定制的模拟器的SDK可以安装,访问,就是不能上网,同步...
请问该怎么做?
我刚买了一个window ce5为什么用一下就死机呢
系统已经搞好了
为么呢??????????????????
你好,你图片上的OS可以发一个给我吗?就是放入模拟器的Bin文件
急需,谢谢!
邮箱11538070@qq.com
这个问题好多人遇到,楼主你也没有回复,能不能告诉下解决的方法,解决不了,真的很郁闷,试了好多次了,就是到最后的时候有错误安装不成功。