電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 39|回復(fù): 0
收起左側(cè)

IAR啟動函數(shù)流程里RW段初始化實(shí)現(xiàn)也支持壓縮?

[復(fù)制鏈接]

302

主題

307

帖子

1896

積分

三級會員

Rank: 3Rank: 3

積分
1896
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-11-30 08:25:00 | 只看該作者 回帖獎勵(lì) |倒序?yàn)g覽 |閱讀模式
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是IAR啟動函數(shù)流程里段初始化實(shí)現(xiàn)中可用的壓縮選項(xiàng)。
! F9 Y" `, f$ O接著 《IAR啟動函數(shù)流程之段初始化函數(shù)__iar_data_init3實(shí)現(xiàn)》 一文,咱們再深入一步。對于 .bss 段的初始化,其實(shí)沒什么好說的,就是簡單的清零操作,但是 .data/.textrw 段的初始化工作是可以做一點(diǎn)文章的,尤其是當(dāng)這些段數(shù)據(jù)量非常大的時(shí)候,可以增加一些壓縮處理(鏈接階段做壓縮,并且自動插入相應(yīng)解壓函數(shù)進(jìn)鏡像文件,啟動初始化時(shí)做解壓),以減小最終程序鏡像文件的長度(代碼優(yōu)化選項(xiàng) High - Size 之外的新手段),這也是 IAR 這種商業(yè)性軟件區(qū)別于標(biāo)準(zhǔn) GCC 工具鏈的地方之一。今天我們就仔細(xì)說說 IAR 工具下支持的 RW 段壓縮選項(xiàng):) E; |# G6 a9 c" i& f+ U/ Z8 y5 }
  • Note 1:閱讀本文前需要對 《IAR鏈接文件(.icf)》 有所了解。
  • Note 2:本文使用的 IAR EWARM 軟件版本是 v9.10.2。一、在鏈接文件中設(shè)置壓縮選項(xiàng)我們還是結(jié)合一個(gè)具體應(yīng)用程序工程來講解,痞子衡選擇的是 \SDK_2.11.0_MIMXRT1170-EVK\boards\evkmimxrt1170\demo_apps\hello_world\cm7\iar 例程(切到 flexspi_nor_debug build),這個(gè)工程的鏈接文件是 MIMXRT1176xxxxx_cm7_flexspi_nor.icf,在鏈接文件里我們使用了如下 initialize by copy 語句來指定 IAR 鏈接器去做 RW/ZI 段初始化工作:
    + a; ?/ K+ P8 Z+ [1 c8 _initialize by copy { readwrite, section .textrw };
    - U8 W% _. {2 B# t其實(shí)上述語句是不完整的,其中包含了一些默認(rèn)參數(shù)省略,我們翻看 \IAR Systems\Embedded Workbench 9.10.2\arm\doc\EWARM_DevelopmentGuide.ENU.pdf 文檔可以找到如下 initialize 完整語法:
  • 發(fā)表回復(fù)

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表