在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

為什么STM32的Flash地址要設置到0x08000000?

jf_pJlTbmA9 ? 來源: 安富萊電子 ? 作者: 安富萊電子 ? 2023-10-26 15:50 ? 次閱讀

我們言簡意賅的普及下這個知識點,爭取讓大家不傷腦細胞。

背景知識

M3,M4內核芯片上電復位后,要固定從0x0000 0000地址讀取中斷向量表,獲取復位中斷服務程序的入口地址后,進入復位中斷服務程序,其中0x0000 0004存的是復位中斷服務程序地址。

wKgaomUD9GOAZn2yAAB5V6dMy-4636.png
wKgZomUD9GSATkOrAADM0x2qgC4165.png

引出問題

既然ARM規定了M3,M4內核要從地址0x0000 0000讀取中斷向量表,而STM32設置Flash地址到0x0800 0000怎么辦?

STM32支持了個內存重映射功能,將地址0x0800 0000開始的內容重映射到首地址0x0000 0000中,這樣就解決了從0x0000 0000讀取中斷向量表的問題。
那么新的問題來:

(1) 你怎么保證0x08000 0000首地址存的就是中斷向量表,我們不可以隨意設置嗎?

保證中斷向量表存到0x0800 0000,這個涉及到分散加載的一個小知識,以MDK為例,如果大家看xxx.S啟動文件,里面通過AREA定義了一個名叫RESET的段,這段存的就是中斷向量表。

wKgZomUD9GaADtqfAAAzyOR8d1E465.png

這個名字很重要,MDK對應的xxx.sct分散加載里面通過下面這句將這個RESET段放在了0x0800 0000優先存儲。

wKgaomUD9GiATueXAACo_e3Z5tc776.png

這樣我們就解決了0x0800 0000首地址存儲中斷向量表,一旦程序開始運行后,我們就可以隨意設置中斷向量表的位置了。比如想將中斷向量表存到內部SRAM,我們就可以操作寄存器SCB->VTOR 重新安排,然后將0x0800 0000的內容復制到設置的地址內即可。

(2) 既然設置到0x0800 0000這么麻煩,為什么不直接使用0x0000 0000?

這是因為STM32不僅可以從內部Flash啟動,還可以從系統存儲器(可以實現串口ISP,USB DFU等程序下載方式)和從內部SRAM啟動,

我們將內部Flash安排到0x0000 0000顯然是不行的。這樣會導致系統存儲器或者內部SRAM無法重映射到0x0000 0000了。

wKgZomUD9GmAcLSYAABsirUgcb4693.png

了解了M3和M4,使用M7是怎么個執行情況呢?

M7內核芯片比較靈活了,改變了固定從0x0000 0000地址讀取中斷向量表的問題,以STM32H7為例,可以從 0x0000 0000 到 0x3FFF 0000 所有地址進行啟動。

專門安排了個選項字節來配置。

wKgZomUD9GuAHA9xAADlx7ZZEHo189.png

來源: 安富萊電子
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理

審核編輯 黃宇

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

    關注

    456

    文章

    51157

    瀏覽量

    426587
  • FlaSh
    +關注

    關注

    10

    文章

    1642

    瀏覽量

    148512
  • STM32
    +關注

    關注

    2271

    文章

    10923

    瀏覽量

    357243
收藏 人收藏

    評論

    相關推薦

    STM32F103的Flash擦除問題

    _FLAG_WRPRTERR);/* 擦除FLASH 頁*/FLASHStatus = FLASH_ErasePage((uint32_t)0x08000000);while(FLASHStatus
    發表于 08-30 18:19

    STM32升級程序里的0x08000000不是加載地址,而是中斷向量入口地址,這是為什么?如何解決?

    ;0xFF000000這里的與操作是怎么執行的,最后怎么就出來0x08000000了,還有地址這個東西怎么理解比較好,他是不是代表的是一片內存的名字呢?問題有點多。。。請大神解釋一下下。。。 串口接收過來的數據,是從
    發表于 07-02 00:19

    stm32f030如果我將起始地址0x08000000更改為0x08003000,則Usart不工作

    stm32f030如果我將起始地址0x08000000更改為0x08003000,則Usart不工作。我的意思是Usart Interrupt沒有發生。 Usart處于半雙工模式。
    發表于 06-21 16:08

    資料下載:STM32Flash地址0x08000000,從0x00000000不可以?

    這里寫自定義目錄標題為什么STM32Flash地址0x08000000的啟動而不是0x00000000?這是
    發表于 07-01 08:47

    為什么STM32Flash地址0x08000000的啟動而不是0x00000000

    STM32F103ZE芯片存儲空間的地址映射關系是怎樣的?為什么STM32Flash地址0x08000
    發表于 10-22 09:35

    嵌入式軟件如何利用內部flash存儲參數?

    ,參數存儲在內部flash中,畢竟就算每片減少一塊錢,量大后還是非常可觀的。02選擇參數存儲位置stm32flash地址起始于0x08000000
    發表于 11-25 08:52

    STM32Flash地址設置0x08000000的原因

    08000 0000首地址存的就是中斷向量表,我們不可以隨意設置嗎?(2) 既然設置0x0800 0000這么麻煩,為什么不直接使用
    發表于 02-07 08:00

    如何在STM32F769中將程序起始地址0x08000000更改為0x08020000?

    STM32F769中將程序起始地址0x08000000更改為0x08020000
    發表于 12-13 08:43

    有沒有辦法在不擦除不在起始地址0x08000000處的其余閃存的情況下調試某些代碼?

    使用 STM32 ST-LINK Utility 對微控制器進行編程。我能夠在第一個項目(從 0x08000000 開始)中進入調試模式,而無需通過在調試配置 -> 啟動中禁用“下載”來擦除閃存
    發表于 01-11 07:12

    基于STM32F407的flash內存結構分析

    ,這里你可能看到了,該片存儲區地址是從0x08000000開始的,這也就是為什么我們在使用ST-Link2燒寫程序的時候,規定起始地址0x080
    發表于 06-14 10:11 ?1w次閱讀
    基于<b class='flag-5'>STM32</b>F407的<b class='flag-5'>flash</b>內存結構分析

    微處理器IAP技術中是如何融合rfid技術的

    STM32位處理器IAP功能與51單片機系統大體相似,需要設置程序起始位置,引導程序必須設置Flash地址
    發表于 01-16 17:50 ?1186次閱讀
    微處理器IAP技術中是如何融合rfid技術的

    嵌入式軟件中利用內部flash存儲參數的方法

    ,參數存儲在內部flash中,畢竟就算每片減少一塊錢,量大后還是非常可觀的。02選擇參數存儲位置stm32flash地址起始于0x08000000
    發表于 11-16 18:21 ?18次下載
    嵌入式軟件中利用內部<b class='flag-5'>flash</b>存儲參數的方法

    STM32CUBEIDE中修改FLASH起始地址的方法

    ,使用USB-DFU約需要32KB的FLASH(從0x08000000-0x08007FFF),則用戶的應用程序應當從0x08008000-0x08010000,故將程序偏移量應當設置
    發表于 12-01 20:51 ?12次下載
    <b class='flag-5'>STM32</b>CUBEIDE中修改<b class='flag-5'>FLASH</b>起始<b class='flag-5'>地址</b>的方法

    STM32Flash地址0x08000000,從0x00000000不可以?

    這里寫自定義目錄標題為什么STM32Flash地址0x08000000的啟動而不是0x00000000?這是
    發表于 12-02 11:51 ?3次下載
    <b class='flag-5'>STM32</b>的<b class='flag-5'>Flash</b><b class='flag-5'>地址</b>是<b class='flag-5'>0x08000000</b>,從<b class='flag-5'>0x</b>00000000不可以?

    【不是問題的問題】為什么STM32Flash地址設置0x08000000

    【不是問題的問題】為什么STM32Flash地址設置0
    發表于 12-04 14:21 ?11次下載
    【不是問題的問題】為什么<b class='flag-5'>STM32</b>的<b class='flag-5'>Flash</b><b class='flag-5'>地址</b><b class='flag-5'>要</b><b class='flag-5'>設置</b><b class='flag-5'>到</b><b class='flag-5'>0x08000000</b>
    主站蜘蛛池模板: 国产男人女人做性全过程视频 | 国产一级真人毛爱做毛片 | 国产精品自在线天天看片 | 午夜黄色影院 | 口述他拿舌头进去我下面好爽 | 日本黄大片在线观看 | 天天狠狠弄夜夜狠狠躁·太爽了 | 欧洲一卡二卡乱码新区 | 黄色w站 | videofreeones性欧美另类 | 午夜精品久久久久久久99 | 五月婷婷 六月丁香 | 年轻的护士3在线观看 | 性欧美性 | 免费成人黄色 | 亚洲精品自拍区在线观看 | 毛片123| aa在线视频 | 成人影院在线观看视频 | 亚洲一级免费视频 | 日本黄色片免费看 | 亚洲情网 | 日本大片黄色 | 欧洲不卡一卡2卡三卡4卡网站 | 在线h网站| 日本黄网站高清色大全 | 天天摸天天做天天爽水多 | h版欧美一区二区三区四区 h网站亚洲 | 干干干操操操 | 成人永久免费视频网站在线观看 | 亚洲第一区二区快射影院 | 久久精品视频热 | 伊人免费网 | 三级完整在线观看高清视频 | 永久免费在线看 | 又粗又大又猛又爽免费视频 | 欧美成网站 | 亚洲欧美综合一区 | 天天干夜夜添 | 又黄又爽又猛午夜性色播在线播放 | 酒色1314 |