精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

STM32G4系列存儲訪問的兩個小話題

茶話MCU ? 來源:茶話MCU ? 作者:茶話MCU ? 2022-12-12 10:15 ? 次閱讀

一、有關CCM訪問地址的話題

有用過STM32F4系列部分芯片或STM32F334芯片的人,可能知道片內有個CCM【Core Coupled Memory】區域,從芯片系統框圖結合文字說明,可以清晰知道這個區域僅能被CPU訪問,常用來存放些對執行效率敏感的關鍵性的代碼或數據。也就是說對于這兩個系列的CCM區域,DMA是訪問不了的。

下面截圖分別來自STM32F42X/STM32F43X器件和STM32F334器件的參考手冊。

bfd482ba-7885-11ed-8abf-dac502259ad0.png

c00c6a90-7885-11ed-8abf-dac502259ad0.png

到了STM32G4系列,里面依然也有CCM這個區域。見下面STM32G4系統框架圖。

c0388986-7885-11ed-8abf-dac502259ad0.png

從框架圖上看,這個CCM區域不僅可以被CPU訪問,也可以被DMA訪問。關于它的起始地址也有相關描述:

c060a722-7885-11ed-8abf-dac502259ad0.png

從上面描述來看,CCM的地址起始于0x1000 0000和SRAM2結尾的地方。至于SRAM2結尾的地址還跟STM32G4具體的子系列或型號有關,見下面截圖資料

c0990efa-7885-11ed-8abf-dac502259ad0.png

那么這兩個地址空間怎么用,或者說區別是什么呢?

當為了充分發揮CPU對這塊區域的訪問效能時就使用0x1000 0000開始的地址空間,此時CPU通過ICode總線訪問這個區域。這塊地址空間DMA是訪問不了的,屬CPU專訪區。

若希望DMA訪問這塊物理區域,DMA要通過總線矩陣來訪問,所用的空間則是0x20005800或0x20018000(視具體系列而定)開始的一段地址。此時,這個CCM區域在DMA眼里,不過是SRAM2區域延伸出來的一塊別名區。當我們試圖讓DMA訪問這個區域時,地址別給錯了,不要使用CPU的專用地址,而要給0x20005800或0x20018000開始的地址。

c0e4ab8a-7885-11ed-8abf-dac502259ad0.png

也就是說同一個物理空間,不同的主體通過走不同的地址路線而實現不同的訪問、執行性能。這樣的設計更具靈活性,以滿足五彩斑斕的實際應用需求。就像我們要到達某個地方完成某事,有人走正門,有人走側門,甚至有人飛檐走壁,各用所便,各盡所能,各取所需。

當然,G4系列的CCM除了上面因訪問主體不同采樣不同地址空間的靈活特性外,還加強了很多安全特性,比方奇偶校驗、讀寫保護等,有興趣可以進一步閱讀相關參考手冊。

二、有關位帶操作的話題

有人問起STM32G4系列是否支持位帶操作方面的相關話題。

要問STM32某個系列是否支持位帶操作,首先得看看相關STM32系列所用ARM內核是否支持位帶操作。如果內核本身就不支持位帶功能,STM32是不會支持該功能的。反之,如果相關ARM核支持位帶操作,基于該核的STM32系列一般都會支持位帶操作,而且在相關STM32參考手冊里一定會明確說明。【其實,第三方芯片設計者在基于ARM核設計、集成芯片時,對于內核的部分功能或者核外設是有取舍權的。】

具體到STM32G4系列芯片,它屬于cortex M4核,該核內置位帶功能,STM32G4芯片也集成了該功能,在STM32G4參考手冊上也有明確描述。【下圖截取于STM32G4參考手冊】

c109dab8-7885-11ed-8abf-dac502259ad0.png

這里的位帶區特指一段片內SRAM空間和外設寄存器空間。位帶區的SRAM里的每一位或外設寄存器的每一位都可以通過訪問相應的另外一段地址空間的一個字實現讀寫操作,這個另外一段地址空間就稱之為位帶區的別名區。

不過,在STM32參考手冊里,針對位帶操作的介紹相對比較簡單,主要是因為ARM內核相關手冊有較為詳細的描述。STM32參考手冊里主要就如何計算別名區的地址做了個演示,并提示閱讀相關ARM 內核手冊。

c1440ac6-7885-11ed-8abf-dac502259ad0.png

上圖截取于STM32G4參考手冊RM0440。有人納悶示例中的0x2200,0000是從哪里來的?翻遍整個G4系列參考手冊也不知它怎么冒出來的。其實,這個地址是在Arm cortex M4內核手冊里明確的。見下圖:

c18b8270-7885-11ed-8abf-dac502259ad0.png

上圖來自于Cortex -M4Devices Generic User Guide。

上圖清晰了給出兩塊位帶區【SRAM區和外設寄存器區】以及對應的別名區的地址邊界和對應關系。圖中淺紫色表示位帶區,綠色表示別名區。顯然,位帶區字節地址為0x2000,0000的bit0對應別名區的字地址就是0x2200,0000;位帶區字節地址為0x2000,0000的字節的bit1對應別名區的字地址就是0x2200,0004,這樣依此類推。

關于位帶操作的介紹,除了上面的Memory框圖外,在內核手冊里還有更多包括地址計算在內的詳細介紹。下面三副截圖均來自M4內核用戶手冊。

c1d70024-7885-11ed-8abf-dac502259ad0.png

c2211e20-7885-11ed-8abf-dac502259ad0.png

c26156ca-7885-11ed-8abf-dac502259ad0.png

關于位帶操作的介紹就聊到這里,順便給幾點提醒:

1、不是所有STM32系列都支持位帶操作,是否支持終究由內核決定;

2、執行位帶操作的主體只能是CPU,而不能是別的,比方DMA;

3、位帶操作只支持針對數據,而不能針對指令;

上面主要分享了STM32G4系列中有關CCM和Bit Banding應用方面的話題,做了些提醒及分享,以供參考。

審核編輯:湯梓紅

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

    關注

    68

    文章

    10702

    瀏覽量

    209465
  • STM32
    +關注

    關注

    2258

    文章

    10828

    瀏覽量

    352546
  • CCM
    CCM
    +關注

    關注

    0

    文章

    142

    瀏覽量

    23707
  • STM32F334
    +關注

    關注

    0

    文章

    6

    瀏覽量

    4775

原文標題:STM32G4系列存儲訪問的兩個小話題

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32G4 UART+TIMER+DMA應用示例

    這里使用STM32G4系列Nucleo開發板演示如下需求的實現過程。
    的頭像 發表于 11-27 10:42 ?1734次閱讀
    <b class='flag-5'>STM32G4</b> UART+TIMER+DMA應用示例

    STM32G4系列到底支不支持位帶操作

    印象中不止一次有人詢問STM32G4系列到底支不支持位帶操作。
    的頭像 發表于 07-29 09:45 ?1118次閱讀
    <b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>到底支不支持位帶操作

    如何使用STM32G4系列微控制器存儲器和外設

    本參考手冊面向應用程序開發人員。它提供了有關如何使用STM32G4系列微控制器存儲器和外設的完整信息。
    發表于 11-24 07:51

    STM32L4 STM32L4+和STM32G4系列微控制器上的專利代碼讀取保護

    基于Arm?(a)內核的STM32L4STM32L4+和STM32G4系列微控制器采用多種機制,可對全存儲器或特定段進行讀寫保護。讀保護用
    發表于 09-07 07:45

    如何使用STM32G4系列微控制器存儲器和外圍設備

    本參考手冊面向應用程序開發人員。它提供了關于如何使用STM32G4系列微控制器存儲器和外圍設備。 STM32G4系列是一
    發表于 09-08 06:59

    STM32G4片內不同存儲空間運行的速度差異

    息息相關。我這里設計了一小測試程序做了下簡單比較,以供參考。 我們不妨先看看STM32G4系列內部系統框架圖。下圖是STM32G4芯片的系統框架圖,我將測試程序放在圖中三
    的頭像 發表于 09-09 09:57 ?2094次閱讀
    在<b class='flag-5'>STM32G4</b>片內不同<b class='flag-5'>存儲</b>空間運行的速度差異

    STM32G4 系列壽命估算

    STM32G4 系列壽命估算
    發表于 11-21 08:11 ?2次下載
    <b class='flag-5'>STM32G4</b> <b class='flag-5'>系列</b>壽命估算

    AN5306_OPAMP在STM32G4系列中的應用

    AN5306_OPAMP在STM32G4系列中的應用
    發表于 11-21 08:11 ?4次下載
    AN5306_OPAMP在<b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>中的應用

    AN4232_STM32F3和 STM32G4的模擬比較器入門指南

    AN4232_STM32F3和 STM32G4的模擬比較器入門指南
    發表于 11-21 17:06 ?10次下載
    AN4232_<b class='flag-5'>STM32</b>F3和 <b class='flag-5'>STM32G4</b>的模擬比較器入門指南

    AN5310_使用STM32F3系列STM32G4系列設備的模擬特性指南

    AN5310_使用STM32F3系列STM32G4系列設備的模擬特性指南
    發表于 11-21 17:06 ?2次下載
    AN5310_使用<b class='flag-5'>STM32</b>F3<b class='flag-5'>系列</b>與<b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>設備的模擬特性指南

    STM32G4系列安全手冊

    STM32G4系列安全手冊
    發表于 11-22 08:21 ?3次下載
    <b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>安全手冊

    UM2492_從STM32G4系列STM32CubeG4開始的用戶手冊

    UM2492_從STM32G4系列STM32CubeG4開始的用戶手冊
    發表于 11-22 08:21 ?4次下載
    UM2492_從<b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>的<b class='flag-5'>STM32CubeG4</b>開始的用戶手冊

    STM32G4電機驅動實例

    電子發燒友網站提供《STM32G4電機驅動實例.pdf》資料免費下載
    發表于 07-31 17:00 ?9次下載
    <b class='flag-5'>STM32G4</b>電機驅動實例

    STM32G4 應用程序與 Option Bytes 同時燒錄問題

    STM32G4 應用程序與 Option Bytes 同時燒錄問題
    的頭像 發表于 09-28 18:02 ?910次閱讀
    <b class='flag-5'>STM32G4</b> 應用程序與 Option Bytes 同時燒錄問題

    STM32G4市場和特性篇

    電子發燒友網站提供《STM32G4市場和特性篇.pdf》資料免費下載
    發表于 09-19 14:44 ?1次下載
    <b class='flag-5'>STM32G4</b>市場和特性篇