0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32G4系列存儲(chǔ)訪問的兩個(gè)小話題

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

一、有關(guān)CCM訪問地址的話題

有用過STM32F4系列部分芯片或STM32F334芯片的人,可能知道片內(nèi)有個(gè)CCM【Core Coupled Memory】區(qū)域,從芯片系統(tǒng)框圖結(jié)合文字說明,可以清晰知道這個(gè)區(qū)域僅能被CPU訪問,常用來存放些對執(zhí)行效率敏感的關(guān)鍵性的代碼或數(shù)據(jù)。也就是說對于這兩個(gè)系列的CCM區(qū)域,DMA是訪問不了的。

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

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

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

到了STM32G4系列,里面依然也有CCM這個(gè)區(qū)域。見下面STM32G4系統(tǒng)框架圖。

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

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

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

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

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

那么這兩個(gè)地址空間怎么用,或者說區(qū)別是什么呢?

當(dāng)為了充分發(fā)揮CPU對這塊區(qū)域的訪問效能時(shí)就使用0x1000 0000開始的地址空間,此時(shí)CPU通過ICode總線訪問這個(gè)區(qū)域。這塊地址空間DMA是訪問不了的,屬CPU專訪區(qū)。

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

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

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

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

二、有關(guān)位帶操作的話題

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

要問STM32某個(gè)系列是否支持位帶操作,首先得看看相關(guān)STM32系列所用ARM內(nèi)核是否支持位帶操作。如果內(nèi)核本身就不支持位帶功能,STM32是不會(huì)支持該功能的。反之,如果相關(guān)ARM核支持位帶操作,基于該核的STM32系列一般都會(huì)支持位帶操作,而且在相關(guān)STM32參考手冊里一定會(huì)明確說明?!酒鋵?shí),第三方芯片設(shè)計(jì)者在基于ARM核設(shè)計(jì)、集成芯片時(shí),對于內(nèi)核的部分功能或者核外設(shè)是有取舍權(quán)的?!?/p>

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

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

這里的位帶區(qū)特指一段片內(nèi)SRAM空間和外設(shè)寄存器空間。位帶區(qū)的SRAM里的每一位或外設(shè)寄存器的每一位都可以通過訪問相應(yīng)的另外一段地址空間的一個(gè)字實(shí)現(xiàn)讀寫操作,這個(gè)另外一段地址空間就稱之為位帶區(qū)的別名區(qū)。

不過,在STM32參考手冊里,針對位帶操作的介紹相對比較簡單,主要是因?yàn)锳RM內(nèi)核相關(guān)手冊有較為詳細(xì)的描述。STM32參考手冊里主要就如何計(jì)算別名區(qū)的地址做了個(gè)演示,并提示閱讀相關(guān)ARM 內(nèi)核手冊。

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

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

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

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

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

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

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

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

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

關(guān)于位帶操作的介紹就聊到這里,順便給幾點(diǎn)提醒:

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

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

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

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

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10804

    瀏覽量

    210828
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354291
  • CCM
    CCM
    +關(guān)注

    關(guān)注

    0

    文章

    144

    瀏覽量

    23898
  • STM32F334
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    4781

原文標(biāo)題:STM32G4系列存儲(chǔ)訪問的兩個(gè)小話題

文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32G4 UART+TIMER+DMA應(yīng)用示例

    這里使用STM32G4系列Nucleo開發(fā)板演示如下需求的實(shí)現(xiàn)過程。
    的頭像 發(fā)表于 11-27 10:42 ?1995次閱讀
    <b class='flag-5'>STM32G4</b> UART+TIMER+DMA應(yīng)用示例

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

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

    如何使用STM32G4系列微控制器存儲(chǔ)器和外設(shè)

    本參考手冊面向應(yīng)用程序開發(fā)人員。它提供了有關(guān)如何使用STM32G4系列微控制器存儲(chǔ)器和外設(shè)的完整信息。
    發(fā)表于 11-24 07:51

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

    基于Arm?(a)內(nèi)核的STM32L4、STM32L4+和STM32G4系列微控制器采用多種機(jī)制,可對全存儲(chǔ)器或特定段進(jìn)行讀寫保護(hù)。讀保護(hù)用
    發(fā)表于 09-07 07:45

    如何使用STM32G4系列微控制器存儲(chǔ)器和外圍設(shè)備

    本參考手冊面向應(yīng)用程序開發(fā)人員。它提供了關(guān)于如何使用STM32G4系列微控制器存儲(chǔ)器和外圍設(shè)備。 STM32G4系列是一
    發(fā)表于 09-08 06:59

    STM32G4片內(nèi)不同存儲(chǔ)空間運(yùn)行的速度差異

    息息相關(guān)。我這里設(shè)計(jì)了一個(gè)小測試程序做了下簡單比較,以供參考。 我們不妨先看看STM32G4系列內(nèi)部系統(tǒng)框架圖。下圖是STM32G4芯片的系統(tǒng)框架圖,我將測試程序放在圖中三
    的頭像 發(fā)表于 09-09 09:57 ?2161次閱讀
    在<b class='flag-5'>STM32G4</b>片內(nèi)不同<b class='flag-5'>存儲(chǔ)</b>空間運(yùn)行的速度差異

    STM32G4 系列壽命估算

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

    AN5306_OPAMP在STM32G4系列中的應(yīng)用

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

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

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

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

    AN5310_使用STM32F3系列STM32G4系列設(shè)備的模擬特性指南
    發(fā)表于 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>設(shè)備的模擬特性指南

    STM32G4系列安全手冊

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

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

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

    STM32G4電機(jī)驅(qū)動(dòng)實(shí)例

    電子發(fā)燒友網(wǎng)站提供《STM32G4電機(jī)驅(qū)動(dòng)實(shí)例.pdf》資料免費(fèi)下載
    發(fā)表于 07-31 17:00 ?9次下載
    <b class='flag-5'>STM32G4</b>電機(jī)驅(qū)動(dòng)實(shí)例

    STM32G4 應(yīng)用程序與 Option Bytes 同時(shí)燒錄問題

    STM32G4 應(yīng)用程序與 Option Bytes 同時(shí)燒錄問題
    的頭像 發(fā)表于 09-28 18:02 ?1012次閱讀
    <b class='flag-5'>STM32G4</b> 應(yīng)用程序與 Option Bytes 同時(shí)燒錄問題

    STM32G4市場和特性篇

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