新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > stm32 DMA性能資料

        stm32 DMA性能資料

        作者: 時間:2016-11-25 來源:網絡 收藏
        為了快速傳送一個數據塊,使用 DMA 傳送程序(Mem to Mem 16bits) 測量了一下傳送的時間,128個16b數據大約用了12us (72Mhz 時鐘)。 換句話來說,STM32 DMA 性能為10M/s


        又使用memcpy 來比對一下,用時約4us ,顯然memcpy 要快很多。

        btw, 在ST的手冊里面未見對DMA性能的表述。

        本文引用地址:http://www.104case.com/article/201611/321188.htm

        ----------------------------------

        DMA傳送數據的速度不會比CPU直接傳送數據快,因為總

        線頻率沒有變。

        當CPU也在運行執行指令時,DMA傳送數據的速度會比CPU直接傳送數據慢,這是因為DMA與CPU分時使用同一條總線的緣故。

        ----------------------------------

        有一個專門講DMA性能的手冊的,你可以在官網上找到的
        里面對DMA的性能描述得很清楚
        AN2548 Using the STM32F101xx and STM32F103xx DMA controller

        ----------------------------------------

        這個說法有點問題
        DMA數據傳送是memory->memory
        memcpy是memory -> cpu_internal_register -> memory

        memcpy快應該是因為1. memcpy采用了ldm/stm指令,這個對提高速度很有幫助 2. 總線仲裁偏袒cpu core

        ---------------------------------------

        恩............ DMA控制器并不在memory之內?我想你的意思是指MASTER DMA吧,像PCI那樣。但即使是legacy dma,由dma controller通過硬件的方式存取memory在通常情況下也應該比cpu快,因為不需要取指/解碼/執行這樣的流程。不過stm32的 controller不支持bust mode確實對其速度有很大影響,而ldm/stm指令實際上起到了bust mode的作用,可以在一次取指/解碼/執行過程中操作多個數據。如果controller支持burst,相信就可以超越memcpy的速度了。目前來看stm32 dma的速度確實不如memcpy,其最大的好處在于cpu可以不參與其過程。

        -----------------------------------

        非常同意byeyear 的解釋,順便問一句,其他品牌的M3的DMA是否也不支持 burst 模式?

        ------------------------------------

        DMA并不一定快,只是提高了有效代碼的運行效率。



        關鍵詞: stm32DMA性能資

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宜兰市| 乃东县| 仲巴县| 龙川县| 濮阳县| 霍林郭勒市| 大田县| 祁连县| 阳泉市| 莆田市| 太湖县| 丹凤县| 久治县| 乌海市| 壶关县| 县级市| 怀柔区| 和田市| 景洪市| 华坪县| 荣昌县| 杭州市| 河北区| 隆安县| 宁阳县| 太仆寺旗| 手机| 县级市| 图们市| 阿坝县| 辽阳县| 田阳县| 萨嘎县| 辽宁省| 江陵县| 凤庆县| 泸定县| 昌都县| 正宁县| 华亭县| 庆城县|