Цитата(mdmitry @ Nov 30 2012, 17:55)

Вы бы описали задачу подробно: микропроцессор и аппаратное окружение, компилятор, ключи компиляции, что и как в файле линкера настроено.
LPC1788 Процессор. IAR Embedded workbench.
В файле линкера часть кода идет во флеш ром (0x00 - 0x0007FFFF)
стек идет в RAM: (0x10000000 - 0x1000FFFF)
И остальное - это код и данные идут в SDRAM (0xA0000000 - 0xA1FFFFFF)
В memory map написано:
"P3": place in [from 0xa0000000 to 0xa1ffffff] {
ro section ...наименования секции};
"P4": place in [from 0xa0000000 to 0xa1ffffff] { rw };
"P5": place in [from 0xa0000000 to 0xa1ffffff] { block HEAP };
У P3 размер 0xad2ac.
Я решил скопировать из файла бинарника область от 0xA0000000 - 0xA00AD2AC
Я смотрю в файл бинарника начиная с 0xA0000000го байта, и сравниваю с тем, что находится фактически в памяти через дебаггер
выходит что не совпадают значения.
Они начинают совпадать начиная с 0xA0000040 го байта.
Цитата(KRS @ Nov 30 2012, 22:39)

Так там просто дырка в адресации! Часть кода для флеша, часть для SDRAM а между ними ff заполнено просто - это же бинарник!
Генерируйте intel HEX или IAR simplecode.
Или разделите проекты для флеша и sdram - тогда дырки не будет.
Загрузку кода с SD карты прийдется делать. Возьмите Fatfs там есть все необходимое.
Если у вас конечно обычный микроконтроллер из серии LPC17xx или STM32...
У меня не совпадают байты из бинарного файла по адресу начала адреса SDRAM (0xA0000000)
с байтами, которые фактически находятся в SDRAM после запуска программы через дебаггер.
Начиная с адреса 0xA0000000, судя по memory map файлу находится секция кода. То есть не должна она меняться (read only).
Вот я и не могу понять в чем проблема.
Но если пропарсить ELF файл через программу ELF Viewer то можно увидеть, что секция кода расположена по адресу 0xA0000000 имеет содержимое, которое совпадает с фактическими байтами из программы. Как найти соответсвующий код в бинарном файле?