天天看點

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:指令隊列管理,删除某條或者全部指令