eMMC:Command Queuing

Command Queuing:命令隊列。Host可以發送多條指令到Device,Device FW(Firmware,固件)可以通過優化指令的順序、提前準備數據,從而可以提高性能和降低損耗。隊列長度最多爲32條,由Device指定。
命令命令默認是空的。Host初始化一條有效的命令後,此命令狀態爲待處理(Pending)。eMMC FW可以通過設置命令狀態爲"準備執行(Ready for Execution)",代表Device準備好執行此條命令,Host可以發起執行請求。
Host通過CMD13(參數Bit15置爲1)檢查隊列狀態寄存器(QSR:Queuing Status Register),選擇處於"準備執行"狀態的命令,通過CMD46/CMD47指定命令的ID,然後發起執行命令的請求,並且進行數據傳輸。CMD44、CMD45、CMD13 Check CQ狀態可以在數據傳輸過程中、Device Busy過程進行發送。
例如:Host通過CMD44指定命令的參數,Device響應後,發CMD45命令的起始地址。Device收到CMD44和CMD45後,檢測命令沒有異常後,認爲是一個有效的命令。Host可以在沒有數據傳輸的時候,發CMD46/CMD47帶上有效的任務ID,執行此命令。
注意:
1. 如果Host需要訪問RPMB分區,那麼需要停止使能命令隊列的功能。
2. CMD6切換分區的時候,命令隊列必須爲空,否則會認爲是非法命令。
3. 使能命令隊列的時候,塊大小必須爲512Bytes,否則Device在收到CMD46/CMD47後,會返回錯誤。
4. Device不保證命令隊列的執行順序,如果某些命令有先後執行的需求,Host需要想辦法解決這個問題。
PS:
CMD44:指定命令的參數
CMD45:指定命令的地址
CMD46:執行一個讀的命令
CMD47:執行一個寫的命令
CMD48:命令隊列管理,刪除某條或者全部命令
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章