99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

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

冬至子 ? 來源:老羊快跑 與 深度學習 ? 作者:老羊快跑 ? 2023-10-27 14:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

圖片

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

Code表示程序代碼部分

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

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

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

下面給出三個值:

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

RW Size=RW Data + ZIData (運行時程序占用RAM空間的大?。?/strong>

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

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

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

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

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

    關(guān)注

    10

    文章

    1678

    瀏覽量

    151769
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1392

    瀏覽量

    117469
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    364736
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何將Flash刷寫程序放到SRAM運行?

    客戶要求Flash driver不能存儲Flash,需要在升級的時候,由CAN FBL發(fā)送到SRAM,再
    發(fā)表于 07-15 07:22

    【中科昊芯Core_DSC280025C開發(fā)板試用體驗】+2.RAM工程與FLASH工程對比

    。代碼運行RAM下,主要用于開發(fā)調(diào)試模式,優(yōu)點是下載速度快,運行的也快,缺點是斷電程序就丟失了。 若代碼
    發(fā)表于 07-04 10:37

    STM32IDE如何設(shè)定代碼到ITCM運行

    摸索到了如何將變量定義到某個地址,但是不清楚如何讓代碼指定RAM運行。按照設(shè)定變量的方式設(shè)定代碼,程序直接進入了異常中斷{:16:}。
    發(fā)表于 06-24 06:45

    STM32G473 flash擦除時程序卡死,為什么?

    進行雙bank升級的時候,會先進行FLASH的批量擦除。連續(xù)的升級過程中發(fā)現(xiàn)成功幾次后出現(xiàn)了執(zhí)行擦除flash操作時程序卡死的情況,直
    發(fā)表于 06-12 08:05

    STM32Cube IDE1.18.0 寫ODR編譯不成,咋辦?

    STM32Cube IDE1.18.0寫ODR 編譯不成,咋辦?
    發(fā)表于 06-09 07:36

    STM32G473 flash擦除時程序卡死的原因?

    進行雙bank升級的時候,會先進行FLASH的批量擦除。連續(xù)的升級過程中發(fā)現(xiàn)成功幾次后出現(xiàn)了執(zhí)行擦除flash操作時程序卡死的情況,直
    發(fā)表于 06-09 07:23

    CUEBIDE生成的APP程序,寫入FLASH之后無法正常跳轉(zhuǎn)怎么解決?

    (); STM32F407ZGTX_FLASH.ld修改 / Memories definition / MEMORY { CCMRAM (xrw) : ORIGIN = 0x10000000
    發(fā)表于 06-09 06:43

    CUEBIDE生成的APP程序,寫入FLASH之后無法正常跳轉(zhuǎn)怎么解決?

    (); STM32F407ZGTX_FLASH.ld修改 /[i] Memories definition / MEMORY { CCMRAM (xrw) : ORIGIN = 0x10000000
    發(fā)表于 06-05 07:15

    攜手Nordic推出多合一氣體傳感器

    此前,5月22日至23日,2025藍牙亞洲大會在深圳隆重啟幕。云新品“多合一氣體傳感器”Nordic展位上重磅亮相。產(chǎn)品搭載了Nordic nRF54L系列首款系統(tǒng)級芯片(SoC),兼具超低
    的頭像 發(fā)表于 05-27 18:01 ?550次閱讀

    OpenVINO?運行應(yīng)用程序失敗怎么解決?

    嘗試 OpenVINO? 運行我的推理應(yīng)用程序失敗,并出現(xiàn)以下錯誤: RuntimeError: Check \'false\' failed at src/core/src/ru
    發(fā)表于 03-05 10:29

    mcvip源碼,TVP5158_patchDownload這個函數(shù)主要是寫什么進VBUS?

    mcvip源碼,TVP5158_patchDownload這個函數(shù)主要是寫什么進VBUS?VBUS又有什么作用?手冊好像沒說明白
    發(fā)表于 02-11 06:52

    什么是RAM內(nèi)存 RAM內(nèi)存對電腦性能的影響

    什么是RAM內(nèi)存? RAM(Random Access Memory,隨機存取存儲器)是電腦中的一種易失性存儲器,它用于存儲電腦運行時的數(shù)據(jù)和程序。與硬盤等非易失性存儲器不同,
    的頭像 發(fā)表于 11-11 09:38 ?5987次閱讀

    rt-thread bspesp32c3編譯出的bin文件燒到esp32的開發(fā)板上運行提示chipid不對,為什么?

    rt-thread bspesp32c3編譯出的bin文件燒到esp32的開發(fā)板上 運行提示chipid不對,是否有方法修改能支持esp32 系列的開發(fā)板
    發(fā)表于 09-27 10:01

    keil5怎么往stm32燒錄程序

    相關(guān)設(shè)置。 編寫代碼 Keil5編寫您的STM32程序。您可以使用C或C++語言編寫代碼。 配置編譯器
    的頭像 發(fā)表于 08-22 09:31 ?5067次閱讀

    外部存儲器是ROM還是RAM

    外部存儲器通常指的是計算機系統(tǒng)除了主存(RAM)以外的存儲設(shè)備,如硬盤、固態(tài)硬盤(SSD)、USB閃存驅(qū)動器、光盤等。它們主要用于長期存儲數(shù)據(jù)和程序,以供計算機需要時讀取和寫入。外
    的頭像 發(fā)表于 08-06 09:13 ?3123次閱讀