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

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

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

探究STM32H7芯片IAP跳轉(zhuǎn)失敗案例

茶話MCU ? 來(lái)源:cc ? 2019-02-26 15:32 ? 次閱讀

STM32用戶反饋,他在使用STM32H750VB編寫用戶引導(dǎo)程序【BOOT CODE】和應(yīng)用程序【APP CODE】。根據(jù)數(shù)據(jù)手冊(cè)描述,STM32H750有128K Bytes的片內(nèi)flash,地址是從0x0800 0000~~0x0801 FFFF。他將用戶bootloader放在0x0800 0000~0x0800 2FFF,應(yīng)用程序放在0x08003000~0x0801 FFFF。但當(dāng)他按照這樣的存儲(chǔ)分配設(shè)計(jì)時(shí),發(fā)現(xiàn)總是沒法實(shí)現(xiàn)從BOOT區(qū)到APP區(qū)的跳轉(zhuǎn)。

基于該用戶的反饋信息,給他做了些提醒,比如中斷矢量表定位問題,客戶都說(shuō)已經(jīng)注意到了,代碼應(yīng)該沒有問題。我這邊就客戶反饋的問題找了塊STM32H743的板做了驗(yàn)證測(cè)試。發(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ū)。

難道是這個(gè)差別導(dǎo)致跳轉(zhuǎn)的不同結(jié)果?當(dāng)然,這兩個(gè)SRAM區(qū)在使用上還是有差異的。

我嘗試著將測(cè)試工程的默認(rèn)SRAM區(qū)從TCM RAM也改成AXI SRAM進(jìn)行測(cè)試。果真沒法實(shí)現(xiàn)從BOOT區(qū)到APP區(qū)的跳轉(zhuǎn)!看來(lái)跳轉(zhuǎn)失敗跟選擇這個(gè)默認(rèn)SRAM區(qū)有關(guān)系。也就是說(shuō)當(dāng)我默認(rèn)使用DTCM RAM時(shí)跳轉(zhuǎn)正常,如果默認(rèn)使用AXI SRAM時(shí)會(huì)跳轉(zhuǎn)失敗。

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

再次進(jìn)行測(cè)試,此時(shí)即使使用AXI RAM做為默認(rèn)內(nèi)存空間,從用戶BOOT區(qū)也能可靠跳轉(zhuǎn)到APP區(qū),完美實(shí)現(xiàn)。

這里涉及到STM32H7系列芯片內(nèi)部不同存儲(chǔ)區(qū)的訪問特性和D-Cache相關(guān)知識(shí),細(xì)節(jié)還是挺多的。有興趣的話,可以自行查看相關(guān)技術(shù)手冊(cè)做進(jìn)一步的了解和探究。有時(shí)間,后續(xù)將在這里做進(jìn)一步交流。此時(shí)分享該應(yīng)用案例,一做應(yīng)用提醒,二做拋磚引玉。

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

    關(guān)注

    456

    文章

    51019

    瀏覽量

    425366
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356746

原文標(biāo)題:一個(gè)STM32H7芯片IAP跳轉(zhuǎn)失敗的案例

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    stm32H7 HAL庫(kù)中存在的bug

    stm32H7 hal 庫(kù)里面的以太網(wǎng)代碼,坑了魚鷹很多次(不知道最新版是否已經(jīng)修復(fù)了這些bug),這里分享一篇網(wǎng)上的文章,因?yàn)轸~鷹也遇到過(guò),靠它解決了其中一個(gè)編譯優(yōu)化問題,在此感謝作者。不過(guò)hal
    的頭像 發(fā)表于 08-12 17:37 ?1286次閱讀

    請(qǐng)問stm32h7系列怎么跑linux呢?

    stm32h7系列怎么跑linux?
    發(fā)表于 07-03 08:04

    STM32H7系列芯片發(fā)不出去的hello問題

    有人使用STM32H7系列芯片,用到UART做字符串輸出時(shí)遇到點(diǎn)小問題。這里一起聊聊該問題,并分析問題原因。
    的頭像 發(fā)表于 07-01 09:56 ?1529次閱讀
    <b class='flag-5'>STM32H7</b>系列<b class='flag-5'>芯片</b>發(fā)不出去的hello問題

    如何用STM32H7 SPI驅(qū)動(dòng)DAC芯片(非板上內(nèi)置DAC)生成正弦波?

    我想用STM32H7用SPI 驅(qū)動(dòng)DAC 芯片(非板上內(nèi)置DAC)生成正弦波,有合適的例程或者思路給我借鑒嗎
    發(fā)表于 05-31 06:35

    STM32H7的HRTIM可以生成12路的PWM嗎?

    STM32H7的HRTIM可以生成12路的PWM嗎,想做數(shù)字電源,控制三相NPC逆變器
    發(fā)表于 05-23 07:19

    STM32F1 IAP操作讀保護(hù)選項(xiàng)字節(jié)設(shè)置,APP使用系統(tǒng)復(fù)位跳轉(zhuǎn)后無(wú)法運(yùn)行IAP的原因?

    最近調(diào)試一個(gè)程序,是基于STM32F1做的IAP,升級(jí)前后需要修改選項(xiàng)字節(jié),F(xiàn)LASH_EraseOptionBytes函數(shù)內(nèi)OB->RDP=RDP_Key語(yǔ)句實(shí)現(xiàn)讀保護(hù)的解除,如果我
    發(fā)表于 05-13 08:09

    請(qǐng)問STM32H7是否支持Trace功能?

    報(bào) “Trace HW not present”這個(gè)錯(cuò)誤。stm32H7的dataSheet是明確表示該內(nèi)核是有Trace功能的,是不是哪里設(shè)置有問題?
    發(fā)表于 04-25 07:38

    IAP跳轉(zhuǎn)APP開始可以,如果從APP跳回IAP后再跳到APP失敗的原因?

    IAP 跳轉(zhuǎn)APP 開始可以,但如果從APP跳回IAP后,再跳到APP失敗。 我是按照 下面ST官方文檔來(lái)的: AN4657 Application note
    發(fā)表于 04-23 07:24

    STM32H7系列目前有沒有支持h264編解碼?fps大概為多少?

    STM32H7系列目前有沒有支持h264編解碼,fps大概為多少?
    發(fā)表于 04-07 06:06

    使用LL庫(kù)生成STM32H7代碼時(shí)存在報(bào)錯(cuò)是什么原因?qū)е碌模?/a>

    使用LL庫(kù)生成STM32H7代碼時(shí)存在的BUG
    發(fā)表于 04-03 07:33

    STM32H7讀外部SRAM首次成功,之后保持不變是為什么?

    STM32H743讀外部SRAM 芯片,首次讀成功后,無(wú)法再次讀取新的數(shù)據(jù),使用示波器對(duì)STM32H7引腳進(jìn)行測(cè)量,發(fā)現(xiàn)無(wú)波形輸出。調(diào)試過(guò)程中,在程序中打個(gè)斷點(diǎn),就每次可以正常讀取。
    發(fā)表于 03-27 06:13

    Stm32H7 spi會(huì)帶來(lái)更大的adc噪聲,導(dǎo)致小信號(hào)異常值的原因?

    [Stm32H7]spi會(huì)帶來(lái)更大的adc噪聲,導(dǎo)致小信號(hào)異常值
    發(fā)表于 03-25 06:10

    如何用STM32H7的EXTI0同步觸發(fā)SPI DMA雙緩沖?

    請(qǐng)教:有沒有朋友用STM32H7 的EXTI0同步觸發(fā)SPI DMA雙緩沖的,指教一下
    發(fā)表于 03-14 08:22

    STM32H7 MCO可以設(shè)置輸出頻率為4.096Mhz的時(shí)鐘嗎?

    想有STM32H7 MCO 可以設(shè)置輸出頻率為4.096Mhz給外部ADC提供時(shí)鐘,請(qǐng)問下MCO 可以設(shè)置輸出為4.096Mhz?如何配置?
    發(fā)表于 03-14 06:19

    STM32H7的工程出現(xiàn)找不到rtconfig.h的錯(cuò)誤如何解決?

    舊工程是能正常編譯和運(yùn)行的。在拉取最新代碼后,編譯出錯(cuò),提示有些宏定義缺失。進(jìn)入menuconfig配置后,AT32的工程是能正常編譯的,STM32H7的工程出現(xiàn)找不到rtconfig.h的錯(cuò)誤
    發(fā)表于 03-05 07:12