xHCI中软硬件交互传输数据的最小单位是TRB,大小固定为16byte,主要包括command TRB、Transfer TRB、Event TRB这三类以及link TRB、event data TRB、自定义TRB等等。
Command TRB用于软件向xHC下发命令,比如设备枚举、配置xHC等等
Transfer TRB由软件配置,用于发起xHC和device之间的数据传输
Event TRB由xHC配置,用于向软件上报状态和错误信息,比如传输完成、端口状态变化等信息。
Link TRB用于把transfer Ring和command ring中物理地址不连续的segment连接起来。
Event Data TRB用于软件向xHC传递自定义的数据信息
TRB的数据结构基本格式,包含了8个byte的data buffer地址信息,4个byte的状态信息和4个byte的控制信息