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

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

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

處理器的Flash空間分配

CHANBAEK ? 來(lái)源:頭條號(hào)科G棧 ? 作者:頭條號(hào)科G棧 ? 2023-03-23 10:10 ? 次閱讀

在一個(gè)實(shí)際的項(xiàng)目中,F(xiàn)lash的使用會(huì)進(jìn)行專門(mén)的安排,分成不同的區(qū)域供不同的目的使用。最常見(jiàn)的是分成bootloader區(qū)和主程序區(qū)。對(duì)于有些需要在掉電后保存數(shù)據(jù)的,還會(huì)分配一段區(qū)域保存這些重要的數(shù)據(jù),這一塊兒我們就叫它eeprom吧。

通常bootloader會(huì)放在flash最開(kāi)始的地方,eeprom放在flash最后,具體大小需要根據(jù)實(shí)際的項(xiàng)目需要分配。

poYBAGQbtRCAP8u9AABZAwojrrY456.jpg

這種情況下需要對(duì)鏈接文件進(jìn)行修改,主要是改一下main app的起始地址,否則默認(rèn)情況下都是存放在flash最開(kāi)始的地方,main app就會(huì)把bootloader覆蓋掉。

linux下,后綴為ld的就是鏈接文件,它里邊有這么一段內(nèi)容:

poYBAGQbtRGASrRCAABxQ4AKZ9c935.jpg

MEMORY就是用來(lái)給系統(tǒng)分配存儲(chǔ)空間的,包括RAM、FLASH、外部存儲(chǔ)等等。上圖中是main app的分配情況。這個(gè)示例中,flash的起始地址是0x08000000,給bootloader留了4k(0x1000)的空間,所以main app的起始地址ORIGIN就是0x08001000,長(zhǎng)度的話32k減去4k剩下27k。這樣在鏈接的時(shí)候就以0x08001000為基準(zhǔn)往后安排。

另外還有一種情況需要在鏈接文件中修改。我們?cè)陂_(kāi)發(fā)的時(shí)候有時(shí)候想要某些特定的數(shù)據(jù)或代碼保存在特定的flash地址處,這個(gè)時(shí)候就可以通過(guò)在鏈接文件中添加這個(gè)特定的段空間來(lái)搞定。比如下面的例子

pYYBAGQbtRKAZiu7AADBPXFRF3c982.jpg

它在main app的最開(kāi)始存放向量表,之后存放軟件版本信息,接下來(lái)才是代碼段。

分配好空間后,需要給自定義的段起一個(gè)名字,以便在程序中調(diào)用。

pYYBAGQbtROAWkEQAACeboKz1Fw846.jpg

關(guān)鍵字SECTIONS下就是各個(gè)數(shù)據(jù)段的具體分配情況,段名.isr_vector指定的內(nèi)容放在FLASH_VECTAB下,.firmware_info指定的內(nèi)容放在FLASH_VERSION下。在KEEP后括號(hào)內(nèi)的名稱就是代碼中用來(lái)指定的段名。具體使用方法如下:

匯編

poYBAGQbtRSAEW9vAAAH_nJXhhc603.jpg

這個(gè)很少用到,除非你用匯編寫(xiě)代碼。

C:

poYBAGQbtRWAAPLlAAATwEKVvfo320.jpg

通過(guò)上面的操作,就可以把指定的數(shù)據(jù)放到flash特定的地方。

?。。。翰煌木幾g器實(shí)現(xiàn)的細(xì)節(jié)和用到的關(guān)鍵字不一樣,需要查看其具體的幫助手冊(cè)。

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

    關(guān)注

    68

    文章

    18927

    瀏覽量

    227248
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1598

    瀏覽量

    147340
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207920
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1602

    瀏覽量

    48896
  • bootloader
    +關(guān)注

    關(guān)注

    2

    文章

    232

    瀏覽量

    45368
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    [求助]微處理器電路如何工作?

    處理器ELANSC520-100AI是如何工作的?這個(gè)處理器通電后是怎么工作的,外部給他提供一個(gè)FLASH里面是BOOT程序。起上電復(fù)位和開(kāi)機(jī)自檢作用。  
    發(fā)表于 08-28 17:02

    S3C2410處理器與Nand flash 的問(wèn)題

    一個(gè)64M Nand flash存儲(chǔ)與S3C2410處理器的Nand flash相應(yīng)接口連接,請(qǐng)問(wèn)這個(gè)64M存儲(chǔ)空間是否屬于8個(gè)bank中
    發(fā)表于 11-20 21:41

    用于Intel SkyLake(TM)處理器平臺(tái)的功率調(diào)節(jié)和分配的參考設(shè)計(jì)

    `描述TI 經(jīng)過(guò)優(yōu)化的解決方案可實(shí)現(xiàn)功率調(diào)節(jié)、分配和定序,適用于 Intel SkyLake? 處理器平臺(tái)。通過(guò)采用高效直流/直流開(kāi)關(guān)穩(wěn)壓和集成負(fù)載開(kāi)關(guān),該設(shè)計(jì)展示了它可調(diào)節(jié) 4 個(gè)獨(dú)特的電源軌并
    發(fā)表于 03-30 17:41

    Intel SkyLake處理器平臺(tái)的功率調(diào)節(jié)、分配和定序方案

    描述TI 經(jīng)過(guò)優(yōu)化的解決方案可實(shí)現(xiàn)功率調(diào)節(jié)、分配和定序,適用于 Intel SkyLake? 處理器平臺(tái)。通過(guò)采用高效直流/直流開(kāi)關(guān)穩(wěn)壓和集成負(fù)載開(kāi)關(guān),該設(shè)計(jì)展示了它可調(diào)節(jié) 4 個(gè)獨(dú)特的電源軌并
    發(fā)表于 12-14 15:13

    兩核程序空間分配問(wèn)題如何解決

    各位好,28377D的兩核程序單獨(dú)編譯,那么如何才能保證不會(huì)引起程序空間分配沖突呢?此外,CPU1進(jìn)行了FLASH初始化,CPU2還需進(jìn)行FLASH初始化的過(guò)程嗎?(TI
    發(fā)表于 07-17 11:47

    單片機(jī)程序在內(nèi)存和FLASH中的空間分配

    這里寫(xiě)目錄標(biāo)題1.ROM、RAM和閃存2.單片機(jī)程序在內(nèi)存和FLASH中的空間分配3.計(jì)算機(jī)啟動(dòng)過(guò)程1.ROM、RAM和閃存ROM、RAM和閃存的區(qū)別2.單片機(jī)程序在內(nèi)存和FLASH
    發(fā)表于 12-09 07:16

    如何對(duì)RAM空間分配操作

    在代碼編譯過(guò)程中,編譯會(huì)根據(jù)配置和代碼進(jìn)行空間分配,包括對(duì)內(nèi)存RAM的空間分配,對(duì)RAM空間
    發(fā)表于 01-20 08:05

    對(duì)微處理器flash以及ram的內(nèi)存分配進(jìn)行講解

    處理器flash以及ram的內(nèi)存分配進(jìn)行講解;在講解之前先說(shuō)一下哈佛結(jié)構(gòu)和馮·諾依曼架構(gòu)一、 哈佛架構(gòu)和馮·諾依曼架構(gòu)為什么開(kāi)題要講一下這連個(gè)架構(gòu)呢,因?yàn)椴煌募軜?gòu)決定著實(shí)際ram和fla
    發(fā)表于 01-26 07:55

    ARM程序在Flash和SRAM空間中是怎樣進(jìn)行分配

    linux操作系統(tǒng)的Flash全部是norflash,但是不絕對(duì)?! ?b class='flag-5'>Flash,SRAM寄存和輸入輸出端口被組織在同一個(gè)4GB的線性地址空間內(nèi),可訪問(wèn)的存儲(chǔ)
    發(fā)表于 05-10 15:26

    多寄存組網(wǎng)絡(luò)處理器上的寄存分配技術(shù)

    本內(nèi)容提供了多寄存組網(wǎng)絡(luò)處理器上的寄存分配技術(shù)
    發(fā)表于 06-28 15:26 ?28次下載
    多寄存<b class='flag-5'>器</b>組網(wǎng)絡(luò)<b class='flag-5'>處理器</b>上的寄存<b class='flag-5'>器</b><b class='flag-5'>分配</b>技術(shù)

    STM32處理器存儲(chǔ)空間布局結(jié)構(gòu)說(shuō)明

    一、Cortex-M3支持最大4GB的存儲(chǔ)空間,其地址映射關(guān)系如下圖 二、存儲(chǔ)映射實(shí)例:256KB Flash 48KB SRAM IROM1為片上程序存儲(chǔ),即片上集成的
    發(fā)表于 11-30 01:35 ?1479次閱讀
     STM32<b class='flag-5'>處理器</b>存儲(chǔ)<b class='flag-5'>空間</b>布局結(jié)構(gòu)說(shuō)明

    單片機(jī)的程序在內(nèi)存和FLASH中應(yīng)該如何進(jìn)行空間分配

    一句話:基于速度問(wèn)題,電腦使用硬盤(pán)存儲(chǔ)程序,運(yùn)行時(shí),在內(nèi)存中分配空間給變量,加載程序到內(nèi)存中,在內(nèi)存中執(zhí)行程序。單片機(jī)使用FLASH 存儲(chǔ)程序,運(yùn)行時(shí),不會(huì)將程序加載到內(nèi)存中,在FLASH
    發(fā)表于 09-18 17:20 ?3次下載
    單片機(jī)的程序在內(nèi)存和<b class='flag-5'>FLASH</b>中應(yīng)該如何進(jìn)行<b class='flag-5'>空間</b><b class='flag-5'>分配</b>

    EE-311:適用于Blackfin?處理器的VisualDSP++?Flash編程API

    EE-311:適用于Blackfin?處理器的VisualDSP++?Flash編程API
    發(fā)表于 04-13 13:55 ?2次下載
    EE-311:適用于Blackfin?<b class='flag-5'>處理器</b>的VisualDSP++?<b class='flag-5'>Flash</b>編程<b class='flag-5'>器</b>API

    負(fù)載均衡處理器的運(yùn)算資源分配策略

    現(xiàn)代超標(biāo)量處理器通常設(shè)置有多套計(jì)算部件攴持指令并行執(zhí)行,以提高程序的運(yùn)行效率。運(yùn)算資源分配策略在很大程度上決定了處理器能否充分利用計(jì)算部件并行加速計(jì)算,具有重要作用。就指令調(diào)度以及運(yùn)算資源分配
    發(fā)表于 05-13 10:44 ?15次下載

    處理器flash及ram內(nèi)容詳解

    處理器flash以及ram的內(nèi)存分配進(jìn)行講解; 在講解之前先說(shuō)一下哈佛結(jié)構(gòu)和馮·諾依曼架構(gòu)一、 哈佛架構(gòu)和馮·諾依曼架構(gòu) 為什么開(kāi)題要講一下這連個(gè)架構(gòu)呢,因?yàn)椴煌募軜?gòu)決定著實(shí)際ram和
    發(fā)表于 12-02 12:21 ?0次下載
    微<b class='flag-5'>處理器</b><b class='flag-5'>flash</b>及ram內(nèi)容詳解