bloggerads

2015年8月20日 星期四

SATA : PMP (Port Multiplier)

這份spec常常被人遺忘,但她又確確實實定義在AHCI和SATA裡,先不論市場的接受度如何,相信做碟機相關技術的朋友都很好奇這個是什麼。

首先先看看spec所給的架構圖:




由圖中可以看到,port multiplier是一個擴充port數量的裝置。

那如何控制呢? 我跑去跟測試部門借了port multiplier (非常稀少,pchome/yahoo還買不到),準備開始改我的Dos 程式來測他,首先先看我畫的示意圖,我借的這是個1 to 4的port multiplier

基本上port multiplier最多可以接0~14個port, 第15個port是用來控制用的

當然,AHCI controller也要有能力才能支援port multiplier, 可以看AHCI 的 capability (CAP.SPM)


確定平台有支援後,接下來我要發個SRST給port 15,確認他回來的signature是port multiplier,代表有找到這個port multiplier裝置


再來我會發port multiplier的 command去問control,他的fan out能力

接著一個一個去看每個port 檢查她的PxSSTS.DET來判斷到底有那些port有接碟機

按照這些步驟做完,就可以知道哪些port被occupied, 接下來想發ATA command給他,僅需要在欄位裡指定他的PortNum就可以了。


1 則留言: