亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuà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空間的大?。?/strong>

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

ROM Size=Code + RO Data + RWData (燒寫時程序占用FLASH空間的大?。?/strong>

我們都知道,在燒寫程序的時候,需要燒寫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)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1704

    瀏覽量

    154333
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1397

    瀏覽量

    119641
  • STM32
    +關注

    關注

    2302

    文章

    11107

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Nuclei IDE燒寫程序無法成功的原因及部分解決辦法

    ; 重新生成mcu200t的mcs文件,下載至FPGA 2. lim運行蜂鳥的helloworld程序,若成功則執(zhí)行步驟3 3. 下載helloword
    發(fā)表于 10-31 06:24

    定位信標助力打造現(xiàn)代化智慧醫(yī)院

    某市第一心醫(yī)院,傳統(tǒng)的“尋路難”問題正在成為歷史。為打造現(xiàn)代化智慧醫(yī)院,該院率先引進云智能硬件,構建覆蓋全院的室內(nèi)導航定位系統(tǒng),以空間數(shù)字化重構就醫(yī)路徑,顯著提升患者就醫(yī)便捷
    的頭像 發(fā)表于 10-11 16:52 ?1009次閱讀

    如何從 flash 把代碼搬運到 ram 運行的?

    沒有已經(jīng)移植適配過的芯片 運行機制是從 flash 把代碼搬運到 ram 運行
    發(fā)表于 09-28 11:03

    TLE9893是否支持FLASH1上運行代碼來擦除和編程FLASH1?

    芯片TLE9893是否支持FLASH1上運行代碼來擦除和編程FLASH1。NVM-PROG_UCODE
    發(fā)表于 08-13 08:14

    嵌入式系統(tǒng),FLASH 程序代碼必須搬到 RAM 運行嗎?

    嵌入式系統(tǒng)FLASH 程序代碼并非必須搬到 RAM
    的頭像 發(fā)表于 08-06 10:19 ?1044次閱讀
    嵌入式系統(tǒng)<b class='flag-5'>中</b>,<b class='flag-5'>FLASH</b> <b class='flag-5'>中</b>的<b class='flag-5'>程序</b>代碼必須搬到 <b class='flag-5'>RAM</b> <b class='flag-5'>中</b><b class='flag-5'>運行</b>嗎?

    如何將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如何設定代碼到ITCM運行?

    摸索到了如何將變量定義到某個地址,但是不清楚如何讓代碼指定RAM運行。按照設定變量的方式設定代碼,程序直接進入了異常中斷{: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之后無法正常跳轉怎么解決?

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

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

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

    OpenVINO?運行應用程序失敗怎么解決?

    嘗試 OpenVINO? 運行我的推理應用程序失敗,并出現(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