Встроенное устройство имеет две области SRAM. Сначала 0x20000000 и длина 16k. Тогда по адресу 0x20040000 длина 96к. В приложении размер результирующего раздела .bss составляет 102 КБ, поэтому он не помещается ни в одну из областей ОЗУ. Его нужно разделить между двумя регионами. Как это сделать в скрипте компоновщика .ld?
Я знаю два непонятных варианта.
Вариант A: вручную выберите объекты по имени в сценарии и разделите их на две части. С этой опцией я чувствую, что делаю вручную то, что должен делать компоновщик.
Вариант B: разместить атрибуты в исходном коде, чтобы некоторые объекты попали в специальный раздел .bss2. Этот даже хуже, чем вариант А.
Я хочу, чтобы компоновщик автоматически оптимально разделял объекты по двум областям памяти. Я знаю, что по крайней мере компоновщик IAR делает это оптимально без какой-либо ручной работы.