吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

stm32案例分享之使D-CACHE時FMC外設運行不正常原因

STM32單片機 ? 來源:互聯網 ? 作者:佚名 ? 2017-10-30 15:45 ? 次閱讀

前言

前段時間某客戶反饋,在使用STM32H7的FMC時,如果使能了D-CACHE就運行不正常。數據沒有寫到FMC外部的存儲器里,FMC接口也沒有波形。而不使能D-CACHE是工作則是正常的。

其實對于這個問題,如果了解STM32H7的架構的話,就很容易理解了。下面我們就來看一看到底是什么原因讓客戶覺得使能DCACHE后FMC就工作不正常了。

STM32H7的架構

下面是STM32H7架構圖中和FMC相關的部分。從圖中可以看到,STM32H7是基于Cortex-M7內核,在內部的Cortex-M7內核里帶有一個16KB的D-CACHE和一個16KB的I-CACHE。內核通過AXIM總線連接到64位的AXI總線矩陣,再經過這個總線矩陣連接到FMC接口實現對外部存儲器的訪問。這里,當D-CACHE使能的時候,對FMC接口上的存儲器的操作會用到內核的緩存(CACHE)的。

使能了CACHE的好處就是可以提高內核訪問存儲器的速度。為什么使用緩存能提高速度呢?是因為在操作可以被緩存的存儲器的時候,內核不是每次都去直接操作這些存儲器,而是從緩存里讀取數據,或者將數據先寫到緩存里。看到這里,是不是覺得和前面客戶說的現象有點聯系了。

Cache的操作

簡單的說緩存工作時有兩種方式:回寫和透寫。

回寫【write back】就是數據平時只寫到緩存【cache】,必要時才同步到下一級存儲器中。

透寫【write through】就是數據每次都同時寫到緩存和下一級存儲器中。這種方式可以解決數據不一致的問題,但同時也會消耗更多的總線訪問時間。

緩存的操作方式,在啟用緩存后有一個默認的設置 。也就是下面這張表:

請參考AN4839了解更多的關于Cache的使用說明。

問題分析及解決

客戶是通過FMC的NOR存儲控制器外接一個FPGA。映射的地址范圍是0x60000000~0x7FFFFFFF。從上圖可以看到,它默認的緩存操作方式是WBWA(回寫寫分配)。也就是說,當打開DCACHE后,所有對該地址范圍的操作都會先到緩存。這也解釋了為什么客戶發現數據沒有真正寫到外部存儲器中。客戶的數據需要實時寫到FPGA中進行計算。所以對這個應用場景,回寫的設置就不合適了。

對于客戶的這個應用,可以通過MPU來進行配置,將0x60000000~0x7FFFFFFF范圍地址的CACHE設置為透寫的方式,這樣數據就會實時的寫到FPGA中去了。所以,針對這種情況,我們可以通過MPU合理配置來解決。

通過MPU,可以配置不同存儲器空間的訪問權限和Cache策略。HAL庫里面提供了對應的函數和例程,參照例程用下面這段代碼就可以解決客戶的問題了。數據每次都是直接寫到FPGA中,而不是緩存到內核的DCACHE中。

總結

D-CACHE的使用可以幫我們提高程序運行的性能,但也會帶來緩存和二級存儲器數據不一致和緩沖不擊中帶來的程序執行的時間不確定的情況,需要客戶根據實際的應用來進行選擇。對于實時性要求高的數據,可以像前面一樣使用MPU配置成透寫的方式,或者將數據放到DTCM RAM中。另外,在本文中只用MPU配置了FMC映射的部分存儲區域。在實際使用中,應該對所有用到的存儲空間(比如Flash, SRAM區)的屬性根據實際情況進行合理配置,以免引起其它的問題。詳情請參考AN4838.

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • D-CACHE
    +關注

    關注

    0

    文章

    1

    瀏覽量

    1058

原文標題:使能D-CACHE時FMC外設運行不正常的案例

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    stm32H747在M4內核使用AXI SRAM不正常原因

    ,斷電重啟之后也不正常不正常的現象是2個內核里面的點燈程序都無法運行,感覺是哪里死掉了一樣。在M7內核里已經配置了MPU和cache。在map文件看到數組開辟的起始地址確實是0x24
    發表于 03-28 09:20

    STM32串口發送不正常原因?如何解決?

    STM32串口發送不正常原因?如何解決?
    發表于 12-09 07:50

    啟用D-Cache的TouchGFX 4.16.1發生硬故障如何處理

    你好,我有一個帶有 stm32h743 的自定義板...我設計了一個帶有 touchGFX 的圖形頁面,當啟用 D-cache 時,系統檢測到一些硬故障,特別是當我觸摸一個按鈕來更改屏幕時,有時它可以工作,有時卻不能,當我禁用 D-ca
    發表于 12-26 09:45

    不正常自行放電原因

    不正常自行放電原因         極板材料或電解液有雜質,這樣雜質與極板或不同雜質間就會產生電位差,形成閉合的“局部電池”而產
    發表于 11-10 15:21 ?660次閱讀

    自架電子郵件系統收發不正常的幾種原因

    自架電子郵件系統收發不正常的幾種原因 1.DNS 服務器的設置不對。   2.DNS 服務器不正常工作。   3.MX 記錄不對或者沒有刷新
    發表于 01-29 11:10 ?726次閱讀

    STemWin_Library_V1.1.1 中 STM324x9IEVAL 的 RTOS 工程顯示不正常的問題

    STemWin_Library_V1.1.1中STM324x9I-EVAL的RTOS工程顯示不正常問題
    發表于 12-14 16:02 ?0次下載

    不正常關電腦會怎樣

    本視頻主要詳細介紹了不正常關電腦會怎樣,分別有硬件損壞、系統影響、損壞磁盤、導致數據丟失。
    的頭像 發表于 03-12 16:29 ?4020次閱讀

    交流接觸器吸合不正常原因有哪些

    交流接觸器吸合不正常,是指交流接觸器吸合過于緩慢,觸頭不能完全閉合,鐵芯發出異常噪聲等不正常現象。交流接觸器吸合不正常,可能是以下幾個原因
    的頭像 發表于 04-11 11:21 ?1.7w次閱讀

    激光切割機復位不正常帶來的危害和四大原因

    激光切割機是現代常用的加工設備,在加工時,總會出現些讓人頭疼的問題,遇到這些情況的時候,我們應該怎么去處理呢?下面就簡單的分析下激光切割機復位不正常原因
    的頭像 發表于 09-15 16:19 ?6144次閱讀

    STM32上電復位不正常 手動復位正常原因資料下載

    電子發燒友網為你提供STM32上電復位不正常 手動復位正常原因資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,
    發表于 04-25 08:42 ?38次下載
    <b class='flag-5'>STM32</b>上電復位<b class='flag-5'>不正常</b> 手動復位<b class='flag-5'>正常</b>的<b class='flag-5'>原因</b>資料下載

    STM32H7的FMC外設D_Cache使能的情況下運行不正常

    STM32H7的FMC外設D_Cache使能的情況下運行
    發表于 08-04 18:19 ?13次下載
    <b class='flag-5'>STM32</b>H7的<b class='flag-5'>FMC</b><b class='flag-5'>外設</b>在<b class='flag-5'>D_Cache</b><b class='flag-5'>使</b>能的情況下<b class='flag-5'>運行</b><b class='flag-5'>不正常</b>

    關于STM32串口燒錄后程序正常運行,但是掉電或復位后程序不正常運行的可能解決方法。

    關于STM32串口燒錄后程序正常運行,但是掉電或復位后程序不正常運行的可能解決方法。 BOOT0 BOOT1
    發表于 12-14 18:52 ?21次下載
    關于<b class='flag-5'>STM32</b>串口燒錄后程序<b class='flag-5'>正常</b><b class='flag-5'>運行</b>,但是掉電或復位后程序<b class='flag-5'>不正常</b><b class='flag-5'>運行</b>的可能解決方法。

    常見電機由機械故障引起的不正常聲音有哪些

    首先應判斷是機械還是電氣的原因引起的? 方法是:接上電源,有不正常的聲音存在,切斷電源,不正常聲音仍存在,則為機械故障;否則為電氣方面故障。
    發表于 02-17 10:35 ?2168次閱讀

    自舉電路不正常工作

    電路不正常工作可能會表現為無法正確啟動設備,也可能會導致設備啟動后運行不穩定,甚至直接崩潰。針對這種情況,我們需要仔細排查問題,找到原因并進行修復。下面就讓我們一起詳細地了解一下自舉電路不正常
    的頭像 發表于 09-17 09:44 ?1030次閱讀

    伺服電機振動不正常原因和維修及案例分析

    。本文將深入探討伺服電機振動不正常原因,并提供相應的維修建議,以幫助技術人員快速定位和解決問題。 ? ? ? 一、伺服電機振動不正常原因 ? ? ? 1. 機械
    的頭像 發表于 12-18 09:22 ?265次閱讀
    伺服電機振動<b class='flag-5'>不正常</b><b class='flag-5'>原因</b>和維修及案例分析
    千亿娱乐城注册| 百家乐注册彩金| 百家乐官网视频游戏平台| 威尼斯人娱乐场xpjgw5xsjgw| 百家乐官网丽| 健康| 百家乐真人视频出售| 百家乐官网是个什么样的游戏 | 百家乐官网牌路分析仪| 全讯网| 百家乐正网| 百家乐策略| 百家乐官网对保| 皇冠足球即时走地| K7百家乐的玩法技巧和规则| 百家乐官网园好又多| 百家乐官网打大必赢之法| 哪个棋牌游戏平台好| 百家乐空调维修| 赌场百家乐官网图片| 焦作市| 大发888存款方式| 百家乐折桌子| 百家乐官网三路法| 百家乐官网视频金币| 莆田棋牌游戏| 君怡百家乐的玩法技巧和规则| 百家乐庄闲和概率| 百家乐官网太阳城 | 百家乐输了好多钱| 永利百家乐官网赌场娱乐网规则 | 百家乐官网视频游戏挖坑| 优博网址| 大发888游戏交易平台| 百家乐可以出千吗| 百家乐国际娱乐| 皇冠百家乐官网在线游戏| 百家乐官网四式正反路| 九游棋牌大厅| 送彩金百家乐官网的玩法技巧和规则| 乐百家百家乐官网游戏|