В областях ROM будет находиться код и константы, в RAM -- переменные и стеки. Компоновщик использует эту информацию, чтобы собрать программу для работы именно в этих адресах, если на вкладке Linker стоит галка Use Memory Layout from Target Dialog. Если же она сброшена, надо написать и указать на вкладке Linker scatter-файл, в котором будут прописаны адреса всех областей памяти, а также к каким областям какие секции каких файлов относятся. Нужда в этом возникает редко -- только если нужно какое-то особо нестандартно-извращённое распределение памяти.
Ещё раз подчеркну, что на вкладке Target ROM и RAM означают не разные физические типы памяти (ПЗУ и ОЗУ соответственно), а их логическое назначение -- хранение неизменяемой и изменяемой информации. Например, у AT91SAM9261, с которым вожусь в настоящее время, встроенной флэш-памяти нет вообще, имеется только 160 килобайт ОЗУ и намертво зашитое ПЗУ, в котором находится загрузчик, способный загрузить информацию в ОЗУ с различных типов внешней флэш-памяти. Пока я отлаживаю программу, я вообще не прошиваю её во флэшку (таковая на плате присутствует -- надо ж где-то хранить программу, когда отладка будет завершена), а гружу прямо в ОЗУ, хотя код программы находится в области, носящей имя IROM1.
ADD. Что конкретно означают адреса в Вашем случае, я не знаю -- я ж с Вашим контроллером дела не имел. Но, по идее, KEIL знаком с разными типами контроллеров и понимает, в какие области следует записывать код, а в какие -- данные. Чтобы узнать точно, нужно вникать в описание контроллера (даташит которое).
Сообщение отредактировал SII - Nov 18 2010, 11:49
|