Данные .bss не помещаются в выделенный объем ОЗУ - PullRequest
0 голосов
/ 17 декабря 2018

Я сталкиваюсь с проблемой ниже во время компоновки приложения.

BuildTest/Main.elf section `.bss' will not fit in region `SDRAM_DATA'
../../../../arm-none-eabi/bin/ld.exe: region `SDRAM_DATA' overflowed by 2356 bytes

На самом деле приложение успешно скомпилировано до того, как я произвел слияние с ним другого кода.

Итак, я сначала попытался выяснить, сравнивая старый файл и новый файл, чтобы проверить, добавлен ли новый огромный глобальный или статический буфер, или нет, но я не нашел никаких полезных вещей.Также слитые файлы - это много (потребовалось 15 дней для слияния), так что теперь очень сложно проверить каждый файл.

Так есть ли способ, с помощью которого я могу получить информацию со списком новых глобальных \в раздел .bss добавлен статический буфер?

Примечание: SDRAM_DATA - это область памяти, определенная в связанном скрипте.

1 Ответ

0 голосов
/ 17 декабря 2018

Добавьте параметр генерации карты компоновщика в командную строку компоновщика.

После запуска компоновщика отфильтруйте все, что происходит в .bss, из файла карты.Если вы сделаете то же самое для сборки до слияния, тогда разница в двух списках должна дать вам указание, какая часть кода увеличила свой размер .bss.

Например, для binutils ld опция будет -Map <name of map file> или (если используется оболочка gcc): -Wl,-Map,<name of map file>

...