RNDIS项目手记

http://www.cnblogs.com/nasiry/archive/2004/09/17/44108.html

原来的驱动的USBDevice 配置状态
END POINT
1.EP0控制
 MAX PACKET SIZE-8BYTE
 AUTO CLEAR
2.EP1控制
 MAX PACKET SIZE-64BYTE
 MODE = IN;
 TRANSMODE =BULK
3.EP4控制
 MAX PACKET SIZE-64BYTE
 MODE = OUT
 TRANSMODE =BULK
 TRANSFER COUNTER = BUFFER SIZE
 UNIT CONUTER = 1BYTE
 DMA WRITE (OUT)
 ENABLE DMA MODE
 DISABLE DEMAND MODE
 DMA READ DISABLE(IN)

4.EP3.EP2没有使用

DMA3配置
 1.使用DMA3做bulk传输
 2.源APB(见usb DEVICE总线连接方式) fix模式  源地址为EP4的物理地址
 3.目标AHB(内存),increase模式 目的地址直接使用全局驱动保留区中DMA3缓冲区
 4.协议:handshake mode,request from APB,current terminal count enable,no burst,single service,source =USBD,Hardware source,no_autoreload,byte transfer,Current terminal count
拟定配置
1.EP0控制
 MAX packet size = 8
 autolclear   enabled
2.EP1数据输出
 MAX packet size = 64byte
 mode =in
 transmode = bulk
 interrupt =yes
 DMA       =No
3.EP2中断控制(输出)
 max packet size =sizeof(INTERRUPT_DATA)
 mode =in
 transmode =interrupt
 interrupt =No
4.EP4数据输入
 max packet size =64byte
 mode =out
 transmode = bulk
 DMA =disabled
 interrupt =yes

调试编译环境

使用WindowsCE提供的编译环境

将项目加入bootload的代码中执行,以调试。

需要对eboot做修改

1.增加从0x0到0x0的映射
2.开启eboot的中断
3.eboot的自举


原定使用0x0到0x0的映射,由于编译器自动占用image的最前端4k字节,所以不能直接使用0x0安装中断向量。改为使用0x3000 0000映射到0x0从内存装载中断向量。

问题1。
使用了mdd后由于mdd使用了内核函数NKCreateStaticMapping(定义在PRIVATE\WINCEOS\COREOS\NK\KERNEL\ARM\mdarm.c下),而eboot定义了很多与内核函数重名的函数,由此使得eboot不能直接使用nk.lib参与链接,该函数需要另外实现。PCIGetBusDataByOffset由于本身不使用该函数,直接去掉mdd中对该函数的调用。  


你可能感兴趣的:(USB_网络)