使用AT91RM9200作为主控CPU,利用该芯片的USB主机接口访问U盘,根据接收的上层命令把相应数据保存到U盘的指定文件上。不使用额外的专用USB控制芯片,要求稳定可靠,效率高,不能影响运行在该CPU上的其它程序。
AT91RM9200程序加载后直接运行,没有操作系统。
以上就是我做的基于OHCI的USB主机的项目背景,这个项目是做什么的不重要,你可以把它想象成任何项目,关键是这个项目要求使用U盘来保存数据。
另外,在我们的项目中没有使用任何一款嵌入式操作系统,所有的程序都运行在同一个主循环中,自己来实现任务调度。说到操作系统,其实很惭愧,自从我开始从事嵌入式系统的开发到现在,十几年了,从来没有用过任何操作系统,所有程序都是裸机直接运行。好处是系统简单,一切都在自己的掌握之中,出了问题可以很快得到解决。坏处是系统的移植性差,换了个系统有很多通用的代码需要重新编写。
不过我做的那些嵌入式系统现在看来其实都是蛮简单的,用了操作系统可能反而更麻烦,首先得花时间学习操作系统,而且出了问题还要分析确认这问题是不是操作系统的问题,一旦是操作系统的问题还要想办法怎么规避,算了,有那个时间项目早就做完了。
没有操作系统,我的程序更加清晰,没有了驱动程序加载、操作系统API调用,反而可以更加清楚地知道如何基于OHCI规范实现USB主机。在开始讲解之前,我想读者应该具备如下的基础知识:
1、 USB接口基础知识;
2、 USB层通信协议及基本工作流程;
3、 USB主机对USB设备的管理流程;
4、 OHCI标准 —— AT91AM9200对USB接口的操作标准;
5、 Mass Storage Protocol —— 对U盘访问的存储控制协议;
6、 UFI Command - U盘读写等操作命令;
7、 FAT16文件系统;
以上内容有一些我会在需要的时候加以说明,更加详细的内容请自行参考相关资料。下面是我做开发过程中参考的一些资料:
1、 《Open Host Controller Interface Specification for USB》
路径
|
ftp://ftp.compaq.com/pub/supportinformation/papers/hcir1_0a.exe
|
说明
|
OHCI接口规范,解压后得到Word文档
|
2、 《ARM嵌入式系统软件开发实例(一、二)》
路径
| |
说明
|
周立功等编著,北京航空航天大学出版社
|
3、 《USB 2.0应用系统开发实例精选》
路径
| |
说明
|
廖济林编著,电子工业出版社
|
4、 《Universal Serial Bus Mass Storage Class Bulk-Only Transport》
USB Bulk-Only协议规范
5、 《Universal Serial Bus Mass Storage Class UFI Command Specification》
USB UFI命令规范
6、 《Microsoft Extensible Firmware Initiative FAT32 File System Specification》
FAT32文件格式,基础部分与FAT16兼容