技术开发 频道

Windows嵌入式疑难问题解答之二

问:现在项目中需要获得真机的手机型号,可是找遍了API都没找到能获得手机型号的API。上网搜索也没得到相关的解决办法。但感觉这个功能该是有API支持的。
答:如果是山寨机可能会不行,如果OME厂商没有按约束规定写,你也不能获取到. 如果HKEY_LOCAL_MACHINE\Security\Internet Explorer\User Agent\CustomBase和手机中。设置—系统—设备信息-“特性识别”是一致的,你通过过注册表就可以读出来。

问:条件有限,只能在一台机子上装CE5和CE6的开发环境。并且由于种种原因,已经装好了CE6,此时再装CE5会不会有什么问题? 如果真的会有问题的话,怎么做可以避免掉这些问题呢?
答:CE5 和 CE6 有很大区别建议不要装在一起,可以用虚拟机来安装两个不同的版本。如果一定要装在同一台机器上的话,也是可以的。CE5开发工具使用的是Platform Builder,而CE6则是整合在Visual Studio 2005开发环境下的,注意,2008不行。安装的顺序:
1.安装CE5,Platform Builder 5.0
2.安装Visual Studio 2005
3.安装Visual Studio 2005 Service Pack 1
4.安装CE6,Platform Builder 6.0
5.安装CE6的SP1,Platform Builder 6.0 Service Pack 1
6.VS2005 Update for Vista
安装完成后可能会出现CE6和CE5在Platform Builder的Connectivity Options上的冲突问题,大家可以参考我博客中的文章来解决这个问题:http://lzg-ad.blog.sohu.com/118092446.html

问:我的用户态驱动和内核态ISR要对I/O设备协同操作才能完成, 但我的IO设备是这样工作的:
IO设备只有一个地址,内部有16个寄存器,
要对设备中的寄存器读写时, 要先往IO 端口中写寄存器号,再在这个端口读写,(有点像对COMS的操作)
这就要保证一个读写操作要两次IO,并且一定要成对出现,就是这两个操作要是原子的,不可拆分;
如果IST正刚往端口中写了寄存器号,还没来得及写数据,这时中断来了,ISR也要操作设备,那不是乱了,
这种问题怎么解决呢?有没有什么信号量、互斥量什么的可以用?
答:看看ISR 和 IST的协助方式,就知道如何解决这种问题,在网上也有人已经回答了这个问题:
1. IST 在操作时, 通常还没 call InterruptDone(dwSysIntr);, 故 ISR 不会产生中断, 就没有这个问题了.
2. ISR 先把 Index Register 读出後保存後再修改, 离开前再改回原值.
3. 将 IST 要读的值全部放在 ISR 内读完, 再用 Share Memory 的方式, 送给 IST.
 

0
相关文章