Объявил переменную в секции SRAM3:
Код
u8 AudioBuffer[1024] __attribute__((section("SRAM3")));
Скаттер-файл:
Код
LR_IROM1 0x08000000 0x00200000 { ; load region size_region
ER_IROM1 0x08000000 0x00200000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
DTCM 0x20000000 0x00020000 { ; RW data
}
AXI 0x24000000 0x00080000 { ; RW data
.ANY (+RW +ZI)
}
SRAM12 0x30000000 0x00040000 { ; RW data
.ANY (+RW +ZI)
}
SRAM3 0x30040000 0x00000008 { ; RW data
.ANY (+RW +ZI)
}
SRAM4 0x38000000 0x00010000 { ; RW data
}
}
Из скаттера видно, что секция SRAM3 всего 8 байт, а надо 1024.
Тем не менее, линковка успешна!
Вопрос - почему? Какого чёрта линковщик засунул переменную AudioBuffer в другую область памяти?
Что я сделал не так?
выдержка из МАР-файла. точно, вообще в другую секцию засунул!
как победить урода? (Keil)
или только через :
1) u8 *AudioBuffer=(u8*)0x30040000;
2) u8 AudioBuffer[1024] __attribute__((at(0x30040000)));
?