У меня проблема с этим. Я использую ARM Cortex-A9 с DS-5 для создания прошивки без покрытия. Я изменил свой файл компоновщика, чтобы намеренно поместить LMA раздела .data рядом с разделами text и rodata, потому что его VMA времени выполнения по умолчанию находится на расстоянии 1 МБ, а изображение .bin имеет размер около 1 МБ, но содержит 90% нулей. И поэтому я намеренно сделал LMA! = VMA для экономии места. Я также добавил код в start.S, который перемещает раздел .data из его lma в vma.
Однако при загрузке результирующего файла elf в DS-5 он уже загружает все разделы в их VMA. В результате мой код start.S, который должен перемещать данные, скопирован из LMA с содержимым мусора в уже правильный VMA, и вскоре после этого этот мусор привел к сбою.
У меня был опыт работы с неравными VMA и LMA в двоичном коде в Cortex-M4, и я использовал gdb для его отладки elf, и там не было никаких проблем, но это был микроконтроллер. В моем текущем приложении процессора ARM, как бы я затем смоделировал в elf отладке сценарий правильного копирования данных из его LMA в VMA. Скорее всего, при загрузке в автономном режиме с использованием двоичного формата проблем не возникнет, но сейчас мы все еще находимся в процессе отладки elf, поэтому я должен это исправить.