WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(14)-移植CS8900A网卡NDIS Miniport驱动

还有一个没有实现的重要驱动就是网卡驱动了,在eboot里有一段网卡的处理程序,实际上是一些网卡的读写函数,用于PB下载和KITL的,而在CE最终运行时如果我们需要进行网络通信,那就需要NDIS架构的网络驱动.
在WinCE中,通过NDIS(The Network Driver Interface Specification),WinCE系统和网卡及网络协议进行交互。NDIS提供了一个完全的网络驱动的抽象层,目前WinCE支持NDIS5.1,其中包括对RNDIS,NDISWAN,Token Ring等的支持。在WinCE中,整个网络架构体系如图:

更多关于NDIS的介绍可以参考PB的帮助文档.这里我们只要知道我们的网卡驱动是遵循NDIS架构的,这样应用程序的网络通信才能实现.
在WinCE中支持三种类型的网络驱动:Miniport driver,Intermediate driver和Protocol driver,我们要实现的就是硬件网卡的驱动,也就是Miniport driver.开发Miniport Driver,在底层调用NDIS的接口访问底层硬件,在上层提供接口函数供高层协议调用进行网卡配置或者数据通信.
网上有很多基于2410/2440的CS8900的NDIS miniport driver,我们可以在此基础上修改移植到自己的平台上. 我们先介绍下移植所需要的工作,如注册表,中断映射,source文件设置等.
1.代码文件和source文件
驱动共有4个文件:
cs8900.c:直接操作网卡的函数
interrupt.c:中断处理
miniport.c:NDIS miniport驱动接口实现
wince.c:驱动dll入口

souce文件:

2.BSPIntrInit
GEC2410的网卡中断引脚连接在IRQ_EINT9上,因此在BSPIntrInit中进行相应引脚的初始化,这部分代码SMDK2410中已经实现,我们只需要将IRQ_EINT9与SYSINTR_ETHERNET映射.代码如下:

其中SYSINTR_ETHERNET是逻辑中断号,我们需要在Bsp_cfg中定义:
#define SYSINTR_ETHERNET  (SYSINTR_FIRMWARE+6) //0x16

其他的中断初始化及设置BSP都已经设置好,无需修改,具体实现在/WINCE500/PLATFORM/COMMON/SRC/ARM/SAMSUNG/S3C2410X/INTR/intr.c

3.注册表设置
首先使能BSP_NOCS8900(这里在GEC2410.bat设置set BSP_NOCS8900=0)
IF BSP_NOCS8900 !
; HIVE BOOT SECTION
;================= CS8900 =================
[HKEY_LOCAL_MACHINE/Drivers/CS8900]
   "Dll"="ndis.dll"
   "Prefix"="NDS"
   "Miniport"="CS8900"

[HKEY_LOCAL_MACHINE/Comm/CS8900]
   "DisplayName"="CS8900"
   "Group"="NDIS"
   "ImagePath"="CS8900.dll"

[HKEY_LOCAL_MACHINE/Comm/CS8900/Linkage]
   "Route"=multi_sz:"CS89001"

[HKEY_LOCAL_MACHINE/Comm/CS89001]
   "DisplayName"="CS8900"
   "Group"="NDIS"
   "ImagePath"="CS8900.dll"

[HKEY_LOCAL_MACHINE/Comm/CS89001/Parms]
   "BusNumber"=dword:0
   "BusType"=dword:0
   "Sysintr"=dword:16 ;对应于SYSINTR_ETHERNET
   "DuplexMode"=dword:1
   "IoBaseAddress"=dword:A7000300
   "Transceiver"=dword:3
   "CardType"=dword:1

[HKEY_LOCAL_MACHINE/Comm/CS89001/Parms/TcpIp]
   ;这里使用静态IP的设置
   "EnableDHCP"=dword:0
   "DefaultGateway"="192.168.1.1"
   "LLInterface"=""
   "UseZeroBroadcast"=dword:0
   "IpAddress"="192.168.1.10"
   "Subnetmask"="255.255.255.0"
   "DNS"="192.168.1.1"

[HKEY_LOCAL_MACHINE/Comm/Tcpip/Linkage]
   "Bind"="CS89001"
;============= End of CS8900 =================
; END HIVE BOOT SECTION
ENDIF BSP_NOCS8900 !
有了这些设置在控制面板的网络配置里就可以看到CS89001的网卡图标了,就可以像在windows里一样进行网络配置了.同时用HIVE标记,这样所做的配置修改就可以保存了.

4.添加组件
NDIS组件,TCPIP协议栈,当然LAN的支持也是必须的,同时要去除KITL的支持,否则会发生冲突.

下一篇来详细分析下这个CS8900 NDIS Miniport driver

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值