我的系统是用在仪表显示方面,驱动7寸数字屏,需要很多GUI画面,而这些画面都是美工整幅画好的,开始用wince系统,但是在切换整幅图片时,刷新速度偏慢,达不到客户的要求,所以就干脆裸奔。
系统软件配置:
ucOS+ucGUI+Fat,并且需要播放SD卡和U盘的MP3功能,当做USB device时,需要配置成60M U盘,方便更换美工图片。
USB HOST用上面的代码能够读写U盘,但是不能开mmu,如果不开mmu,运行速度大打折扣,就连刷屏的速度都没有办法达到要求,也是整了几天都没有眉目,所以看看有没有高手做过这些,不过后来又研究了2天,发现只要USB HOST的RO RW ZI放在NCNB区就能够正确访问U盘,于是我用分散加载方式,将USB HOST功能程序加载到SDRAM单独一个区域运行就OK了,也能够正确读写U盘,我的文件系统用的是开源的FATFS,发现读写U盘速度相当慢,只有几十KBytes/S,怎么播放U盘的MP3呀,我的MP3也是用软件解码方式工作,所以CPU累的半死,简直没有办法播放,开始查找原因,先查找USB HOST底层驱动,发现单独读U盘的一个扇区是在40ms左右,但是如果连续读128个扇区,只要106ms,终于看到希望了,证明底层驱动没有问题哟,基本上可以达到600KBytes/S,足够可以播放MP3了,于是想问题应该出在文件系统上了,但是FATFS是开源里面写的很好的一个文件系统,不至于这么差吧,再仔细读FATFS的读文件函数,发现它是按照一个族来读扇区数的,而我的U盘一个族只有8个扇区,这样就是说当我读超个8个扇区文件数据时,它就只能8个扇区分开读了,根据USB HOST底层驱动特性,需要一次性读的扇区数越多越能体现出高速,于是修改它的读文件算法,保证只要是连续的族,就可以一次性读更多的扇区,我的一次性最大扇区数为128,目的是和windows兼容,这样修改了发现读文件果然快,可以达到500KBytes/S,播放MP3也好流畅。
USB device,也是郁闷了2天,现象和上面你们的一样,插上USB线,USB中断了一下就不中断了,老是不能做枚举动作,实在查不出什么原因啦,干脆就直接把网上下载的umon里面USB device程序全部考进去,发现也不行,这就奇怪了,后来琢磨可能跟移植的ucOS有关系,然后再网上又找到一个2440的ucOS版本,发现用这个版本居然能够枚举了,我的OS用的是2.86最新的,而他的是2.52,干脆我将他OS相关的代码都覆盖我原来的OS相关文件,然后再调试我的系统程序,发现没有什么问题,插上USB线,也能枚举了,然后就是做成60M U盘,这个就容易多了,只要按照SCSI命令回windows需要的数据就行了,基本做这个U盘基本耗了我2天时间
这个项目基本完成了,写了这么多希望对还在迷惑中的朋友有点帮助!
|