Use AT91RM9200 as the master CPU, use the USB host interface of the chip to access the USB flash drive, and save the corresponding data to the specified file of the USB flash drive according to the upper-layer commands received. No additional dedicated USB control chip is used, which requires stability, reliability, and high efficiency and does not affect other programs running on the CPU. The AT91RM9200 program runs directly after being loaded without an operating system. The above is the background of my OHCI-based USB host project. It doesn't matter what I do. You can think of it as any project, the key is that this project requires a USB flash disk to store data. In addition, we did not use any embedded operating system in our project. All programs run in the same main loop and can schedule tasks by ourselves. Speaking of operating systems, I am ashamed to say that I have been engaged in the development of embedded systems for more than a decade and have never used any operating systems. All programs run on bare metal. The advantage is that the system is simple, everything is under control, and problems can be quickly solved. The disadvantage is that the system has poor portability, and many common code needs to be rewritten for another system. However, the embedded systems I have built are actually quite simple. Using an operating system may be more troublesome. First, you have to spend time learning the operating system, in addition, if a problem occurs, we need to analyze whether the problem is caused by the operating system. If it is caused by an operating system problem, we need to find a way to avoid it. Forget it. The project has already been completed at that time. Without an operating system, my program is clearer. Without driver loading and operating system API calling, I can better understand how to implement a USB Host Based on OHCI specifications. Before getting started, I think readers should have the following basic knowledge: 1. Basic knowledge of USB interfaces; 2. USB-layer communication protocols and basic workflow; 3. USB Host management process for USB devices; 4. OHCI standard-AT91AM9200 for USB interfaces; 5. Mass Storage Protocol-Storage control Protocol for USB flash drive access; 6. UFI Command-operating commands such as USB flash drive read/write; 7. FAT16 file system; I will describe the above content when necessary. For more details, please refer to relevant materials. The following are some of my reference materials during the development process: 1. Open Host Controller Interface Specification for USB
Path |
Ftp://ftp.compaq.com/pub/supportinformation/papers/hcir1_0a.exe |
Description |
OHCI interface specification. decompress the package and obtain the Word document. |
2. ARM Embedded System Software Development example I and II)
Path |
|
Description |
Edited by Zhou licong, Beijing University of Aeronautics and Astronautics Press |
3. Selection of USB 2.0 application system development instances
Path |
|
Description |
Edited by Liao Jilin, Electronic Industry Press |
4. USB Bulk-Only Transport protocol Specification for Universal Serial Bus Mass Storage Class 5. usb ufi Command Specification for Universal Serial Bus Mass Storage Class UFI Command Specification 6 ,《 microsoft Extensible Firmware Initiative FAT32 File System Specification FAT32 File format, compatible with FAT16
This article is from the "rainman" blog, please be sure to keep this source http://lancelot.blog.51cto.com/393579/226133