基于USB2.0的高性能移動存儲設備的設計
?。簩懯鼓苄盘枴T谄渖仙貢r,命令、地址和數據鎖存到相應的寄存器中。該信號與AT89C5131芯片的P3.6 信號連接。
?。鹤x使能信號。在其下降沿時,輸出數據到I/O總線,同時,它還可以對內部數據地址進行累加。該信號與AT89C5131芯片的P3.7 信號連接。
CLE:命令鎖存使能信號。當CLE為高電平時,命令在 上升沿通過I/O端口送入命令寄存器。該信號與AT89C5131芯片的P1.0引腳連接。
ALE:地址鎖存使能信號。當ALE為高電平時,地址在 上升沿送入地址寄存器。該信號與AT89C5131芯片的P1.1引腳連接。
?。浩x信號。用于控制設備的選擇。當設備忙時 為高電平而被忽略,當處于編程和擦除操作時設備不能回到備用狀態(tài)。該信號與AT89C5131芯片的P1.2引腳連接。
R/ :準備好/忙輸出。當它為低電平時,表示編程、擦除和隨機讀操作正在進行,在操作完成后返回高電平;當芯片沒被選中或輸出禁止時,其為高電平時。該信號與AT89C5131芯片的P1.3引腳連接。
3.固件設計實現
本文設計的USB移動存儲設備采用Bulk-Only傳輸方式,遵循UFI命令規(guī)范。移動存儲設備固件的主要功能是響應USB總線的各種標準請求,向主機返回設備的狀態(tài)信息;同時,解析接收到的SCSI命令,進行相應的命令處理和數據讀寫操作。固件設計采用中斷驅動,當AT89C5131從總線上接收到請求包時,通過調用相應的中斷事件處理函數來實現,后臺處理USB傳輸,從而保證了閃存的快速讀寫速率。主要中斷事件有:
(1)主循環(huán)等待USB中斷,設置相應標志位。移動存儲設備插入主機后,主機向移動閃存的控制斷點0發(fā)出標準請求,固件進入標準請求處理函數,設備回送給主機所要求的相應描述符,調用相關驅動程序。
(2)當USB主機通過Bulk-In端口讀取閃存數據后,產生Bulk-In端口中斷。
(3)當AT89C5131通過Bulk-Out端口接收到主機發(fā)送的命令字CBW后,觸發(fā)Bulk-Out端口中斷。
3.1 響應USB總線標準請求
當USB移動存儲設備接入主機后,USB主機控制器對設備進行總線枚舉過程,首先向設備發(fā)送標準USB請求GET_DESCRIPTOR來獲得最大數據包長度;接著發(fā)出SET ADDRESS請求,為設備分配地址;使用新分配的地址再次發(fā)出GET_DESCRIPTOR請求,讀取設備的配置信息[4],如設備描述符、配置描述符、接口描述符、端口描述符和字符串描述符等,并選擇合適的驅動程序;最后,發(fā)出SET CONFIGURATION請求配置端口屬性。
評論