usb device移植遇到的问题

1、加载usb device驱动模块和zero模块, 将板子的micro-usb口,用usb线连接到PC机上,PC机无反应,不进行设备的枚举过程
原因:1)板子的PHY和时钟没初始化好
2)板子的usb device模块的硬件有问题
注意: 如果是外部时钟没初始化好,可能会造成寄存器读写不了,一读写就程序崩溃


2、中断中调用malloc申请内存,导致系统崩溃
原 因: malloc中有信号pend函数,有等待过程
解决方法: 使用中断线程加二进制通知信号量处理, 中断线程需要死循环


3、中断线程删除时,导致的程序崩溃问题
原 因: 线程没完全退出,线程中有资源没释放
解决方法: 在代码中,定义一个全局变量,并赋值为0,在删除该线程之前,先将全局变量赋值为1,然后post一个信号量(中断线程中,在死循环里首先判断改全局变量是否为1,若为1就break退出死循环),最后将中断线程合并(API_ThreadJoin)


4、枚举时,数据出错
原 因: 上层分配的是带有cache的堆内存,传输到底层进行DMA传输,出现cache不命中
解决方法:在对两者的操作时,增加cache的回写和无效机制
DMA_TO_DEVICE : API_CacheFlush使指定页面回写
DMA_FROM_DEVICE:API_CacheInvalidate使指定的页面无效(访问不命中)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值