加入你在使用BF609第二个核进行编译时,编译器弹出一个如下警告,你会出个处理?今天我们就分享下ADI工程师给出的建议吧https://ezchina.analog.com/thread/14085
警告:
Description Resource
Path Location
Type
li2131:
Input section(s) of incompatible init qualifier detected in the output section
'L1_data_a_custom'
app.ldf
/Core1/system/startup_ldf
line 335
C/C++ Problem
li2131:
Input section(s) of incompatible init qualifier detected in the output section
'sdram_bank0_custom'
app.ldf
/Core1/system/startup_ldf
line 943
C/C++ Problem
core1的ldf文件,我使用的是默认的ldf文件,ldf文件中关于'L1_data_a_custom'和'sdram_bank0_custom'描述如下:
L1_data_a_custom
{
INPUT_SECTION_ALIGN(4)
INPUT_SECTIONS($OBJECTS_LIB(adi_fastb0_prio1_r))
INPUT_SECTIONS($OBJECTS_LIB(adi_fastb0_prio1_rw))
INPUT_SECTIONS($OBJECTS_LIB(adi_fastb0_prio0_rw))
INPUT_SECTIONS($OBJECTS_LIB(adi_fastb0_prio0_temp))
INPUT_SECTIONS($OBJECTS_LIB(adi_fastb0_prio0_r))
INPUT_SECTIONS($OBJECTSVATDLB(adi_fastb0_prio0_r))
} > MEM_L1_DATA_A
sdram_bank0_custom
{
INPUT_SECTIONS($OBJECTS(adi_slow_noprio_code))
INPUT_SECTIONS($OBJECTS(adi_slow_prio0_code))
INPUT_SECTIONS($OBJECTS(program))
INPUT_SECTIONS($OBJECTS(adi_slow_prio0_r))
INPUT_SECTIONS($OBJECTS(constdata))
INPUT_SECTIONS($OBJECTS(data1))
INPUT_SECTIONS($OBJECTS_LIB(adi_slow_prio0_rw))
INPUT_SECTIONS($OBJECTS_LIB(adi_slow_prio0_temp))
} > MEM_SDRAM_BANK0
想知道这个warning是如何引起的嘛?
想知道如何修改可以去掉这个warning吗?
答案来了~
1. INPUT_SECTION中类似于adi_fastb0_prio1_r,adi_fastb0_prio0_temp这些section名称的定义应该都是算法库中已经定义好的,所以使用算法库时也需要把这些名称加到你们的ldf文件中。关键点在于这些名称在定义时都有自己的属性,比如NO_INIT,ZERO_INIT等等,这些section各自的属性在算法库的user manual里面应该都能找到。
2. 找到这些section各自的属性后,在ldf文件的output section定义时,应该保持和input section的属性一致。如warning中指出的,L1_data_a_custom后面没有属性定义,所以出现了警告信息。