找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14871|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

Warning[25]: Label 'xxx' is defined pubweak in a section implicitly declared ...

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:91350 發(fā)表于 2015-9-30 12:59 | 只看該作者 回帖獎勵 |正序?yàn)g覽 |閱讀模式
IAR編譯警告Warning25解決辦法STM32

在使用IAR7.7編譯工程的時(shí)候,出現(xiàn)一大堆Warning[25]: Label 'xxx' is defined pubweak in a section implicitly declared root 的警告,點(diǎn)進(jìn)去是指到啟動文件startup_stm32f10x_xd.s里面的,這個(gè)問題有網(wǎng)友說是IAR在早期的版本里面使用了core_cm3文件,而在6以后高版本IAR中就不需要了。解決的辦法IAR官方也給出了方案了(文章末尾):

具體做法就是在啟動文件里面startup_stm32f10x_xd.s(雙擊警告可以直接打開),在SECTION .text:CODE:REORDER(1)后面添加一個(gè)NOROOT,改成下面這個(gè)樣子,注意那個(gè)數(shù)字是在NOROOT后面的。每一個(gè)SECTION都添加后保存,再次編譯就不會出錯了。

  1. Reset_Handler  
  2.         LDR     R0, =SystemInit  
  3.         BLX     R0  
  4.         LDR     R0, =__iar_program_start  
  5.         BX      R0  
  6.           
  7.         PUBWEAK NMI_Handler  
  8.         SECTION .text:CODE:REORDER:NOROOT(1)  


Warning[25]: Label 'xxxxx' is defined pubweak in a section implicitly declared root

EW targets: ARM, STM8
EW component: Assembler
Keywords: assembly
Last update: January 12, 2015

Problem
After upgrading to...
EWARM 7.10.1
EWSTM8 2.10.1
...the Warning[25] is issued during assembly of a file that assembled without warning on earlier version of the Embedded Workbench.


Solution
To avoid the warning, add ":NOROOT" to the "SECTION" control directive.
Add the ":NOROOT" to the left of the ()-part of the line.

      PUBWEAK NMI_Handler
      SECTION .text:CODE:REORDER:NOROOT(1)
  NMI_Handler


Background
The assembler is issuing Warning[25] for a deprecated assembler construction.

The deprecated assembler source construction looks like this:

      PUBWEAK NMI_Handler
      SECTION .text:CODE:REORDER(1)
  NMI_Handler


Details
The assembler control directive of "SECTION" consists of:

SECTION section :type [:flag] [(align)]

The change is only to be made among the flag items. I.e. don't change the"SECTION" , "section" , ":type" nor the "[(align)]" parts of the line. (For example if the alignment is expressed as (2) then keep it at (2). (The (2) stands for an alignment of 4 bytes, as the (2) is the power of two to which the address should be aligned.))

The "[:flag]"-part can have these flags:
ROOT (the default mode) or NOROOT
and
REORDER or NOREORDER (the default mode)
Where now the Warning from the Assembler shows that the "explicit noroot", due to the directive "PUBWEAK", mismatch the default mode, which gives an "implied root"
So the "explicit noroot", from "PUBWEAK", should be matched with the flag"NOROOT".

The details for the assembler control directive of "SECTION" can be found in the chapter "Section control directives" in the "IAR Assembler™ Reference Guide."

All product names are trademarks or registered trademarks of their respective owners.

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:151834 發(fā)表于 2018-10-23 13:20 | 只看該作者
學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表