您的位置:首页 > 其它

CS8900A网卡驱动移植

2009-11-09 16:08 260 查看
使用三星的wince5.0 BSP其不带支持CS8900的驱动,于是乎……得自己动手移植了。
没有原驱动程序怎么办?...这个是非常值得深思的问题....小菜,我也没有办法帮你解决!不过可

以解释为google吧,找找linux平台下面的驱动。我们公司之前就有2440的CS8900驱动,所以我就直接

拿来主义,用呗。
找到源代码,那么将源代码放在bsp包的driver目录下面,建个文件夹叫"CS8900"吧,之后就把源代

码仍进去(不用客气,有多粗暴就粗暴,反正代码不是我写的^_^题外话)
之后就参考流驱动的方法建立“MAKEFILE”和“SOURCES”文件以及def文件(就叫做"cs8900.def")

还有driver下的dir文件。dir文件直接在文件底部加“CS8900 /”就可以了(多了一个文件夹要编译

嘛!至少也得通知一下人家!)
1、先讲一下“MAKEFILE”可以从哪里得到。(高手别鄙视我,我不知道MAKEFIEL如何写但我知道

makefile这个文件的大概作用是用于编译文件的。既然,不知道怎么写,那就还是拿来主义吧!)参

考一下bsp包driver下的附带的驱动,看看每个驱动的“MAKEFILE”文件是不是一样???高兴了吧,

暗喜了吧。于是乎,又是被我从一个文件夹到另一个文件复制过来。看来拿来主义有时候还是挺好的


2、“MAKEFILE”文件,弄完了。那就弄“SOURCES”文件吧。这个也可以参考其他的驱动,但不能够

完全招搬,必须有所修改。大家可以去GOOGLE一下,搜索一下一些对SOURCES文件介绍的文章。这个

我就不讲了(汗!能力有限,没法讲。)贴自己程序的代码吧!
!if "$(BSP_NOCS8900)" == "1"
SKIPBUILD=1
!endif
TARGETNAME=cs8900
RELEASETYPE=PLATFORM
TARGETTYPE=DYNLINK
DLLENTRY=DllEntry
###MSC_OPTIMIZATION=/Ox /Fc
TARGETLIBS= /
$(_PROJECTROOT)/cesysgen/sdk/lib/$(_CPUINDPATH)/ndis.lib /
$(_PROJECTROOT)/cesysgen/sdk/lib/$(_CPUINDPATH)/ntcompat.lib /
$(_PROJECTROOT)/cesysgen/sdk/lib/$(_CPUINDPATH)/coredll.lib /
$(_PROJECTROOT)/cesysgen/oak/lib/$(_CPUINDPATH)/ceddk.lib /
CDEFINES=$(CDEFINES) -DNDIS_MINIPORT_DRIVER -DCS8900
INCLUDES=$(_TARGETPLATROOT)/src/inc;
SOURCES= miniport.c/
interrup.c/
cs8900.c/
wince.c
3、接下来就是cs8900.def文件了。弄个dll文件库的人应该知道def文件的作用。我感性地对def文件

的理解是,“开放关口跟其他国家贸易”,留给其他文件的接口。
LIBRARY CS8900
EXPORTS DriverEntry
4、接下来还有一点是修改bsp下面的.bat文件。这个家伙很关键,弄了我好命苦。(咋是小菜,以前

编译一个简单的流驱动的时候没有修改过.bat文件,dll照样能够编译成功!可是这次,我没有修

改.bat结果是:编译通过,却没有生成.obj文件!没有obj文件,怎么link成dll或者exe呢!)想啊想

找呀找,唉原来在就编译的时候有一个地方地修改一下。在smdk2416.bat文件下,有这么一句“set

BSP_NOCS8900=1”莫非就是这个在搞鬼。原来真是这样。若将"set BSP_NOCS8900=1"改成"set

BSP_NOCS8900="就表示有CS8900的驱动。.....好郁闷,果然嫌自己菜!
似乎,胜利就在眼前。于是乎,我直接sysgen一下。结果发现,编译有error!郁闷,估计应该是

CS8900的驱动的问题(怀疑中...)!有怀疑那要找证据证明吧吧。于是,在pb中找到cs8900这个目录

,然后编译一下。果然出来了。他保inc/bsp.h打不开oal.h文件!
找到bsp.h看他里面卖的是什么东西,果然有一行是#include "oal.h"。于是,我再搜索一下inc/下面

的文件看看是否存在oal.h文件,果然.............没有.....真TMD的郁闷!又得找文件了.
搜索一下以前的带有cs8900的bsp。好在里面有oal.h这个文件。不如,我这个小菜要死了.
毫不犹豫地拿来主义,顺便看看oal.h里面卖的是什么!原来里面只是包含了其他的.h文件:
#include "oal_args.h"
#include "oal_cache.h"
#include "oal_memory.h"
#include "oal_io.h"
#include "oal_ethdrv.h"
#include "oal_flash.h"
#include "oal_ilt.h"
#include "oal_intr.h"
#include "oal_ioctl.h"
#include "oal_kitl.h"
#include "oal_nkxp.h"
#include "oal_misc.h"
#include "oal_log.h"
#include "oal_pci.h"
#include "oal_pcmcia.h"
#include "oal_power.h"
#include "oal_profiler.h"
#include "oal_rtc.h"
#include "oal_timer.h"
#include "oal_perreg.h"
于是在编译一下,oal.h打不开args.h文件。有点bs bsp提供商,怎么自己的bsp.h要调用oal.h又不

提供oal.h文件以及oal.h调用的其他文件!于是还是找以前的工程,一口气将其全部找全,再复制进

去.重新单独编译一下cs8900这个目录!发现成功了生成了cs8900.dll文件!

当然接下来就是讲cs8900.dll加入到.bib下面,这样应该就ok了.
小菜,没有办法讲地很细,多数是废话!请高手勿笑!o(∩_∩)o.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: