衡阳派盒市场营销有限公司

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

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

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

STM32H7實(shí)現(xiàn)BootLoader內(nèi)SDRAM的初始化注意事項(xiàng)

冬至子 ? 來(lái)源:喵小黑 ? 作者:喵小黑 ? 2023-06-07 15:51 ? 次閱讀

Bootloader

Board:STM32H750_ArtPi

Function Implementation:在 ArtPi 的環(huán)境下,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 BootLoader,該 BootLoader 實(shí)現(xiàn)了 QSPI 和 SDRAM 功能的初始化,使 App 可以運(yùn)行在 QSPI 中,并且可以將 SDRAM 當(dāng)做普通的內(nèi)部 RAM 使用(但需要注意,仍需要添加 SCB_InvalidateDCache 和 SCB_CleanDCache 等函數(shù)來(lái)更新緩存,類(lèi)似于對(duì) AXI SRAM 的操作)。

BootLoader和App實(shí)現(xiàn)教程:安富萊_STM32-V7開(kāi)發(fā)板_用戶手冊(cè),含BSP驅(qū)動(dòng)包設(shè)計(jì)(V3.5)

注意事項(xiàng)

在 BootLoader 中進(jìn)行了 MPU 的配置,在 App 中,就無(wú)需重復(fù)配置;

在 BootLoader 中,最好禁用 I-Cache 和 D-Cache(實(shí)際上,我看了一下硬漢的部分代碼,實(shí)際上,并不強(qiáng)求一定要禁用 I-Cache 和 D-Cache,應(yīng)該還是根據(jù)自己的需求來(lái)決定是開(kāi)啟還是關(guān)閉);

在 BootLoader 中,配置了 FMC,在 App 中,需要注釋以下這段代碼:

/*

Disable the FMC bank1 (enabled after reset).

This, prevents CPU speculation access on this bank which blocks the use of FMC during

24us. During this time the others FMC master (such as LTDC) cannot use it!

*/

// FMC_Bank1_R->BTCR[0] = 0x000030D2;

1.jpg

此段代碼位于 system_stm32h7xx.h 中,在進(jìn)入 main 函數(shù)前執(zhí)行,因此在 main 函數(shù)中進(jìn)行 Debug 可能無(wú)法發(fā)現(xiàn)此問(wèn)題。(群友發(fā)現(xiàn)的問(wèn)題)

寄存器地址為 0x52004000,對(duì)應(yīng) SRAM/NOR-Flash 片選控制寄存器 1(FMC_BCR1)。

#define PERIPH_BASE (0x40000000UL) /*!< Base address of : AHB/APB Peripherals */

#define D1_AHB1PERIPH_BASE (PERIPH_BASE + 0x12000000UL)

#define FMC_R_BASE (D1_AHB1PERIPH_BASE + 0x4000UL)

/* !< FMC Banks registers base address */

#define FMC_Bank1_R_BASE (FMC_R_BASE + 0x0000UL)

#define FMC_Bank1_R ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE)

1.jpg

FMC_BCR1 = 0x000030D2; 的作用可以參考 RM0433 22.7.6 節(jié),我們主要關(guān)注以下內(nèi)容:

FMCEN = 0:禁止 FMC 控制器,F(xiàn)MC_BCR2..4 寄存器的 FMCEN 位為“無(wú)關(guān)”位,只能通過(guò) FMC_BCR1 寄存器使能 ;

在未注釋此行代碼時(shí),F(xiàn)MC Bank1會(huì)被關(guān)閉(復(fù)位后啟用),阻止 24 \\mu s24μs 內(nèi)的 FMC 的使用,這會(huì)導(dǎo)致 MemMange 錯(cuò)誤,導(dǎo)致程序進(jìn)入 MemMange_Handler(可能會(huì)被誤認(rèn)為是 BootLoader 未成功跳轉(zhuǎn),但其實(shí)是跳轉(zhuǎn)了,然后立即產(chǎn)生總線錯(cuò)誤)。有趣的是,如果在 BootLoader 內(nèi),對(duì) SDRAM 進(jìn)行一次讀或?qū)懖僮鳎瑒t不會(huì)產(chǎn)生該報(bào)警錯(cuò)誤。

未進(jìn)行讀寫(xiě)操作,App 進(jìn)入 MemMange_Handler

1.jpg

進(jìn)行讀寫(xiě)操作,App 不進(jìn)入MemMange_Handler

1.jpg

在完成以上配置后,就可以在 App 中,像內(nèi)置 RAM 一樣使用 SDRAM。

先在 LinkerScript 內(nèi)添加以下內(nèi)容(UNINIT 確保該內(nèi)存區(qū)域不會(huì)被初始化為 0):

RW_IRAM7 0xC0000000 UNINIT 0x02000000 { ; RW data - 32MB SDRAM(0xC0000000)

*(.RAM_SDRAM)

}

使用如下:

uint32_t testValue attribute ((section(".RAM_SDRAM")));

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

    關(guān)注

    0

    文章

    96

    瀏覽量

    19758
  • SDRAM控制器
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    8188
  • 控制寄存器
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    11523
  • QSPI接口
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    3408
  • stm32h7
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    1753
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    介紹STM32H7內(nèi)置的系統(tǒng)bootloader的基礎(chǔ)知識(shí)

    第67章 STM32H7的系統(tǒng)bootloader基礎(chǔ)知識(shí)本章為大家介紹STM32H7內(nèi)置的系統(tǒng)bootloader的基礎(chǔ)知識(shí)。目錄第67章 STM
    發(fā)表于 08-11 08:10

    STM32H7系列芯片及bootloader引導(dǎo)程序

    最近公司開(kāi)發(fā)的一個(gè)項(xiàng)目使用到STM32H7系列芯片,由于該系列芯片內(nèi)部flash只有128k,為了方便產(chǎn)品的遠(yuǎn)程升級(jí),需要開(kāi)發(fā)對(duì)應(yīng)的升級(jí)協(xié)議及bootloader引導(dǎo)程序。由于片內(nèi)flash容量不夠
    發(fā)表于 08-13 08:47

    Stm32bootloader和App的編寫(xiě)注意事項(xiàng)有哪些?

    Stm32bootloader和App的編寫(xiě)注意事項(xiàng)有哪些?如何使用STM32F4的BootLoader和APP程序?
    發(fā)表于 10-29 07:35

    STM32H750_FMC_SDRAM初始化流程是怎樣的?

    STM32H750_FMC_SDRAM初始化流程是怎樣的?
    發(fā)表于 02-22 06:59

    STM32H7教程】第19章 STM32H7的GPIO應(yīng)用之按鍵FIFO

    STM32H7教程】第19章 STM32H7的GPIO應(yīng)用之按鍵FIFO
    發(fā)表于 11-23 18:21 ?9次下載
    【<b class='flag-5'>STM32H7</b>教程】第19章 <b class='flag-5'>STM32H7</b>的GPIO應(yīng)用之按鍵FIFO

    STM32H7學(xué)習(xí)之路繼續(xù)(stm32H7系列3) GPIO

    STM32H7學(xué)習(xí)之路繼續(xù)(stm32H7系列3) GPIO
    發(fā)表于 11-30 12:36 ?20次下載
    <b class='flag-5'>STM32H7</b>學(xué)習(xí)之路繼續(xù)(<b class='flag-5'>stm32H7</b>系列3)  GPIO

    STM32H7教程】第21章 STM32H7的NVIC中斷分組和配置(重要)

    STM32H7教程】第21章 STM32H7的NVIC中斷分組和配置(重要)
    發(fā)表于 12-04 14:36 ?13次下載
    【<b class='flag-5'>STM32H7</b>教程】第21章 <b class='flag-5'>STM32H7</b>的NVIC中斷分組和配置(重要)

    "STM32H7學(xué)習(xí)繼續(xù)(STM32H7系列5)第十七章比較實(shí)用,以后寫(xiě)程序的時(shí)候會(huì)用到"

    "STM32H7學(xué)習(xí)繼續(xù)(STM32H7系列5)第十七章比較實(shí)用,以后寫(xiě)程序的時(shí)候會(huì)用到"
    發(fā)表于 12-05 11:21 ?9次下載
    "<b class='flag-5'>STM32H7</b>學(xué)習(xí)繼續(xù)(<b class='flag-5'>STM32H7</b>系列5)第十七章比較實(shí)用,以后寫(xiě)程序的時(shí)候會(huì)用到"

    STM32H7教程】第8章 STM32H7的終極調(diào)試組件Event Recorder

    STM32H7教程】第8章 STM32H7的終極調(diào)試組件Event Recorder
    發(fā)表于 12-05 20:06 ?7次下載
    【<b class='flag-5'>STM32H7</b>教程】第8章 <b class='flag-5'>STM32H7</b>的終極調(diào)試組件Event Recorder

    STM32H7教程】第14章 STM32H7的電源,復(fù)位和時(shí)鐘系統(tǒng)

    STM32H7教程】第14章 STM32H7的電源,復(fù)位和時(shí)鐘系統(tǒng)
    發(fā)表于 12-09 11:21 ?36次下載
    【<b class='flag-5'>STM32H7</b>教程】第14章 <b class='flag-5'>STM32H7</b>的電源,復(fù)位和時(shí)鐘系統(tǒng)

    STM32H750_FMC_SDRAM 初始化流程總結(jié)

    STM32H750_FMC_SDRAM使用STM32CUBEMX 初始化FMC部分,SDRAM 關(guān)于延時(shí)部分參數(shù)模式寄存器#define SDRAM
    發(fā)表于 12-29 18:49 ?2次下載
    <b class='flag-5'>STM32H750_FMC_SDRAM</b> <b class='flag-5'>初始化</b>流程總結(jié)

    AN5293 STM32F7系列移植到STM32H7系列

    AN5293 STM32F7系列移植到STM32H7系列
    發(fā)表于 11-21 17:06 ?1次下載
    AN5293 <b class='flag-5'>STM32F7</b>系列移植到<b class='flag-5'>STM32H7</b>系列

    STM32H7技術(shù)詳解

    電子發(fā)燒友網(wǎng)站提供《STM32H7技術(shù)詳解.pdf》資料免費(fèi)下載
    發(fā)表于 08-01 14:49 ?5次下載
    <b class='flag-5'>STM32H7</b>技術(shù)詳解

    不能連接上STM32H7芯片

    不能連接上STM32H7芯片
    的頭像 發(fā)表于 09-18 10:58 ?1503次閱讀
    不能連接上<b class='flag-5'>STM32H7</b>芯片

    STM32H7雙核CM4作為Master初始化系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《STM32H7雙核CM4作為Master初始化系統(tǒng).pdf》資料免費(fèi)下載
    發(fā)表于 09-20 09:13 ?0次下載
    <b class='flag-5'>STM32H7</b>雙核CM4作為Master<b class='flag-5'>初始化</b>系統(tǒng)
    百家乐官网第三张规则| 百家乐澳门规矩| 威尼斯人娱乐场wnsrdcylcbywz| 17pk棋牌游戏| 网上百家乐官网正规代理| 澳门百家乐有限公司| 大发888游戏网站| 百家乐官网开户优惠多的平台是哪家 | 赌场百家乐官网试玩| 网络百家乐必胜投注方法| 日博娱乐| 风水24山读法| 大发888官网客户端| 真人百家乐官网蓝盾娱乐网| 巴黎人百家乐的玩法技巧和规则| 嘉祥县| 金冠百家乐娱乐城| 娱乐城开户送真钱200| 现场百家乐官网的玩法技巧和规则| 自贡百家乐赌| 在线百家乐官网技巧| 澳门百家乐官网网站| 百家乐官网娱乐用品| 百家乐官网任你博娱乐平台| 百家乐几点不用补牌| 百家乐官网辅助分析软件| 百家乐大白菜| 百家乐官网对子计算方法| 百家乐娱乐官网网| 百家乐官网怎么样投注| 百家乐太阳城真人游戏| 棋牌百家乐官网怎么玩| 百家乐专用台布| 百家乐官网送彩金平台| 百家乐投注外围哪里好| 缅甸百家乐官网赌博现场下载| 嘉兴太阳城大酒店| 临潭县| 百家乐百博| 百家乐官网破解版| 高额德州扑克视频|