一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

在IAR Arm開發(fā)工具鏈中--function_sections編譯選項(xiàng)的使用

IAR愛亞系統(tǒng) ? 來(lái)源:IAR愛亞系統(tǒng) ? 2025-06-13 13:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

使用 @ 操作符

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

使用 #pragma location 命令

使用 #pragma default_function_attributes 命令

這幾種方法都需要修改源代碼,如果對(duì)應(yīng)源代碼不方便修改,那么對(duì)應(yīng)函數(shù)默認(rèn)會(huì)放到.text section。最新發(fā)布的IAR Arm開發(fā)工具鏈9.70.1版本增加了??function_sections編譯選項(xiàng)可以把函數(shù)放到單獨(dú)的section。

本文主要介紹在IAR Arm開發(fā)工具鏈中不修改源代碼的情況下使用??function_sections編譯選項(xiàng)把函數(shù)放到單獨(dú)的section。

01默認(rèn)section

IAR Arm開發(fā)工具鏈中默認(rèn)的section如下,其中函數(shù)/代碼默認(rèn)會(huì)放到.text section:

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

02使用??function_sections編譯選項(xiàng)把函數(shù)放到單獨(dú)的section

下面通過(guò)具體的例子介紹在IAR Arm開發(fā)工具鏈中??function_sections編譯選項(xiàng)的使用。

對(duì)函數(shù)不做任何section放置處理

這里以CrcCheck函數(shù)為例,首先不做任何section放置處理,查看map文件發(fā)現(xiàn)CrcCheck函數(shù)會(huì)放到默認(rèn)的.text section:

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

使用??function_sections編譯選項(xiàng)

使用--function_sections編譯選項(xiàng)把函數(shù)放到單獨(dú)的section:

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

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

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

查看map文件發(fā)現(xiàn)CrcCheck函數(shù)放到了使用--function_sections編譯選項(xiàng)生成的.text.CrcCheck section:

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

修改源代碼把函數(shù)放到指定的section

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

#pragmalocation =".CrcCheck"
voidCrcCheck(void)

查看map文件發(fā)現(xiàn)CrcCheck函數(shù)放到了指定的.CrcCheck section:

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

03總結(jié)

本文介紹了在IAR Arm開發(fā)工具鏈中不修改源代碼的情況下使用??function_sections編譯選項(xiàng)把函數(shù)放到單獨(dú)的section。對(duì)應(yīng)函數(shù)的section放置優(yōu)先級(jí)順序如下:

如果源代碼里面把函數(shù)放到指定的section,那么對(duì)應(yīng)的函數(shù)會(huì)放到指定的section。

如果源代碼里面沒有把函數(shù)放到指定的section,使用了??function_sections編譯選項(xiàng),那么對(duì)應(yīng)函數(shù)會(huì)放到單獨(dú)的section(對(duì)應(yīng)單獨(dú)section的名字是.text.加上對(duì)應(yīng)函數(shù)的名字,比如CrcCheck函數(shù)會(huì)放到.text.CrcCheck section)。

如果源代碼里面沒有把函數(shù)放到指定的section,也沒有使用??function_sections編譯選項(xiàng),那么函數(shù)會(huì)放到默認(rèn)的.text section。

注意事項(xiàng):

當(dāng)前IAR Arm開發(fā)工具鏈庫(kù)文件中的函數(shù)會(huì)放到.text section。

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

當(dāng)前IAR Arm開發(fā)工具鏈中沒有類似GCC中的-fdata-sections編譯選項(xiàng),因?yàn)樵贗CF文件中可以把變量放到指定的block。

如果可以修改源代碼,建議修改源代碼把對(duì)應(yīng)的關(guān)鍵函數(shù)放到指定的section,因?yàn)??function_sections編譯選項(xiàng)有可能會(huì)影響編譯優(yōu)化:

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9337

    瀏覽量

    376090
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    376

    瀏覽量

    37357
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4376

    瀏覽量

    64533
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2953

    瀏覽量

    68118
  • 開發(fā)工具鏈
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    1705

原文標(biāo)題:在IAR Arm開發(fā)工具鏈中使用??function_sections編譯選項(xiàng)把函數(shù)放到單獨(dú)的section

文章出處:【微信號(hào):IAR愛亞系統(tǒng),微信公眾號(hào):IAR愛亞系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Keil MDK 和 IAR 兩款ARM開發(fā)工具區(qū)別比較

    首先要說(shuō)明,沒有那款開發(fā)工具是萬(wàn)能的,也沒有那款工具在所有方面都具有絕對(duì)優(yōu)勢(shì)。對(duì)于Keil MDK-ARMIAR兩款工具擇,可以根據(jù)自己的
    發(fā)表于 10-13 09:53

    arm交叉編譯工具

    我有一個(gè)疑問(wèn):如果在編譯內(nèi)核時(shí)用的交叉編譯工具是android 的arm-eabi-4.6,那我后面應(yīng)用程序
    發(fā)表于 11-22 14:36

    Keil MDK 和 IAR 兩款ARM開發(fā)工具區(qū)別

    Keil MDK 和 IAR 兩款ARM開發(fā)工具區(qū)別比較首先要說(shuō)明,沒有那款開發(fā)工具是萬(wàn)能的,也沒有那款工具在所有方面都具有絕對(duì)優(yōu)勢(shì)。對(duì)于K
    發(fā)表于 07-01 07:02

    Quake Global選擇IAR Systems的開發(fā)工具

    Quake Global選擇IAR Systems的開發(fā)工具作為其新品的開發(fā)工具  嵌入式行業(yè)內(nèi)領(lǐng)先的軟件開發(fā)工具提供商IAR Syste
    發(fā)表于 01-23 09:37 ?666次閱讀

    ARM開發(fā)工具

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

    ARM開發(fā)工具解讀

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

    IAR EWARM軟件免費(fèi)下載(嵌入式應(yīng)用編程開發(fā)工具

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

    ARM教程之ARM常用開發(fā)工具及相應(yīng)開發(fā)環(huán)境配置資料說(shuō)明

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

    米爾科技ARM DS-5開發(fā)工具介紹

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

    IAR EW430開發(fā)工具的使用教程

    實(shí)驗(yàn)平臺(tái)用到的開發(fā)軟件為IAR Embedded Workbench for430(以下簡(jiǎn)稱IAR EW430) 。IAR Systems 是全球領(lǐng)先的嵌入式系統(tǒng)
    發(fā)表于 11-10 17:35 ?29次下載
    <b class='flag-5'>IAR</b> EW430<b class='flag-5'>開發(fā)工具</b>的使用教程

    KeilMDK和IAR兩款ARM開發(fā)工具比較

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

    KeilMDK和IAR兩款ARM開發(fā)工具哪個(gè)比較好

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

    如何利用現(xiàn)代嵌入式開發(fā)工具的堆棧保護(hù)功能

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

    IAR開發(fā)平臺(tái)升級(jí)Arm和RISC-V開發(fā)工具,加速現(xiàn)代嵌入式系統(tǒng)開發(fā)

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

    IAR發(fā)布Arm開發(fā)工具v9.70.1版本

    近期,IAR重磅發(fā)布其旗艦產(chǎn)品——Arm開發(fā)工具的全新版本v9.70.1,全面提升了性能、安全性及自動(dòng)化方面的能力。此次重大更新將進(jìn)一步
    的頭像 發(fā)表于 06-25 14:12 ?249次閱讀