Сначала укажите диапазон внешнего ОЗУ для RAM1 (например) в диалоговом окне настроек проекта Target и убедитесь, что все остальные настройки подходят для вашего проекта.
Затем на вкладке настроек Linker снимите флажок «Использовать макет памяти из целевого диалогового окна». Это позволит вам вручную отредактировать файл разброса, который изначально будет отражать макет, определенный в настройках Target.
Отредактируйте файл разброса, чтобы создать раздел во внешнем ОЗУ (например):
RW_RAM1 0x60000000 UNINIT 0x00040000 { ; RW data
*(HEAP) ; external SRAM
}
Фактические адреса могут отличаться с вашей стороны. Если вы хотите использовать всю внешнюю оперативную память для кучи, которой достаточно, если вы хотите разрешить компоновщику размещать другие данные в этом пространстве, тогда:
RW_RAM1 0x60000000 UNINIT 0x00040000 { ; RW data
*(HEAP) ; external SRAM
.ANY (+RW +ZI)
}
Проверьте файл карты для раздела HEAP, чтобы убедиться, что пространство было выделено должным образом.
При необходимости вы можете точно так же переместить стек. Но имейте в виду, что доступ к внешней памяти может быть медленнее, чем к внутренней, поэтому это может повлиять на производительность.
Все это, конечно, предполагает, что вы правильно инициализировали внешний контроллер ОЗУ, чтобы он соответствовал внешнему устройству ОЗУ - это должно быть сделано в system_lpc1788.c (или в файле с аналогичным названием для вашего кода запуска - мой опыт работы с STM32, поэтому я не незнаю, возможно system_lpc17xx.c)
person
Clifford
schedule
27.03.2014