реклама на сайте
подробности

 
 
> Вопрос по IAR, Настройки среды программирования
d7d1cd
сообщение Nov 8 2013, 18:19
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Привет всем. Подскажите, возможно ли настроить IAR так, чтобы он сделал компиляцию кода (например какой-то отдельной функции или всего кода) строго в определенный участок флешь памяти (от сих до сих, так сказать)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
d7d1cd
сообщение Feb 27 2014, 15:30
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Итак, у меня снова возник вопрос по системе программирования.
Как известно, чтобы разместить код или переменную в определенной области памяти, необходимо в настройках линкера или в XCL-файле определить сегмент. А возможно ли это сделать прямо в файле с программой?
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 27 2014, 15:38
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Feb 27 2014, 20:30) *
А возможно ли это сделать прямо в файле с программой?

Сделать что "это"? Переменные вы и так обязаны объявлять в своей программе.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Feb 27 2014, 16:09
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(rezident @ Feb 27 2014, 19:38) *
Сделать что "это"? Переменные вы и так обязаны объявлять в своей программе.

Я пишу на ассемблере. Чтобы разместить код функции по определенному адресу, я пишу:
Код
RSEG    MySegment
Mul16u16uTo32u:                            
        ...
        RET

А в файле XCL или в опциях линкера и прописываю:
Код
-Z(CODE)MySegment=1200-1300

Так вот: нельзя ли обойтись без файла XCL и опций линкера и описание сегмента расположить в файле, где расположен код функции.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 27 2014, 16:54
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(d7d1cd @ Feb 27 2014, 20:09) *
[code]RSEG MySegment
Так вот: нельзя ли обойтись без файла XCL и опций линкера и описание сегмента расположить в файле, где расположен код функции.

Может и можно - посмотрите в документации есть ли у IAR директива ASEG или аналогичная.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Feb 27 2014, 16:56
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(_Артём_ @ Feb 27 2014, 20:54) *
Может и можно - посмотрите в документации есть ли у IAR директива ASEG или аналогичная.

ASEG есть. И ASEGN есть. Какую директиву использовать? Не особо я силен в англицком. Подскажите в чем отличие этих директив друг от друга и от директивы RSEG? Вот их описание в документации:
CODE
Beginning an absolute segment
Use ASEG to set the absolute mode of assembly, which is the default at the beginning of
a module.
If the parameter is omitted, the start address of the first segment is 0, and subsequent
segments continue after the last address of the previous segment.
Note: If a move of an immediate value to an absolute address, for example
mov #0x1234, 0x300
is made in a relocatable or absolute segment, the offset is calculated as if the code begun
at address 0x0000. The assembler does not take into account the placement of the
segment.

Beginning a named absolute segment
Use ASEGN to start a named absolute segment located at the address address.
This directive has the advantage of allowing you to specify the memory type of the
segment.

Beginning a relocatable segment
Use RSEG to start a new segment. The assembler maintains separate location counters
(initially set to zero) for all segments, which makes it possible to switch segments and
mode anytime without having to save the current program location counter.
Up to 65536 unique, relocatable segments can be defined in a single module.

Beginning a common segment
Use COMMON to place data in memory at the same location as COMMON segments from
other modules that have the same name. In other words, all
COMMON segments of the
same name start at the same location in memory and overlay each other.
Obviously, the
COMMON segment type should not be used for overlaid executable code.
A typical application would be when you want several different routines to share a
reusable, common area of memory for data.
It can be practical to have the interrupt vector table in a
COMMON segment, thereby
allowing access from several routines.
The final size of the
COMMON segment is determined by the size of largest occurrence of
this segment. The location in memory is determined by the XLINK
-Z command; see
the IAR Linker and Library Tools Reference Guide.
Use the
align parameter in any of the above directives to align the segment start
address.


Сообщение отредактировал d7d1cd - Feb 27 2014, 17:28
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - d7d1cd   Уже устал биться с линкером. Помогите... У меня в ...   Jan 6 2014, 13:29
|- - rezident   Цитата(d7d1cd @ Jan 6 2014, 18:29) Я попр...   Jan 6 2014, 13:52
|- - d7d1cd   Цитата(rezident @ Jan 6 2014, 17:52) Прил...   Jan 6 2014, 14:59
- - 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, 20:56) ASEG ...   Feb 27 2014, 17:23
- - d7d1cd   Вроде разобрался как использовать директиву ASEG: ...   Feb 28 2014, 13:39
- - d7d1cd   При создании проекта на ассемблере я вижу, что ест...   Mar 11 2014, 13:20


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 21:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016