1769L31

更新时间: 2023-01-13

软件实现

    要实现实验系统与上位机的USB通讯,首先要正确设计PDIUSBD12的底层固件程序。而要实现系统的海量存储设备功能,还要有FLASH的读写操作代码和实现海量存储设备类规范的代码。下面从这3个方面来分析。软件开发环境为ARM公司的ADS1.2,USB监控和测试软件为BUSHound。

    1PDIUSBD12固件编程

    PDIUSBDl2固件结构和数据流向。结构图中的硬件提取层是固件中的**层代码,负责对处理器与PDIUSBDl2相连接的I/O口进行操作,以通知PDI-USBD12接下来处理器将对其进行命令操作或是数据操作。而命令接口层是基于硬件提取层的一套对PDIUS-BDl2进行操作的子程序,可以方便上层程序的编写。

    当PDIUSBD12向处理器发出中断请求时,处理器读取中断寄存器,根据中断源调用相应的中断服务处理程序,中断服务处理程序设置相应的事件标志,如果有数据传输并作相应的数据处理。根据USB协议[4],控制端点0用来负责设备的枚举,如获取设备各种描述符、设置地址、获取海量存储设备的逻辑单元数目和复位设备等操作。这些操作是通过中断和主循环共同完成的。这里端点1未用到,可以忽略其中断。端点2是主端点,用作Bulk-Only传输。在端点2的中断处理程序中实现Bulk-Only传输及命令解析和执行。

    其中,中断服务处理程序与主循环通过一个名为ControlData的结构体变量进行通讯。主循环初始化I/O口、事件标志bUSBFlags、建立包数据缓冲区、定时器和中断,重新连接USB总线后进入一个无限循环,当该循环轮询到某事件标志被置位时便进行相应的处理。特别是在设备枚举中当建立标志被置位时,根据设备请求的类型域ControlData,DeviceRequest,bmRequestType来确定是标准设备请求、厂商设备请求还是类型设备请求,再根据请求类型进行相应的调用。


上一篇:1769L32C

下一篇:1771DXPS