77

帖子

0

TA的资源

一粒金砂(初级)

21
 
感谢兄弟的帮助,邮件已收到,我试一下,稍后回复你
此帖出自WindowsCE论坛
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

22
 
晕死,对比了一下,兄弟的源码与我BSP中的是一模一样的,呵呵

我这现在的问题是插入USB线,中断没有触发
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

23
 
fuction client的组件和mass storage的组件我都试过了,注册表也做了相应的修改

郁闷,都是中断不触发,至少中断应该触发才是啊,我一会再多输出些调试信息看看吧

这份驱动中没有看到任何使能ep中断的代码,xuefeng_baggio兄弟的驱动在自己的BPS中好使?
此帖出自WindowsCE论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

24
 
我问你的bsp是动态中断申请还是静态??你要好好看看!我的肯定是行的!我移植的是2440官方的bsp!
此帖出自WindowsCE论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

25
 
动态和静态结合的,像网卡声音的驱动就是静态申请的,USBD是动态的,我用4.2移植的驱动已经跑通了
此帖出自WindowsCE论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

26
 
不管动态还是静态,OEMInterruptHandle里面应该都能看到USBD被触发的,我现在就是OEMInterruptHandle函数里都没有反应

麻烦把你注册表的设置也发给我可以吗?谢谢
此帖出自WindowsCE论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

27
 
Active下也有UFN1 和COM5了,就是插上USB线没有中断触发,这是为什么呢
此帖出自WindowsCE论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

28
 
Function驱动的ISTMain函数里使能了EP0的中断

但是我系统启动没插USB线中断就触发了两次,之后再插上USB线中断也不来了

我再看看HandleUSBEvent里究竟走到哪去了,上午把USB Client和Controller整个看了一遍,大概知道驱动是什么结构了

xuefeng_baggio兄弟怎么不来了?帮人帮到底吧,呵,谢谢啦
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

29
 
UFN_Init
pContext->pUfnBus = new CUfnBus(pszContext, pContext);
pContext->pUfnBus->Init
//这里不知道总线驱动如何调用的BusIoControl
"BusIoctl"=dword:2a0048
CUfnBus::PostInit
dwRet = GetDefaultClientName(szClientName, dim(szClientName));
dwRet = CreateChild(szClientName, &pDevice);
CUfnBusDevice *pDevice = new CUfnBusDevice
pDevice->Init
DeviceFolder::Init()
//编译SerialUSBFn的时候使用了-DUSE_NEW_SERIAL_MODEL定义
//SerialUSBFn导出了一堆COM_XXX函数
源码Cserpdd.cpp (e:\ce60\public\common\oak\drivers\serial\serpddcm)
COM_INIT
SerInit
CSerialPDD * CreateSerialObject
pSerialPDD = new USBSerialFn(lpActivePath,pMdd, pHwObj);
pSerialPDD->Init()
CUsbFn::Init()
UfnInitializeInterface
fSuccess = BusChildIoControl(hBusAccess, IOCTL_UFN_GET_CLIENT_DATA_EX, &ucd, sizeof(ucd));
GetClientFunctions
UfnMdd_RegisterDevice
pdescClient = new CDescriptors;
CDescriptors::RegisterDevice
dwRet = pContext->PddInfo.pfnRegisterDevice(
UfnPdd_RegisterDevice
fErr = ActivateChild(m_szClientBusName);


UFN_MDD_INTERFACE_INFO MddInterfaceInfo = {
        UFN_PDD_INTERFACE_VERSION, &UfnMdd_Notify
    };

dwErr = UfnPdd_Init(pszContext, pContext, &MddInterfaceInfo, &pContext->PddInfo);

在CUsbFn::Init()已经调用
StartUSBFunction
******dwRet = m_pUfnFuncs->lpStart(m_hDevice, DeviceNotifyStub, this,  &m_hDefaultPipe);
UfnMdd_Start
dwRet = pContext->PddInfo.pfnStart(pContext->PddInfo.pvPddContext);
UfnPdd_Start
启动IST_MAIN

初始化之后插入USB线之前,只有IST_MAIN中使能了SusPend Mode 和 EP0的中断
系统启动,插不插USB线USB_SUSPEND_INTR都会触发两次
插入USB线,中断就是没反应,ep0中断不触发

HandleUSBEvent
UfnMdd_Notify
UFN_MSG_SETUP_PACKET:
UFN_MSG_PREPROCESSED_SETUP_PACKET:
ProcessRequest

//整个USBFN代码里只有ProcessSetConfiguration函数发出了UFN_MSG_CONFIGURED的通知
//而pdd的driver里没有发现设置udr为USB_REQUEST_SET_CONFIGURATION的位置
//不清楚如何才能触发CableAttached
//如果有通知了,应该走下面
USB_REQUEST_SET_CONFIGURATION
ProcessSetConfiguration
SendDeviceNotification(pContext->lpDeviceNotify, pContext->pvDeviceNotifyParameter, dwMsg, dwParam);
DeviceNotifyStub
CUsbFn::DeviceNotify
UFN_MSG_CONFIGURED
CableAttached
OpenBulkIn
OpenBulkOut
OpenInterruptIn
CUsbFuncPipe::OpenPipe
m_pUfnFuncs->lpOpenPipe
UfnMdd_OpenPipe  pPipe = FindPipe(pContext, dwEndpointAddress);
dwRet = pPipe->Open(pContext->Speed, NULL);
CPipeBase::Open
UfnPdd_InitEndpoint
此帖出自WindowsCE论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

30
 
快沉底了,顶起来,大家帮帮忙吧
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

31
 
现在是系统启动,插不插USB线USB_SUSPEND_INTR都会触发两次
启动之后插入USB线,中断就是没任何反应,ep0中断不触发
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

32
 
不好意思!最近忙自己的驱动没时间看!你问题解决了吗?现在什么问题呢??
此帖出自WindowsCE论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

33
 
邦顶一下.
此帖出自WindowsCE论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

34
 
现在还是系统启动,插不插USB线USB_SUSPEND_INTR都会触发两次
启动之后插入USB线,中断就是没任何反应,ep0中断不触发

昨天我在ISTMain里面屏蔽了USB_SUSPEND_INTR模式的中断使能
结果系统启动时插不插USB线都仍然会自动触发一次中断,此时返回的
BYTE bEpIrqStat = ReadReg(pContext, EP_INT_REG_OFFSET);
BYTE bUSBBusIrqStat = ReadReg(pContext, USB_INT_REG_OFFSET);
bEpIrqStat和bUSBBusIrqStat 都是0 ,我就纳闷了,为啥中断来了它俩还都是0呢

而且是系统启动还没插usb线就来中断了,启动之后插入usb线反而不来中断

可把我郁闷坏了,不知道从哪下手了,寄存器我用应用程序读取了,配置也都是正确的
此帖出自WindowsCE论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

35
 
pVMem = (BYTE *)pVMem;
pHWHead->pUSBCtrlAddr=(volatile struct udcreg *)((BYTE *)pVMem + 0x140); // offset

bMapReturn = VirtualCopy( pVMem+PAGE_SIZE,
                (LPVOID)IOP_BASE,
                PAGE_SIZE,
                PAGE_READWRITE | PAGE_NOCACHE );
if (!bMapReturn)
{
        err = GetLastError();
        DEBUGMSG(1, (TEXT("Virtual Copy: IOP SPACE FAILED\r\n")));
}

pHWHead->pIrqCtrlAddr=(volatile IOPreg *)(pVMem+PAGE_SIZE);

bMapReturn = VirtualCopy( pVMem+PAGE_SIZE,
                          (LPVOID)CLKPWR_BASE,
                          PAGE_SIZE,
                          PAGE_READWRITE | PAGE_NOCACHE );
if (!bMapReturn)
{
        err = GetLastError();
        DEBUGMSG(1, (TEXT("Virtual Copy: CLKPWR SPACE FAILED\r\n")));
}

pHWHead->pCLKPWR = (volatile CLKPWRreg *)(pVMem+PAGE_SIZE);

4.2的usbdevice驱动力的这段代码是不是写得有问题啊,我这两份BSP都是这么写的,问题调了好几天了,还是没搞定
此帖出自WindowsCE论坛
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

36
 
问题解决了,BSP在一个很隐蔽的地方改动了MISCCR寄存器的配置,导致了一系列的奇怪问题

如果同步中发生619错误,把下面那两项加上就行了
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class]
   "idVendor"=dword:0547
   "idProduct"=dword:2720
或者改pc端的inf文件

连不上也有可能是设备方的时间不对,pc端activesync又选择了同步时间

结贴

此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表