精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

ARM STM32中的程序是在RAM里還是在FLASH里運行?

冬至子 ? 來源:老羊快跑 與 深度學習 ? 作者:老羊快跑 ? 2023-10-27 14:06 ? 次閱讀

STM32有兩個存儲空間,一個是片上的FLASH,一個是片上的RAM。RAM相當于內存,FLASH相當于硬盤。(以下英文大小寫不分)

圖片

Keil下,工程編譯完成總會出現上面的信息,這些信息都代表什么呢?代表程序占用的空間。

Code表示程序代碼部分

RO-data 表示程序定義的常量(如:intconst x等);

RW-data 表示已初始化的全局變量

ZI-data 表示未初始化的全局變量,以及初始化為0的變量

下面給出三個值:

RO Size= Code + ROData (程序占用FLASH空間的大小)

RW Size=RW Data + ZIData (運行時程序占用RAM空間的大小)

ROM Size=Code + RO Data + RWData (燒寫時程序占用FLASH空間的大小)

我們都知道,在燒寫程序的時候,需要燒寫bin文件或者hex文件到STM32的flash當中,被燒寫的文件稱為映像文件image。Image的內容包含三部分:code,RO-data 和RW-data。

為什么Image不包含ZI數據呢,是因為ZI數據都是0,沒必要包含,只要程序運行之前將ZI數據所在的區域(這一區域在RAM中)一律清零即可。包含進去反而浪費flash存儲空間。

STM32上電啟動以后,cpu根據boot0和boot1的硬件引腳決定從flash還是ram中啟動,默認是從flash中啟動;啟動之后會搬運rw-data到ram,但是不會搬運code;也就是說cpu執行的代碼是在flash中讀取的,而不是在ram中。當然這個flash是nor型的.

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

    關注

    10

    文章

    1622

    瀏覽量

    147761
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1367

    瀏覽量

    114536
  • STM32
    +關注

    關注

    2266

    文章

    10873

    瀏覽量

    354862
收藏 人收藏

    評論

    相關推薦

    cyt4bb7cebq0代碼放在flash執行會導致異常的原因?

    切換的代碼都放在RAM運行么? 因為是要對flash進行操作的,代碼也放在flash執行會導
    發表于 05-27 08:21

    ram還是flash快?

    ] ...... /****************************************************/ 結論就是: 1. 跑ram還是
    發表于 05-17 15:49

    用STM8S103K3來做IAP自升級功能,燒寫Flash程序運行RAM,到了某一個固定的位置就會寫錯為什么?

    大家好,我目前用STM8S103K3來做IAP自升級功能。 目前,我是用ARM來轉128個字節過來給STM8,然后,讓燒寫Flash程序運行RA
    發表于 05-16 06:45

    STM32F4 Keil程序RAM調試運行的問題求解

    用Keil,設置好向量表ram,然后修改程序位置,調試載入時設置pc,sp等,能正常調試。我的程序僅僅就是進入main后,初始化串口,開
    發表于 05-13 06:51

    STM32F103XX系統的mcuFLASH_OBR寄存器中有個USER【User option bytes】字段,這是什么意思?

    STM32F103XX系統的mcuFLASH_OBR寄存器中有個USER【User option bytes】字段,請問這個是什么意思?用于什么作用的?必須得配置
    發表于 05-10 06:13

    STM8RAM運行遇到的疑問求解

    系統函數,而這個系統函數flash里面。這個時候我把flash 已經關了。程序就執行不動了。 RAM的地址域是from 0x0000 t
    發表于 05-07 07:32

    為什么將延時程序搬到RAM運行反而變慢了?

    原先delay()主循環中演示閃燈的,后來搬到RAM運行,發現閃燈變慢了,怎么會在RAM
    發表于 05-07 06:32

    關于STM32G473程序運行FlashRam速度的疑問求解

    關于STM32G473程序運行FlashRam速度問題,向大家請教一下。之前用的是F4系列的程序
    發表于 04-12 07:18

    STM32F103斷服務程序設置斷點沒有停下來是什么原因引起的?

    STM32F103程序,調試時定時器中斷服務程序設置了斷點,但是沒有停下來,程序能正常
    發表于 04-07 08:02

    使用外部QSPIKEIL調試老是不對,為什么?

    我打算程序QSPI 運行,但是要實現在KEIL調試,我首先將STM32H750 W25Q6
    發表于 04-01 07:21

    STM32HIAR如何實現從FLASH加載到SRAM運行程序

    如題,STM32H IAR如何實現從FLASH加載到SRAM運行程序 有沒有相關的例程可供
    發表于 03-28 07:46

    STM32CubeIDE用STLINK調試下載程序老是出錯的原因?

    哪位大神知道STM32CubeIDE用STLINK調試下載程序老是出錯,顯示啟動GDB服務器失敗!要么找不到STLINK序列號!反正用STLINK下載不了
    發表于 03-11 07:27

    怎么才能實現eclipse+jlinkRAM調試代碼?

    使用eclipse+jlink下載到flash調試stm32g0已經可以,現在想把代碼放到RAM調試,改了3個地方,但失敗了,請問有研究
    發表于 03-08 07:20

    TC265如何將特定函數挪至RAM運行

    目前在做TCC265的bootloader,需要把操作flash的代碼挪至RAM運行。目前根據資料嘗試過初始化階段通過memcopy函數
    發表于 02-19 08:33

    Falsh和RAM運行同一段代碼,執行效率相同嗎?

    Flash運行程序和在RAM運行程序,同一段代
    發表于 02-19 07:10