大家好,我使用IAR(9.30.1)在做第28章实验时自定义了一个icf,想将不同属性的变量放到不同的SDRAM中。
icf如下图
/*-user define Regions-*/
place in SRAM1_region { section .SRAM1_DATA };
place in SRAM2_region { readwrite section .USER_DEFINE_DATA };
place in SRAM3_region { zeroinit section .USER_DEFINE_DATA };
place in AXISRAM_region { section .AXISRAM_DATA };
place in ITCM_region { ro section .ITCM_CODE };
place in ITCM_region { ro section .USER_DEFINE_DATA };
/*-user define Regions end-*/
正常情况下,ZI属性的NoInitialData会被定义到SRAM3 , InitialData 会被定义到SRAM2,AppReadonlyAXISRM会被定义到ITCM_region。map中也确实如此,调试时查地址也如此
但是在编译和下载时出现了以下报错,让我很诧异。
1
编译时报warning如下
Warning[Be006]: possible conflict for segment/section ".USER_DEFINE_DATA": D:\PROJECT\MASTER\XD\ANFULAI\User\main.c 50
variable "InitialData @ ".USER_DEFINE_DATA"" (declared Hat line 50 of "D:\PROJECT\MASTER\XD\ANFULAI\User\main.c"h) is an initialized variable
variable "NoInitialData @ ".USER_DEFINE_DATA"" (declared Hat line 48 of "D:\PROJECT\MASTER\XD\ANFULAI\User\main.c"h) is a zero-initialized variable
variable "AppReadonlyAXISRM @ ".USER_DEFINE_DATA"" (declared Hat line 46 of "D:\PROJECT\MASTER\XD\ANFULAI\User\main.c"h) is a constant
2
下载调试时报警如下
3
debug log中显示如下
Sat Aug 13, 2022 13:24:42: Flash download warning: 16 out of 16 bytes from data record CODE:[0x0,0xf] will not be flashed
Sat Aug 13, 2022 13:24:42: There were warnings while generating flash loader input.
Sat Aug 13, 2022 13:24:42: See the Debug Log window for details.
补充,之前好像搞错了,换了750的也会报警。但是找到了类似报错的贴子, https://forums.freertos.org/t/mpu-ewarm-warnings/7286
回贴中有一句
We have examined the generated code and those warnings are harmless. You can supperss them by following these steps:
Right click on the project and click options.
Go to C/C++ Compiler --> Extra Options.
Add --diag_suppress Be006
Thanks.
就是说这不是啥问题,不用管。我认为是我把RW,RO,ZI数据都定义在这个区里导致的
至于这个解决方法,加上去后会有一堆报错,不怎么管用