由于项目需要,最近研究了下S3C2440裸机读写U盘的裸机驱动开发,
http://lancelot.blog.51cto.com/393579/328233帖子给了我很大的启发,同时
http://bbs.21ic.com/icview-139413-1-1.html提供的USB HOST源码也非常有帮助,在不开DCache的情况下确实可以正常读写U盘,但一旦打开DCache后程序就会死掉,原因是OCHI协议里面规定HCCA必须定义到非缓存区域,解决办法是利用ADS的分散加载功能,把USB的程序加载到非缓存区,其他的程序则加载到缓存区,这样就可以正常运行USB的程序了,但由于本人水平有限,研究了下分散加载,最终还是没有搞定,我也很纳闷,2440的Init.s执行完后,跳到Main函数,一切都很正常,但GUI_Init()一执行就死机,跟踪了半天也没发现原因,后来我想到了一个折中的办法,由于我只是间隔地对U盘进行读写,主要是保存一些参数,因此访问U盘的时候关闭DCache,访问完成后再打开DCache,这样USB的程序就可以和其他的程序正常结合了,LCD刷屏的速度也得到了满足,当然这肯定不是问题的解决之道,以后有时间再回来研究下ADS的分散加载功能,哪位对分散加载比较熟悉的可以联系我,请教啊!
基于OHCI的ARM平台下USB HOST裸机驱动开发
最新推荐文章于 2021-05-14 08:28:52 发布