|
Вопрос по IAR, Настройки среды программирования |
|
|
|
 |
Ответов
|
Jan 6 2014, 13:29
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Уже устал биться с линкером. Помогите... У меня в проекте на ассемблере 2 файла (1 и 2). В 1 основные функции программы, во 2 так сказать рутинные функции (умножение, деление и прочее). Функции из файла 2 вызываются в 1 файле посредством директив PUBLIC и EXTERN. XCL-файл я использую свой. Его содержимое, состоящее из одной строки, такое: Код -Z(CODE)CODE=FC60-FFDF,9668-97EB // Весь мой код должен быть в этих диапазонах адресов Перед каждой функцией в файлах 1 и 2 я указываю сегмент размещения. Делаю это вот так (на примере функции умножения): Код RSEG CODE:NOROOT:REORDER:SORT Mul16u16uTo32u: DINT NOP MOV R12, &MPY MOV R13, &OP2 MOV &RESLO, R12 MOV &RESHI, R13 EINT RET Все было хорошо, пока мой код был мал. Линкер его размещал начиная с адреса FC60. Я думал, что когда закончится место в диапазоне FC60-FFDF, то линкер начнет размещать код в диапазоне 9668-97EB. Однако этого не произошло. Когда размер скомпилированного кода стал превышать размер диапазона FC60-FFDF, то линкер выдал мне ошибку: Цитата Linking Error[e16]: Segment CODE (size: 0x384 align: 0x1) is too long for segment definition. At least 0x4 more bytes needed. The problem occurred while processing the segment placement command "-Z(CODE)CODE=FC60-FFDF,9668-97EB", where at the moment of placement the available memory ranges were "CODE:fc60-ffdf,CODE:9668-97eb" Reserved ranges relevant to this placement: 9668-97eb CODE fc60-ffdf CODE Error while running Linker Total number of errors: 1 Total number of warnings: 0 Я попробовал изменить порядок диапазонов адресов в XCL-файле. Однако это не помогло. Линкер выдает ту же ошибку. Что самое интересное, после изменения порядка адресов в XCL-файле, я убрал некоторые строки кода (чтобы "все стало помещаться"). После компиляции ошибки не стало, однако линкер все равно размещает код в диапазоне FC60-FFDF, хотя в XCL-файле этот диапазон прописан после диапазона 9668-97EB. Подскажите, что за напасть и как с ней бороться...  P.S. Для информации: CODE NOROOT, ROOT NOROOT means that the segment part is discarded by the linker if no symbols in this segment part are referred to. Normally, all segment parts except startup code and interrupt vectors should set this flag. The default mode is ROOT which indicates that the segment part must not be discarded.
REORDER, NOREORDER REORDER allows the linker to reorder segment parts. For a given segment, all segment parts must specify the same state for this flag. The default mode is NOREORDER which indicates that the segment parts must remain in order.
SORT, NOSORT SORT means that the linker sorts the segment parts in decreasing alignment order. For a given segment, all segment parts must specify the same state for this flag. The default mode is NOSORT which indicates that the segment parts are not sorted.
Сообщение отредактировал d7d1cd - Jan 6 2014, 13:35
|
|
|
|
|
Jan 6 2014, 14:59
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Цитата(rezident @ Jan 6 2014, 17:52)  Приложите в сообщению весь ваш XCL-файл полностью. Приложил...
|
|
|
|
Сообщений в этой теме
d7d1cd Вопрос по IAR Nov 8 2013, 18:19 Xenia Цитата(d7d1cd @ Nov 8 2013, 22:19) Подска... Nov 8 2013, 18:35 d7d1cd При попытке компиляции IAR выдает ошибку Fatal Err... Nov 9 2013, 04:51 Xenia Цитата(d7d1cd @ Nov 9 2013, 08:51) Спасиб... Nov 9 2013, 15:56  d7d1cd Цитата(Xenia @ Nov 9 2013, 19:56) А потом... Nov 9 2013, 17:31   Xenia Цитата(d7d1cd @ Nov 9 2013, 21:31) По рас... Nov 9 2013, 20:19 d7d1cd Попытался указать переменной конкретный адрес. Нич... Nov 10 2013, 10:30 Xenia Цитата(d7d1cd @ Nov 10 2013, 14:30) В код... Nov 10 2013, 12:25  d7d1cd Сделал объявление переменной глобально, то есть вн... Nov 10 2013, 13:42   Xenia Цитата(d7d1cd @ Nov 10 2013, 17:42) Все х... Nov 10 2013, 13:53 d7d1cd Хорошо. А возможно ли какой-то локальной переменно... Nov 10 2013, 14:04 SSerge Цитата(d7d1cd @ Nov 10 2013, 21:04) Возмо... Nov 10 2013, 14:45  d7d1cd Цитата(SSerge @ Nov 10 2013, 18:45) Остав... Nov 10 2013, 14:57   rezident Цитата(d7d1cd @ Nov 10 2013, 19:57) Если ... Nov 11 2013, 20:28 Xenia Цитата(d7d1cd @ Nov 10 2013, 18:04) Хорош... Nov 10 2013, 14:53 d7d1cd Уважаемый rezident, объяснения как всегда на высот... Nov 12 2013, 05:02 Xenia Цитата(d7d1cd @ Nov 12 2013, 09:02) Хочет... Nov 12 2013, 09:33  d7d1cd Цитата(Xenia @ Nov 12 2013, 13:33) ...нап... Nov 12 2013, 10:01   MrYuran Цитата(d7d1cd @ Nov 12 2013, 14:01) Как п... Nov 13 2013, 06:34 d7d1cd Создал я проект, добавил в него файл. В этом файле... Nov 13 2013, 09:09 MrYuran Прямо так и вызывать, предварительно объявив прото... Nov 13 2013, 09:26 d7d1cd Попробовал следовать Вашему совету. Файл с функцие... Nov 13 2013, 10:19 MrYuran Цитата(d7d1cd @ Nov 13 2013, 14:19) Скажи... Nov 13 2013, 10:53 d7d1cd Ошибка Bad instruction. Возникает в строке ассембл... Nov 13 2013, 11:02 d7d1cd Сделал я проект. Прикладываю его сюда. В этом прое... Nov 14 2013, 07:48 rezident Цитата(d7d1cd @ Nov 14 2013, 12:48) Сдела... Nov 14 2013, 15:20 d7d1cd Спасибо всем за помощь! Наконец то я победил к... Nov 14 2013, 17:28 d7d1cd И снова здравствуйте. Теперь я умею в одном проект... Nov 17 2013, 09:56 Xenia Цитата(d7d1cd @ Nov 17 2013, 13:56) Подск... Nov 17 2013, 10:47  d7d1cd Цитата(Xenia @ Nov 17 2013, 14:47) У IAR ... Nov 17 2013, 11:08   Xenia Цитата(d7d1cd @ Nov 17 2013, 15:08) Пока ... Nov 17 2013, 12:01    d7d1cd Цитата(Xenia @ Nov 17 2013, 16:01) ...вы ... Nov 17 2013, 12:49     Xenia Цитата(d7d1cd @ Nov 17 2013, 16:49) Как ж... Nov 17 2013, 13:13 d7d1cd И снова здравствуйте. Подскажите, пожалуйста, как ... Nov 22 2013, 07:29 Xenia Цитата(d7d1cd @ Nov 22 2013, 11:29) Подск... Nov 22 2013, 11:23 d7d1cd Спасибо, Xenia. Я пока не пробовал в компиляторе, ... Nov 22 2013, 16:36 d7d1cd Все получилось. Спасибо. Есть еще вопрос по распол... Nov 23 2013, 16:53 Xenia Цитата(d7d1cd @ Nov 23 2013, 20:53) Спаси... Nov 23 2013, 18:01 d7d1cd Я пытался свою задачу выполнить следующим образом.... Nov 24 2013, 07:04 Xenia Цитата(d7d1cd @ Nov 24 2013, 11:04) Все з... Nov 24 2013, 17:58 d7d1cd А чем, собственно, отличаются конфигурации Debug и... Nov 25 2013, 15:21 Xenia Цитата(d7d1cd @ Nov 25 2013, 19:21) А чем... Nov 25 2013, 21:12 d7d1cd Привет всем. Снова вопрос по среде программировани... Dec 28 2013, 15:06 d7d1cd Разобрался в своем вопросе. Необходимо перед объяв... Jan 1 2014, 13:25 d7d1cd Решил один вопрос, появился другой. Задам тут, мож... Jan 4 2014, 09:09 rezident Цитата(d7d1cd @ Jan 4 2014, 14:09) А нель... Jan 4 2014, 15:31 d7d1cd Спасибо за помощь! Jan 4 2014, 17:15 SM Сделайте еще одну секцию с кодом, с другим именем,... Jan 6 2014, 15:30 d7d1cd Цитата(SM @ Jan 6 2014, 19:30) Сделайте е... Jan 6 2014, 15:46  SM Цитата(d7d1cd @ Jan 6 2014, 19:46) Я пони... Jan 6 2014, 16:57   d7d1cd Цитата(SM @ Jan 6 2014, 20:57) Вообще, об... Jan 6 2014, 17:16    SM Цитата(d7d1cd @ Jan 6 2014, 21:16) Тогда ... Jan 6 2014, 19:17 d7d1cd Итак, у меня снова возник вопрос по системе програ... Feb 27 2014, 15:30 rezident Цитата(d7d1cd @ Feb 27 2014, 20:30) А воз... Feb 27 2014, 15:38  d7d1cd Цитата(rezident @ Feb 27 2014, 19:38) Сде... Feb 27 2014, 16:09   _Артём_ Цитата(d7d1cd @ Feb 27 2014, 20:09) [code... Feb 27 2014, 16:54    d7d1cd Цитата(_Артём_ @ Feb 27 2014, 20:54) Може... Feb 27 2014, 16:56     _Артём_ Цитата(d7d1cd @ Feb 27 2014, 20:56) ASEG ... Feb 27 2014, 17:23 d7d1cd Вроде разобрался как использовать директиву ASEG:
... Feb 28 2014, 13:39 d7d1cd При создании проекта на ассемблере я вижу, что ест... Mar 11 2014, 13:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|