Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Управление сегментами из Keil uVision for ARM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
WhiteWolf
Здравствуйте.

Я пишу программу на Keil uVision v3.23 for ARM. Программа состоит из сишных и ассемблерных модулей. Мне необходимо, чтобы определенная часть программы помещалась в начале FLASH-памяти МК, а оставшаяся - после этой части. В справке по этому поводу есть описание директив линкера SEGMENTS и CLASSES. Но когда я пытаюсь использовать эти команды, результат нулевой.

Когда я вызываю из среды окно "Options for Target ...", и на закладке LA Locate пытаюсь определить новый класс для сегментов, например так: INITIAL_LOADER (0x80000-0x804FF), то при компиляции получаю:
*** ERROR L237: INVALID CLASS NAME
Описания этой ошибки в справке нет

Когда я директивой SEGMENTS хочу установить порядок следования сегментов - один раньше, второй после, то программа компилируется, но просмотр файла ProjectName.map показывает, что линкер никак не реагирует на мою директиву.

Я что-то делаю не так?
DeadMoroz
Если Вы используете RV компилятор, то для манипуляций с сегментами можно использовать scatter (.scf) файл (указывается в свойствах линкера). В Кейле есть соответствующие примеры.
Что-то типа этого (для AT91M40800):
LOAD_FLASH 0x00400000
{
Flash 0x00400000
{
File1.o (EnterPoint1, +First)
* (+RO)
}
ExtRAM 0x01400000
{
* (+RW, +ZI)
}
}
Т.е. во флэше первым будет лежать код из модуля File1 с точкой входа EnterPoint1, а далее будет остальной код (RO), во внешней памяти будут расположены все данные (RW, ZI).
WhiteWolf
Я использую Keil компилятор.

В общем, уже разобрался - линкер управляет сегментами именно так, как написано в справке. Виновата моя невнимательность при чтении справки - там написано, что имя класса сегмента должно начинаться с CODE, CONST или DATA. Порядок сегментов тоже задается как написано в справке - я оказывается смотрел не тот Map-файл (не из той папки, идиотская ошибка конечно).

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