Wince5 2440 加载sychip sdio_wifi驱动问题

如题,没有该驱动的源代码,只有厂家的几个.dll文件及.reg文件,目的是要加入内核。修改很简单,就是直接include.reg文件和修改platform.bib文件。

Sysgen,问题出现了:Error: Can't find import 2696 in coredll.dll,值得注意的是这个问题是出现在 makeimage的时候,从字面意义上看,是没有找到coredll中的一个函数实现。Google一把,还确实有诸多前辈出现过类似的问题,也都给出了一些解决该类问题的方法与步骤。
该问题的一般解决步骤如下:
(1)         定位到 \WINCE500\PUBLIC\COMMON\OAK\LIB\ARMV4I\RETAIL目录,我这里是三星的2440,所以是ARMV4I的。
(2)         在上述目录下有一个 coredll.def文件,用编辑工具打开它。该文件中定义的是开放给该类cpu架构的所有API,格式为:API名 @API号,例如:MessageBoxW @858。至于这个号是如何使用的,网络上有一篇文章讲的很好,可以google一下,具体的地址忘记了。
(3)         coredll.def文件查找那个没有找到而make出错的数字,这里是2696。
(4)         如果找到,就找出这个API的定义是在哪个CESYSGEN变量下,把这个变量对应的组件加入到OS工程中去,再sysgen。这样问题就可以解决了。在coredll.def文件中,API的列出是通过CESYSGEN变量分类的,例如:
; @CESYSGEN IF FILESYS_FSACL
   CeRevertToSelf=xxx_CeRevertToSelf @1926
   CeAccessCheck @1927
   CePrivilegeCheck @1928
   CeCreateTokenFromAccount=xxx_CeCreateTokenFromAccount @1929
   CeConvertStrToSD=xxx_CeCvtStrToSD @1930
   CeConvertSDToStr=xxx_CeCvtSDToStr @1931
   CeCreateToken=xxx_CeCreateToken @1932
   CeImpersonateToken=xxx_CeImpersonateToken @1933
   CeDuplicateToken=xxx_CeDuplicateToken @1934
   CeImpersonateCurrentProcess=xxx_CeImpersonateCurrentProcess @1935
; @CESYSGEN ENDIF
(5)         如果找不到,那么只能说恭喜你了,这个.dll或者别的文件你在该版本的wince系统上是用不了的了。
 
这次我就是那幸运的一个, coredll.def文件中没有找到2696。用vc的depends工具打开coredll.dll文件,如下图所示:

可以看到 ordinal那一列就是API号。不过这里最大的号是2508。
 
     从种种迹象上来看这个 2696应该是wince的更高版本中支持的,为此跑到wince6的coredll.def文件下,果然找到了这个2696。那么结论就是这个驱动的.dll文件是wince6版本的了。从以前的工程中拷贝一个过来,果然,至少makeimage通过了。

你可能感兴趣的:(职场,休闲,驱动加载,sychip,Wince5,sdio_wifi)