1. gzyueqian
      13352868059

      嵌入式開發(fā):嵌入式基礎(chǔ)——代碼和數(shù)據(jù)空間揭秘

      更新時(shí)間: 2022-08-03 10:00:10來源: 粵嵌教育瀏覽量:8906

        在為資源受限的系統(tǒng)開發(fā)軟件時(shí),強(qiáng)烈建議嵌入式開發(fā)人員使用跟蹤代碼、數(shù)據(jù)和RAM使用情況的指標(biāo)。該信息總是可以在編譯器生成的映射文件中找到,但它并不總是最終的和總的值。許多編譯器會(huì)計(jì)算這些值,并在編譯過程中將它們打印到控制臺(tái)窗口。盡管顯示的信息并不總是清晰的。

        例如,在為ARM Cortex-M處理器編譯程序時(shí),打印到控制臺(tái)的輸出將采用類似如下的形式:

        文本數(shù)據(jù) bss dec 十六進(jìn)制文件名

        0x100 0x22 0x56 377 0x178 experiment1.elf

        乍一看,這可能看起來相對(duì)令人生畏,盡管并不完全如此。腦海中浮現(xiàn)的問題是,這些不同的空間到底是什么意思?實(shí)際使用了多少RAM和多少閃存?要理解這一點(diǎn),關(guān)鍵是要知道這些細(xì)分市場(chǎng)到底是什么,以及它們對(duì)這些總數(shù)的貢獻(xiàn)如何。

        


        文本段告訴嵌入式開發(fā)人員有多少閃存空間被分配給程序的代碼和常量。這可以被認(rèn)為是任何使用常量類型限定符的變量、函數(shù)和作為程序的一部分生成的可執(zhí)行代碼。例如,下面的語句將向文本段添加四個(gè)字節(jié)。

        const uint32 _ t Data = 0x14

        數(shù)據(jù)段包含初始化變量在閃存中占用的空間量。這一部分非常重要,因?yàn)樽兞康某跏贾荡鎯?chǔ)在flash中,但在系統(tǒng)初始化期間會(huì)復(fù)制到RAM中。這種復(fù)制過程通常被稱為C向下復(fù)制。下面是一個(gè)初始化變量的例子:

        uint32 _ t Data _ Init = 0x14

        bss段包含用于任何未初始化數(shù)據(jù)的空間。這是將被賦予初始值0的數(shù)據(jù)。這些變量將再次存儲(chǔ)在RAM中。未初始化數(shù)據(jù)的一個(gè)簡(jiǎn)單示例如下:

        uint32 _ t Data _ NoInit

        編譯器輸出中的其余值只是以十進(jìn)制或十六進(jìn)制表示法表示文本、數(shù)據(jù)和bss段的總數(shù)。不幸的是,這個(gè)結(jié)果實(shí)際上只告訴了應(yīng)用程序?qū)⑹褂枚嗌匍W存空間。要獲得正在使用的RAM量,需要將數(shù)據(jù)段和bss段相加。一旦完成,嵌入式開發(fā)人員就可以了解器件使用了多少閃存和RAM空間。

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 中文字幕在线亚洲一区高清 | 最新国产乱了真实在线观看 | 婷婷精品视频在线观看的 | 亚洲国产嫩草在线视频 | 视频一区网友自拍第二页 | 中文字幕亚亚洲码在线 |