1.30.2007

USB USBET Compliance Test

要進行USBIF的USBHSET (High Speed Electrical Test)。
在USBIF可以download..

device 要支援 SETUP Command中的 SET_FEATURE (0x03) 。

CE中,由Pdd的 Interrupt Stub Thread,SETUP packet handler 呼叫 Mdd_Notify( ),請Mdd處理SET_FEATURE request (其實所有request都是Mdd處理的)。

Mdd_Notify 和其他Mdd_XX 在不同的source file中 - usbfn\controller\mdd\enum.cpp.

Notify 呼叫 ProcessRequest( )處理 SEQUEST packet。

奇怪的是..SET Feature function - ProcessRequest( )竟然只處理 SET_FEATURE_COMPILANCE。

SET_FEATURE Request的 wValue Low Byte 決定要Set的feature:
  • 0x00 : Endpoint Halt. -- 什麼都不作.
  • 0x02 : Test Mode。wValue High Byte決定要設定device的test mode:
    • TEST_J - 將D+, D- 設定成J State.
    • TEST_K - .....
    • TEST_SE0_NAK - 將D+, D- 設定在SE0_NAK
    • TEST_PACKET - 送出一個56 bytes的packet (內定好的),然後進入PRBS state.
      "送出" 的動作還是依照USB 的規範,在IN stage時送出
    • TEST_FORCE_ENABLE - 送出NAK
進入TEST Mode之前,還是要回應一下SETUP Command (Handshake - ACK)。
做完TEST Mode的動作後,因為USB state已經混亂,所以就進入while(1); loop,當機..

沒有留言: