久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8723|回復: 0
打印 上一主題 下一主題
收起左側

聊聊STM32F7的數據一致性話題

[復制鏈接]
跳轉到指定樓層
樓主
ID:98618 發表于 2016-6-4 17:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    STM32F7系列芯片集成了L1高速緩存,即L1 CACHE,包括D-CACHE和I-CACHE。它能夠提升CPU訪問數據或指令的速度,改善MCU的性能。關于STM32F7 L1 CACHE的應用,有個數據一致性問題需要注意,不然編程時可能會遇到些奇怪的現象。

    在聊這個話題之前,先說幾個基本概念或術語。

1、芯片復位后,I-CACHE,D-CACHE默認是關閉的。可以分別打開或關閉以及配置各自大小。

2、對于STM32F7來說,只有經過AXI總線接口訪問時才用到L1 CACHE。換句話,通過其它總線【TCM/AHBP/AHBS】做數據或指令訪問時是不涉及到L1 CACHE的。

3、回寫【WRITE BACK】:在寫數據時,只是把數據寫進D-CACHE而未寫入二級存儲器,并將緩存行里的數據標識為DIRTY,直到執行CACHE的清除操作才將D-CACHE里的內容寫進二級存儲器。

3、透寫【WRITE THROUGH】:在寫數據操作時同時將數據寫入D-CACHE和二級存儲器。這對于保持數據的一致性有好處,代碼編寫也相對簡單。不過它需要消耗更多的寫數據時間。當然,下次訪問相同內容時還是可以直接從緩存里讀取。跟回寫相比,算是一種折衷處理辦法。

4、STM32F7片內外各個存儲單元的存儲屬性是通過MPU來配置的。在芯片復位之后,MPU是默認關閉的,此時各存儲單元的存儲屬性遵照如下的默認配置。


    好,那什么時候會發生數據一致性問題?

    當有CPU和其它主設備【如DMA】共同訪問某可緩存的二級存儲器比方SRAM1,同時該存儲器又具有回寫屬性,此時就可能發生數據一致性問題。因為該存儲器的回寫屬性,導致通過CPU欲寫入存儲器的數據只是緩沖在CACHE里,而沒有及時寫入存儲器。如果此時DMA訪問該二級存儲器的話,讀到的數據可能跟預期不一致。

    為了避免數據不一致的問題,我們需要做D-CACHE維護操作。一般有如下四種方法:

1、當對一個可緩存的二級存儲器做了寫數據操作之后,通過軟件對D-CACHE進行清除操作,即運行SCB_CleanDCache()。這樣將CACHE里的緩存內容寫回到二級存儲器,比如把那些DIRTY CACHE行的數據寫進SRAM1。

2、通過MPU調整可緩存存儲器的存儲屬性,將其CACHE使用方式改為透寫模式。這樣保證每次寫入CACHE里的內容也同時寫入二級存儲器,比如寫進SRAM1。

3、通過MPU調整可緩存存儲器的存儲屬性,將其共享屬性改為可共享的【SHAREABLE】。此后該二級存儲器將變為不可緩存。

4、通過配置CACR寄存器中的D-CACHE位,強制將所有寫操作配置為透寫屬性。


    當然,跟上面描述相對應的還有一種情形。那就是DMA更新了可緩存存儲器比如SRAM1的數據后,CPU再去讀SRAM1,此時也會發生數據不一致的問題。因為CPU此時讀的數據還是之前CACHE里的舊數據。為了避免這個問題,保證數據的一致,就得在CPU讀SRAM1之前通過軟件執行CACHE失效操作,這樣保證CPU直接從二級存儲器比方SRAM1讀取數據。

 

    下面有個關于數據一致性的實例供大家思考。

首先CPU從片上FLASH存儲塊aSRC_Const_Buffer的128字節常量數據拷貝到SRAM1里的一個名為pBuffer的緩存區。

然后CPU配置并使能DMA執行從內存到內存的傳輸,將SRAM1里pBuffer緩存區的數據傳輸到DTCM  RAM的另一個aDST_Buffer緩存區。

最后,CPU將aDST_Buffer緩存區的數據與flash存儲塊aSRC_Const_Buffer的常量數據進行比較是否一致。


最后小結下,對于STM32F7系列MCU來說,可能發生數據一致性問題需要的幾個因素:

1、有CPU和DMA參與數據訪問;

2、有被CPU和DMA共同訪問的可緩存的帶回寫屬性的物理存儲塊;

3、開啟了D-CACHE;


往期話題鏈接:STM32CUBE相關技術手冊哪里找:http://www.zg4o1577.cn/bbs/dpj-50088-1.html

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线免费观看 | 特黄视频 | 一区二区三区在线观看免费视频 | 欧美毛片免费观看 | 日韩在线中文 | 国产精品视频观看 | 欧美一区视频 | 能看的av | 91www在线观看| 中文字幕av一区 | 国产精品性做久久久久久 | 精品欧美一区二区中文字幕视频 | 亚洲精品一区二区三区蜜桃久 | 亚洲精品免费视频 | 8x国产精品视频一区二区 | 成人a在线观看 | 色综合色综合网色综合 | 91色视频在线观看 | 在线观看中文字幕亚洲 | 免费看日韩视频 | 91最新入口 | 成人精品网 | 亚洲国产精品成人 | 91社影院在线观看 | 亚洲va欧美va人人爽午夜 | av在线免费观看不卡 | 欧美日韩在线视频观看 | 2022国产精品 | 亚洲成av片人久久久 | 男人天堂国产 | 三级成人在线 | 中文字幕一区在线观看视频 | 中文字幕在线视频免费视频 | 黄a大片| 色视频成人在线观看免 | 9999精品视频 | 国产激情在线播放 | 99精品福利视频 | 欧美亚洲第一区 | 中文字幕视频在线观看 | 日韩成人 |