色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 話說STM32F4系列的總線矩陣與訪問調(diào)度

          話說STM32F4系列的總線矩陣與訪問調(diào)度

          作者: 時間:2016-09-06 來源:網(wǎng)絡(luò) 收藏

            

          本文引用地址:http://cafeforensic.com/article/201609/296596.htm

           

            可能不少人見過系列的內(nèi)部系統(tǒng)架構(gòu)框圖。大致如下圖,該圖很重要,不可視而不見。

            

           

            圖中縱橫交錯的就是多層AHB矩陣,負(fù)責(zé)把上方黃色主設(shè)備跟右邊綠色從設(shè)備互聯(lián)起來。所謂AHB主設(shè)備是指CPU或DMA[通用DMA或?qū)S肈MA],由它們啟動訪問,即讀寫操作。那些響應(yīng)主設(shè)備讀寫訪問的設(shè)備就是AHB從設(shè)備,比如存儲器、各類外設(shè)等。

            因為矩陣的存在,使得多個主設(shè)備可以并行訪問不同的從設(shè)備,增強(qiáng)了數(shù)據(jù)傳輸能力,提升了訪問效率,同時也改善了功耗性能。

            不過,雖然總線矩陣使得多個主設(shè)備可以并行訪問不同的從設(shè)備,但在每個預(yù)定的時間內(nèi),只有一個主設(shè)備擁有總線控制權(quán)。如果有多個主設(shè)備同時出現(xiàn)總線請求時就得進(jìn)行仲裁。所以總線矩陣?yán)镞€有個AHB總線仲裁器,它保證每個時刻只有一個主設(shè)備通過總線矩陣對從設(shè)備進(jìn)行訪問。(注1)

            為了確保每個主設(shè)備訪問從設(shè)備的延遲盡量短,在總線矩陣?yán)飳嵭醒h(huán)調(diào)度優(yōu)先級方案:

            • 循環(huán)調(diào)度仲裁策略使總線帶寬合理分配。

            • 限定最大延時。

            • 循環(huán)調(diào)度以1 次傳輸為單位。

            當(dāng)多個AHB 主設(shè)備試圖同時訪問同一個AHB從設(shè)備時,總線矩陣仲裁器介入以解決訪問沖突。在下面的例子中CPU 和DMA1 均試圖訪問SRAM1 以讀取數(shù)據(jù)。

            

           

            如上述示例總線訪問請求同時發(fā)生的情況下,就需要總線矩陣仲裁。為了解決這種問題,需要應(yīng)用循環(huán)調(diào)度策略:如果本次最后贏得總線控制權(quán)的主設(shè)備是CPU,則在下一次訪問中DMA1將贏得總線控制權(quán)并首先訪問SRAM1。CPU 隨后方可有權(quán)訪問SRAM1。

            這就表明,一個主設(shè)備的傳輸延時取決于其它等待請求訪問AHB 從設(shè)備的主設(shè)備數(shù)量。下面的例子是五個主設(shè)備試圖同時訪問SRAM1的情形:

            

           

            DMA1再次獲得總線矩陣訪問權(quán)并訪問SRAM1 的延時等于其它等待請求的所有主設(shè)備的執(zhí)行時間之和。

            我們再來看看進(jìn)行總線矩陣仲裁可能導(dǎo)致的DMA傳輸延時最差情況。

            主設(shè)備DMA端口進(jìn)行一次數(shù)據(jù)傳輸會遭遇的延時取決于其它主設(shè)備的傳輸類型和長度。比如,我們結(jié)合上面的DMA1 & CPU 的例子,它們并行訪問SRAM。 DMA傳輸延時將隨著CPU 數(shù)據(jù)傳輸事務(wù)長度而變化。如果總線訪問首先給予CPU 且不是執(zhí)行單次數(shù)據(jù)加載/存儲,DMA 訪問SRAM 的等待時間可能從一個AHB 周期(單次數(shù)據(jù)加載/ 存儲時間)延長為N 個AHB 周期,這里N 為CPU 數(shù)據(jù)傳輸事務(wù)中數(shù)據(jù)的數(shù)量。

            CPU 鎖定AHB 總線以保持其訪問總線的所有權(quán),減少了多次加載/ 存儲操作過程中的延時以及進(jìn)入中斷的延時。這提高了固件的響應(yīng)能力,但是可能導(dǎo)致DMA 數(shù)據(jù)傳輸事務(wù)的延遲。

            DMA1 與CPU 并行訪問SRAM 的延時取決于傳輸類型:

            • 中斷(上下文保護(hù))發(fā)起的CPU 傳輸:8 個AHB 周期;

            • LDM/STM 指令發(fā)起的CPU 傳輸:14 個AHB 周期(注2)

            ---在多達(dá)14 個寄存器與存儲器之間進(jìn)行傳輸;

            

           

            上圖詳細(xì)描述了一個因中斷進(jìn)入而導(dǎo)致DMA多周期傳輸延遲的情形。DMA 存儲器端口被觸發(fā),發(fā)出存儲器訪問請求。經(jīng)過仲裁, AHB 總線未授權(quán)DMA1 存儲器端口訪問,而由CPU 來訪問總線??梢钥吹皆诜?wù)DMA 請求之前有一段額外的延時。這段中斷發(fā)起的CPU 傳輸,耗時為8 個AHB 周期。

            不難理解,當(dāng)同時對一個從設(shè)備進(jìn)行尋址且數(shù)據(jù)傳輸事務(wù)長度不是一個數(shù)據(jù)單元時,其他主設(shè)備(如DMA2,USB_HS, Ethernet…)也會碰到類似情形。所以,為了提高DMA 對總線矩陣的訪問性能,要盡量回避總線競爭。

            以上內(nèi)容主要取材于ST官方應(yīng)用筆記文檔AN4031的一部分。該筆記里除了上述內(nèi)容外,還對STM32F2/F4的DMA傳輸路徑、DMA傳輸時間的估算、DMA編程都有較為細(xì)致的介紹。我這里算是拋磚引玉,有興趣的話可以去www.stmcu.com.cn 的設(shè)計資源區(qū)搜索下載AN4031。

            (注1)并非所有主設(shè)備訪問從設(shè)備都得經(jīng)過總線矩陣,細(xì)心的人可能看到了有些主設(shè)備與從設(shè)備間有直通通道。細(xì)節(jié)詳見STM32芯片相關(guān)參考手冊。

            (注2) 通過配置編譯器,將加載/ 存儲多重指令分解為單個加載/ 存儲指令,可以降低由LDM/STM 發(fā)起的傳輸?shù)难訒r。

            



          關(guān)鍵詞: STM32F4 總線

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉