【基于 ARM9200 的 USB 编程】
在嵌入式系统开发中,尤其是在使用 ARM9200 这样的微处理器时,USB(通用串行总线)编程是一项重要的任务,尤其对于需要与外部设备如U盘进行数据交换的应用。ARM9200 芯片内置了USB主机控制器,支持OHCI(Open Host Controller Interface)协议,这使得开发者可以直接利用芯片的硬件资源来实现USB主机功能,而无需额外的专用主机控制器芯片。
【OHCI协议】
OHCI是USB 1.1规范的一部分,为USB主机控制器定义了一种标准接口。它定义了主机控制器如何与USB设备通信,包括设备枚举、数据传输以及中断处理等。OHCI协议规定了寄存器的布局和操作,使得软件可以通过这些寄存器控制USB设备的运行。在基于ARM9200的系统中,理解和掌握OHCI协议至关重要,因为它直接影响到USB设备的正确识别和数据传输效率。
【寄存器读写接口】
在实际编程中,与OHCI协议交互主要是通过读写控制器的寄存器来实现。这些寄存器包括但不限于:控制和状态寄存器、端点描述符缓冲区、帧列表等。开发者需要编写代码来设置和读取这些寄存器,以控制USB设备的枚举、配置、数据传输等过程。例如,通过写入特定寄存器可以启动或停止传输,读取状态寄存器可以获取USB设备的状态信息。
【OHCI软件接口】
在基于ARM9200的系统中,OHCI软件接口是操作系统或应用程序与硬件之间通信的桥梁。这个接口通常包括驱动程序,它实现了OHCI协议规定的功能,并提供了一套API供上层应用调用。这些API可能包括初始化USB控制器、枚举设备、创建和管理端点等。开发者需要理解这些接口函数的工作原理,并正确地使用它们来控制USB设备。
【USB设备管理】
USB设备管理涉及设备的枚举、配置、故障恢复等过程。在OHCI框架下,当USB设备连接到系统时,主机控制器会自动开始枚举过程,识别设备类型、分配端点资源等。开发者需要编写代码来处理这些过程,并根据设备的描述符信息来配置设备。此外,还需要处理可能出现的错误情况,如设备断开、数据传输错误等。
【UFI命令】
UFI(USB Fluid Interface)命令是针对某些特定类型的USB存储设备,如闪存驱动器,定义的一套命令集。这些命令允许主机对设备进行高级操作,如读写扇区、格式化等。在基于OHCI的USB主机编程中,理解和使用UFI命令能够实现更高效、更灵活的数据存取。
【附录及样例代码】
附录通常包含一些参考信息,如寄存器详细定义、错误代码说明等。提供的AT91RM9200 USB主机官方例程可以帮助开发者理解如何将理论知识转化为实际代码,加快开发进程。通过分析和学习这些示例,开发者可以更好地掌握基于ARM9200的USB主机编程技巧。
基于OHCI的USB编程在ARM9200平台是一项复杂但关键的任务。需要深入理解OHCI协议,熟悉寄存器操作,掌握设备管理和数据传输机制,并能够编写有效的软件接口。这份资料的提供,无疑为开发者提供了宝贵的实践经验和参考资料,有助于他们避免重复摸索,更快地实现USB功能。