vxworks usb异常

报异常的函数属于 memAlignedBlockSplit

问题应该是内存分配问题  

尝试去hcd里面把cache malloc 分配大点,不能频繁的malloc 和 free

原因在于:

submit Irp 的时候会用malloc,然后就一堆碎片

这个1.1的自己写的协议栈还好,2.0的那个usbTransUnit 那两个.c估计也有一样的问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的VxWorks USB 2.0驱动程序的示例代码: ```c #include <vxWorks.h> #include <usb/usbPlatform.h> #include <usb/usbdLib.h> #include <usb/usbdLib.ph> #include <usb/usbListLib.h> #include <usb/usbListLib.ph> #define USB_VENDOR_ID 0x12AB #define USB_PRODUCT_ID 0x1234 LOCAL STATUS myUsbAttachCallback (pVOID arg, USBD_NODE_ID nodeId, UINT16 attachAction) { switch (attachAction) { case USB_EVENT_ATTACH: printf("USB device attached\n"); break; case USB_EVENT_REMOVE: printf("USB device removed\n"); break; default: printf("Unknown USB event\n"); break; } return OK; } STATUS myUsbInit (void) { USBD_NODE_ID nodeId; USBD_CLIENT_HANDLE clientHandle; /* Initialize the USB stack */ if (usbdInitialize () != OK) { printf("Failed to initialize USB stack\n"); return ERROR; } /* Register our device */ if (usbdClientRegister ("My USB Device", &clientHandle) != OK) { printf("Failed to register USB client\n"); return ERROR; } /* Attach our device */ if (usbdDynamicAttach (clientHandle, USB_VENDOR_ID, USB_PRODUCT_ID, 0, 0, 0, myUsbAttachCallback, NULL, &nodeId) != OK) { printf("Failed to attach USB device\n"); return ERROR; } return OK; } ``` 在这个示例中,我们首先包含了VxWorks USB 2.0驱动程序所需的头文件。然后定义了一些常量,如USB厂商ID和产品ID。接下来,我们定义了一个回调函数`myUsbAttachCallback`,它在USB设备被连接或断开时被调用。最后,我们定义了一个初始化函数`myUsbInit`,它初始化USB堆栈、注册USB客户端和连接USB设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值