摘要:我的系统GPS最低层提供的端口是COM5,GPS Provider提供的端口是COM6。这几天发一个问题:当开着某一个程序反复待机,就会出现死机。最后定位到是该程序启动了GPS引起的,它打开的COM5,如果使用COM6则没有问题。虽然死机问题已经解决,然不大清楚到底是什么原因引起的。不知其它人有没有遇到过类似的情况?
阅读全文
摘要:一般来说CE的BOOT问题可以从如下方面入手:1,如果能调到调到调试串口的初始化函数,说明内存的配置是正确的(可以在该函数中写个死循环来验证),当然也能说明一个最基本的问题,kernel的入口 startup的实现是对的,nk.exe的加载地址也是对的。2,如果OEMInit函数能调到,基本的初始化也能调到,一般来说sp=fffffc(具体数记不到了)都能调到。3,初次做WINCE,ADS用的又比较熟的人需要注意一个问题:WINCE成功启动以后会不停的产生软中断,所以不时进入SWI是正确的,千万不要认为有问题。4,sp地址能正确打印但仍不能启动时,需要查一下RAM与NK是否有重合。5,gwes
阅读全文
摘要:近日,在做一款产品时,因为对开机速度的要求很高,我们将系统剪裁到最小,只剩下kernel,filesys,device和需要的驱动等。但我们使用的一个DLL链接了PostMessage,这个函数应该在GWES存在时才会有。所以该DLL不能被加载。因为该DLL是第三方提供的,没有源码,我们无法去掉对PostMessage的调用。厂家也不愿意修改。所以尝试直接编辑DLL。 首先,用IDA分析,找到使用PostMessage(编号865)的内存位置。但这段内存在IDA中不可读取,更别说编辑了。所以用uledit打开该DLL文件。找到对应的地址后,发现DLL用一段内存在存放import,整个impo.
阅读全文
摘要:因之前的自动编译脚本不能实现CAB包的编译,所以系统中使用的CAB包都是工程师自己编译好再上传的。最终系统中使用不是自动编译过程生成的CAB包,CAB包的质量及正确性无法保证,主要是源代码,因CAB包不参加编译,发生过不至一次源代码与CAB包不一致,甚至源代码根本无法编译的情况。所以才痛下决心要将CAB包加入到自动代码编译过程中。以下是遇到的一些问题及注意事项。 1, 生成CAB包的工具以WINCE Cab manger最好用,但它不支持命令行模式。我这里采用WINCE自带的工具cabwizz。在public目录下搜索即可找到。它包含一个EXE和一个DDF文件。cabwizz的使用方法比较简.
阅读全文