Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Настройки в Keil IROM1, IROM2, IRAM1, IRAM2
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
alt3857
Привет! Подскажите, пожалуйста что означают эти цифры. У меня LPC1766, сейчас стоят такие значения:
IROM1 start:0x0 size 0x40000
IRAM1 start: 0x10000000 size: 0x8000
IRAM2 start: 0x2007C000 size: 0x8000.
Появилась необходимость работать с IAP - программировать флеш из программы, нужно разобраться. Не пойму как сделать так, чтобы во флеш сохранялись нужные данные (данные калибровки) при перепрошивке рабочей программы с помощью отладчика.
SII
Это начальные адреса и размеры блоков ПЗУ и ОЗУ, используемых для программы (причём разделение не столько по типу памяти, сколько по назначению: хранить ли информацию, доступную только для чтения -- главным образом код, или же доступную для чтения и записи). Эта информация используется при компиляции и сборке проекта, а не при программировании памяти. Запись же во флэшку управляется инфой, заданной на вкладке Utilities -- там тип программатора, а в его свойствах -- алгоритм, используемый для записи. Это зависит от типа контроллера, так что тут не подскажу -- работаю с АТМЕЛовскими МК.
alt3857
Спасибо, SII. Со второй частью разобрались. Можно поподробнее про IRAM1 и IRAM2 - где эти адреса, находятся (флеш, ОЗУ), как моя программа с ними связана? Особенно непонятно что за адрес 0x2007C000?
SII
В областях ROM будет находиться код и константы, в RAM -- переменные и стеки. Компоновщик использует эту информацию, чтобы собрать программу для работы именно в этих адресах, если на вкладке Linker стоит галка Use Memory Layout from Target Dialog. Если же она сброшена, надо написать и указать на вкладке Linker scatter-файл, в котором будут прописаны адреса всех областей памяти, а также к каким областям какие секции каких файлов относятся. Нужда в этом возникает редко -- только если нужно какое-то особо нестандартно-извращённое распределение памяти.

Ещё раз подчеркну, что на вкладке Target ROM и RAM означают не разные физические типы памяти (ПЗУ и ОЗУ соответственно), а их логическое назначение -- хранение неизменяемой и изменяемой информации. Например, у AT91SAM9261, с которым вожусь в настоящее время, встроенной флэш-памяти нет вообще, имеется только 160 килобайт ОЗУ и намертво зашитое ПЗУ, в котором находится загрузчик, способный загрузить информацию в ОЗУ с различных типов внешней флэш-памяти. Пока я отлаживаю программу, я вообще не прошиваю её во флэшку (таковая на плате присутствует -- надо ж где-то хранить программу, когда отладка будет завершена), а гружу прямо в ОЗУ, хотя код программы находится в области, носящей имя IROM1.

ADD. Что конкретно означают адреса в Вашем случае, я не знаю -- я ж с Вашим контроллером дела не имел. Но, по идее, KEIL знаком с разными типами контроллеров и понимает, в какие области следует записывать код, а в какие -- данные. Чтобы узнать точно, нужно вникать в описание контроллера (даташит которое).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.