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

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

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

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

[復(fù)制鏈接]

302

主題

307

帖子

1896

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
1896
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-11-30 08:25:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是IAR啟動(dòng)函數(shù)流程里段初始化實(shí)現(xiàn)中可用的壓縮選項(xiàng)。( I) ^% _$ I: u3 G( y  k& z0 Y
接著 《IAR啟動(dòng)函數(shù)流程之段初始化函數(shù)__iar_data_init3實(shí)現(xiàn)》 一文,咱們?cè)偕钊胍徊。?duì)于 .bss 段的初始化,其實(shí)沒(méi)什么好說(shuō)的,就是簡(jiǎn)單的清零操作,但是 .data/.textrw 段的初始化工作是可以做一點(diǎn)文章的,尤其是當(dāng)這些段數(shù)據(jù)量非常大的時(shí)候,可以增加一些壓縮處理(鏈接階段做壓縮,并且自動(dòng)插入相應(yīng)解壓函數(shù)進(jìn)鏡像文件,啟動(dòng)初始化時(shí)做解壓),以減小最終程序鏡像文件的長(zhǎng)度(代碼優(yōu)化選項(xiàng) High - Size 之外的新手段),這也是 IAR 這種商業(yè)性軟件區(qū)別于標(biāo)準(zhǔn) GCC 工具鏈的地方之一。今天我們就仔細(xì)說(shuō)說(shuō) IAR 工具下支持的 RW 段壓縮選項(xiàng):, [, K+ Q0 {8 `2 v( x. m7 Y  U0 d
  • Note 1:閱讀本文前需要對(duì) 《IAR鏈接文件(.icf)》 有所了解。
  • Note 2:本文使用的 IAR EWARM 軟件版本是 v9.10.2。一、在鏈接文件中設(shè)置壓縮選項(xiàng)我們還是結(jié)合一個(gè)具體應(yīng)用程序工程來(lái)講解,痞子衡選擇的是 \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 語(yǔ)句來(lái)指定 IAR 鏈接器去做 RW/ZI 段初始化工作:. C5 y6 L' I: J& y3 [) ^
    initialize by copy { readwrite, section .textrw };: a8 h, I6 \, H" q6 I. L
    其實(shí)上述語(yǔ)句是不完整的,其中包含了一些默認(rèn)參數(shù)省略,我們翻看 \IAR Systems\Embedded Workbench 9.10.2\arm\doc\EWARM_DevelopmentGuide.ENU.pdf 文檔可以找到如下 initialize 完整語(yǔ)法:
  • 發(fā)表回復(fù)

    本版積分規(guī)則


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