女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在IAR Arm開發工具鏈中--function_sections編譯選項的使用

IAR愛亞系統 ? 來源:IAR愛亞系統 ? 2025-06-13 13:53 ? 次閱讀

前面的文章如何在IAR Embedded Workbench中把變量和函數放到指定的section介紹了如何把變量和函數放到指定的section,其中把函數放到指定的section可以通過下面幾種方法:

使用 @ 操作符

使用 GCC 風格的section屬性 __attribute__ ((section ))

使用 #pragma location 命令

使用 #pragma default_function_attributes 命令

這幾種方法都需要修改源代碼,如果對應源代碼不方便修改,那么對應函數默認會放到.text section。最新發布的IAR Arm開發工具鏈9.70.1版本增加了??function_sections編譯選項可以把函數放到單獨的section。

本文主要介紹在IAR Arm開發工具鏈中不修改源代碼的情況下使用??function_sections編譯選項把函數放到單獨的section。

01默認section

IAR Arm開發工具鏈中默認的section如下,其中函數/代碼默認會放到.text section:

5b3d0478-4671-11f0-b715-92fbcf53809c.png

02使用??function_sections編譯選項把函數放到單獨的section

下面通過具體的例子介紹在IAR Arm開發工具鏈中??function_sections編譯選項的使用。

對函數不做任何section放置處理

這里以CrcCheck函數為例,首先不做任何section放置處理,查看map文件發現CrcCheck函數會放到默認的.text section:

5b4f0f10-4671-11f0-b715-92fbcf53809c.png5b5a36f6-4671-11f0-b715-92fbcf53809c.png

使用??function_sections編譯選項

使用--function_sections編譯選項把函數放到單獨的section:

5b69819c-4671-11f0-b715-92fbcf53809c.png

5b788ba6-4671-11f0-b715-92fbcf53809c.png

5b8b9908-4671-11f0-b715-92fbcf53809c.png

查看map文件發現CrcCheck函數放到了使用--function_sections編譯選項生成的.text.CrcCheck section:

5ba352f0-4671-11f0-b715-92fbcf53809c.png5bb6a6de-4671-11f0-b715-92fbcf53809c.png

修改源代碼把函數放到指定的section

修改源代碼把函數放到指定的section,比如使用#pragmalocation命令將CrcCheck函數放到指定的.CrcCheck section

#pragmalocation =".CrcCheck"
voidCrcCheck(void)

查看map文件發現CrcCheck函數放到了指定的.CrcCheck section:

5bcf029c-4671-11f0-b715-92fbcf53809c.png5be1d7fa-4671-11f0-b715-92fbcf53809c.png

03總結

本文介紹了在IAR Arm開發工具鏈中不修改源代碼的情況下使用??function_sections編譯選項把函數放到單獨的section。對應函數的section放置優先級順序如下:

如果源代碼里面把函數放到指定的section,那么對應的函數會放到指定的section。

如果源代碼里面沒有把函數放到指定的section,使用了??function_sections編譯選項,那么對應函數會放到單獨的section(對應單獨section的名字是.text.加上對應函數的名字,比如CrcCheck函數會放到.text.CrcCheck section)。

如果源代碼里面沒有把函數放到指定的section,也沒有使用??function_sections編譯選項,那么函數會放到默認的.text section。

注意事項:

當前IAR Arm開發工具鏈庫文件中的函數會放到.text section。

如果函數使用了__ramfunc關鍵字,對應函數默認會放到.text.rw section,對應Kind是inited,默認會放到RAM地址區域;但是如果使用了??function_sections編譯選項,對應函數會放到單獨的section,對應Kind是ro code, 默認會放到ROM地址區域。需要對相關section使用對應的initialize命令其Kind才會從ro code變成inited (更多關于initialize命令的信息,可以參考IAR Embedded Workbench中的初始化策略),同時需要把對應section放到RAM地址區域。

當前IAR Arm開發工具鏈中沒有類似GCC中的-fdata-sections編譯選項,因為在ICF文件中可以把變量放到指定的block。

如果可以修改源代碼,建議修改源代碼把對應的關鍵函數放到指定的section,因為??function_sections編譯選項有可能會影響編譯優化:

5bf52a8a-4671-11f0-b715-92fbcf53809c.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9321

    瀏覽量

    375382
  • IAR
    IAR
    +關注

    關注

    5

    文章

    372

    瀏覽量

    37288
  • 函數
    +關注

    關注

    3

    文章

    4372

    瀏覽量

    64292
  • 源代碼
    +關注

    關注

    96

    文章

    2951

    瀏覽量

    67970
  • 開發工具鏈
    +關注

    關注

    0

    文章

    17

    瀏覽量

    1697

原文標題:在IAR Arm開發工具鏈中使用??function_sections編譯選項把函數放到單獨的section

文章出處:【微信號:IAR愛亞系統,微信公眾號:IAR愛亞系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Keil MDK 和 IAR 兩款ARM開發工具區別比較

    首先要說明,沒有那款開發工具是萬能的,也沒有那款工具在所有方面都具有絕對優勢。對于Keil MDK-ARMIAR兩款工具擇,可以根據自己的
    發表于 10-13 09:53

    arm交叉編譯工具

    我有一個疑問:如果在編譯內核時用的交叉編譯工具是android 的arm-eabi-4.6,那我后面應用程序
    發表于 11-22 14:36

    Keil MDK 和 IAR 兩款ARM開發工具區別

    Keil MDK 和 IAR 兩款ARM開發工具區別比較首先要說明,沒有那款開發工具是萬能的,也沒有那款工具在所有方面都具有絕對優勢。對于K
    發表于 07-01 07:02

    Quake Global選擇IAR Systems的開發工具

    Quake Global選擇IAR Systems的開發工具作為其新品的開發工具  嵌入式行業內領先的軟件開發工具提供商IAR Syste
    發表于 01-23 09:37 ?657次閱讀

    ARM開發工具

    Keil公司開發ARM開發工具MDK(Microcontroller Development Kit),是 用來開發基于ARM核的系列微控
    發表于 11-16 17:27 ?0次下載

    ARM開發工具解讀

    1.6 ARM開發工具 用戶選用ARM處理器開發嵌入式產品時,選擇合適的開發工具可以加快開發進度
    發表于 10-18 13:29 ?3次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>開發工具</b>解讀

    IAR EWARM軟件免費下載(嵌入式應用編程開發工具

    ARMIAREWARM。 嵌入式應用編程開發工具IAR embedded Workbench是一套高度精密且使用方便的嵌入式應用編程開發工具。該集成開發環境包含了
    發表于 11-23 16:45 ?24次下載
    <b class='flag-5'>IAR</b> EWARM軟件免費下載(嵌入式應用編程<b class='flag-5'>開發工具</b>)

    交叉編譯工具的命名規則

    ARM 公司推出的編譯工具,功能和 arm-none-eabi 類似,可以編譯裸機程序(u-boot、kernel),但是不能
    的頭像 發表于 05-15 11:06 ?7516次閱讀
    交叉<b class='flag-5'>編譯</b><b class='flag-5'>工具</b><b class='flag-5'>鏈</b>的命名規則

    ARM教程之ARM常用開發工具及相應開發環境配置資料說明

    本文檔的主要內容詳細介紹的是ARM教程之ARM常用開發工具及相應開發環境配置資料說明包括了:ADS(ARM Developer Suite)
    發表于 03-20 15:54 ?24次下載
    <b class='flag-5'>ARM</b>教程之<b class='flag-5'>ARM</b>常用<b class='flag-5'>開發工具</b>及相應<b class='flag-5'>開發</b>環境配置資料說明

    米爾科技ARM DS-5開發工具介紹

    專為裸機、RTOS、Linux / Android項目的先進軟件開發工具。 除了支持所有ARM處理器的完整的調試和系統性能分析,它還包括高度優化的ARM
    的頭像 發表于 11-20 09:58 ?1687次閱讀
    米爾科技<b class='flag-5'>ARM</b> DS-5<b class='flag-5'>開發工具</b>介紹

    IAR EW430開發工具的使用教程

    實驗平臺用到的開發軟件為IAR Embedded Workbench for430(以下簡稱IAR EW430) 。IAR Systems 是全球領先的嵌入式系統
    發表于 11-10 17:35 ?29次下載
    <b class='flag-5'>IAR</b> EW430<b class='flag-5'>開發工具</b>的使用教程

    KeilMDK和IAR兩款ARM開發工具比較

    KeilMDK和IAR兩款ARM開發工具比較(單片機編程多少錢一個)-KeilMDK和IAR兩款ARM
    發表于 09-30 10:52 ?16次下載
    KeilMDK和<b class='flag-5'>IAR</b>兩款<b class='flag-5'>ARM</b><b class='flag-5'>開發工具</b>比較

    KeilMDK和IAR兩款ARM開發工具哪個比較好

    KeilMDK和IAR兩款ARM開發工具哪個比較好(單片機內部結構示意圖)-KeilMDK和IAR兩款ARM
    發表于 09-30 11:07 ?7次下載
    KeilMDK和<b class='flag-5'>IAR</b>兩款<b class='flag-5'>ARM</b><b class='flag-5'>開發工具</b>哪個比較好

    如何利用現代嵌入式開發工具的堆棧保護功能

     以被廣泛使用的IAR Embedded Workbench for Arm嵌入式開發工具為例,使用Project》Options》C/C++ Compiler》Code》Stack protection
    的頭像 發表于 03-29 14:50 ?1673次閱讀
    如何利用現代嵌入式<b class='flag-5'>開發工具</b><b class='flag-5'>中</b>的堆棧保護功能

    IAR開發平臺升級Arm和RISC-V開發工具,加速現代嵌入式系統開發

    IAR正式發布其旗艦產品的重大更新版本:Arm開發工具v9.70和RISC-V開發工具v3.
    的頭像 發表于 06-11 14:28 ?73次閱讀