有STM32用戶反饋,他在使用STM32H750VB編寫用戶引導(dǎo)程序【BOOT CODE】和應(yīng)用程序【APP CODE】。根據(jù)數(shù)據(jù)手冊描述,STM32H750有128K Bytes的片內(nèi)flash,地址是從0x0800 0000~~0x0801 FFFF。他將用戶bootloader放在0x0800 0000~0x0800 2FFF,應(yīng)用程序放在0x08003000~0x0801 FFFF。但當(dāng)他按照這樣的存儲分配設(shè)計時,發(fā)現(xiàn)總是沒法實現(xiàn)從BOOT區(qū)到APP區(qū)的跳轉(zhuǎn)。
基于該用戶的反饋信息,給他做了些提醒,比如中斷矢量表定位問題,客戶都說已經(jīng)注意到了,代碼應(yīng)該沒有問題。我這邊就客戶反饋的問題找了塊STM32H743的板做了驗證測試。發(fā)現(xiàn)從BOOT區(qū)到APP區(qū)的跳轉(zhuǎn)并沒有異常,那么客戶怎么又有問題呢?
再次查看了客戶郵件的反饋信息。他用的默認(rèn)內(nèi)部SRAM區(qū)為AXI SRAM,地址區(qū)間在0x24000000 --0x2407FFFF,即下面表格中的A區(qū),而我使用的默認(rèn)內(nèi)部SRAM區(qū)是DTCM SRAM,地址區(qū)間在0x20000000 -0x2001FFFF,即下面表格中的B區(qū)。

難道是這個差別導(dǎo)致跳轉(zhuǎn)的不同結(jié)果?當(dāng)然,這兩個SRAM區(qū)在使用上還是有差異的。
我嘗試著將測試工程的默認(rèn)SRAM區(qū)從TCM RAM也改成AXI SRAM進(jìn)行測試。果真沒法實現(xiàn)從BOOT區(qū)到APP區(qū)的跳轉(zhuǎn)!看來跳轉(zhuǎn)失敗跟選擇這個默認(rèn)SRAM區(qū)有關(guān)系。也就是說當(dāng)我默認(rèn)使用DTCM RAM時跳轉(zhuǎn)正常,如果默認(rèn)使用AXI SRAM時會跳轉(zhuǎn)失敗。

我們知道,STM32H7系列芯片支持D-CACHE/I-CACHE。具體到這里,如果使用AXI SRAM往往會用到D-CACHE。我們的工程代碼里也的確開啟了D-CACHE,如果是因為這個原因,如果在做跳轉(zhuǎn)操作之前關(guān)閉D-CACHE應(yīng)該就能實現(xiàn)正常跳轉(zhuǎn)。 于是對代碼稍加調(diào)整,實際上也就是加了句關(guān)閉D-CACHE的代碼?!炯t色方框處】


再次進(jìn)行測試,此時即使使用AXI RAM做為默認(rèn)內(nèi)存空間,從用戶BOOT區(qū)也能可靠跳轉(zhuǎn)到APP區(qū),完美實現(xiàn)。
這里涉及到STM32H7系列芯片內(nèi)部不同存儲區(qū)的訪問特性和D-Cache相關(guān)知識,細(xì)節(jié)還是挺多的。有興趣的話,可以自行查看相關(guān)技術(shù)手冊做進(jìn)一步的了解和探究。有時間,后續(xù)將在這里做進(jìn)一步交流。此時分享該應(yīng)用案例,一做應(yīng)用提醒,二做拋磚引玉。
-
芯片
+關(guān)注
關(guān)注
463文章
54040瀏覽量
466514 -
STM32
+關(guān)注
關(guān)注
2310文章
11166瀏覽量
373611
原文標(biāo)題:一個STM32H7芯片IAP跳轉(zhuǎn)失敗的案例
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
CW32L083 IAP跳轉(zhuǎn)后中斷無響應(yīng)是什么原因?
STM32H7S78-DK探索套件深度解析與技術(shù)應(yīng)用指南
RTthread 4.1 stm32h7系列不支持pwm要怎么處理?
從 rtthread studio 上拉下來的 stm32h7 FDACN 驅(qū)動調(diào)不通是哪里的問題?
rt thread studio編寫STM32H7不能使用V2版串口驅(qū)動是怎么回事?
STM32H7使用HAL庫如何控制外置USB HS PHY進(jìn)入低功耗?
求助,關(guān)于stm32H7多DMA數(shù)據(jù)流問題求解
IAP升級跳轉(zhuǎn)APP跳轉(zhuǎn)Boot失敗了怎么解決?
AT32 IAP using the USART
有沒有哪位大神提供一個STM32H523或者STM32H563的串口升級的IAP程序?
STM32H7CubeMX配置硬件I2C,讀寫失敗是什么問題呀?
STM32H743VIT6 ST單片機(jī) 參數(shù)及應(yīng)用場景
探究STM32H7芯片IAP跳轉(zhuǎn)失敗案例
評論