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

 
 
 
Reply to this topicStart new topic
> Расположение глобальных переменных по адресу
_Артём_
сообщение Apr 2 2007, 18:12
Сообщение #1


Гуру
******

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



Не пойму как правильно объявить переменные в c- и h-файлах.

В c-файле пишу так:

#pragma location=0xC00
__no_init unsigned char Var1[256];

__no_init unsigned char Var2[256]@0xD00;

Как при этом эти переменные должны описываться в соотв. h-файле?

Пробовал так:

#pragma location=0xC00
extern __no_init unsigned char Var1[256];

extern __no_init unsigned char Var2[256]@0xD00;

Но тогда компилятор начал почти все переменные распологать по адресам больше 0xF00 и задействовал внешнюю память (которой нет).
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Apr 2 2007, 18:18
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(_Артём_ @ Apr 2 2007, 18:12) *
Не пойму как правильно объявить переменные в c- и h-файлах.

1) А зачем в h-файле указывать размещение? Другим модулям нужно знать только тип переменной. Хотя от компилятора зависит, наверное.
2) прагма действует до конца компилируемого файла (со всем включениями). Ее нужно отменить типа так
#pragma location default


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Apr 2 2007, 18:39
Сообщение #3


Гуру
******

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



Цитата(Dog Pawlowa @ Apr 2 2007, 18:18) *
1) А зачем в h-файле указывать размещение? Другим модулям нужно знать только тип переменной. Хотя от компилятора зависит, наверное.
#pragma location default


Хотелось бы знать для IAR-а...
И ещё: где правильнее располагать переменные, чтобы не помешать компилятору расположить стек и переменные (или IAR-у всё равно?).

Сообщение отредактировал _Артём_ - Apr 2 2007, 18:40
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 3 2007, 09:04
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(_Артём_ @ Apr 2 2007, 18:39) *
Хотелось бы знать для IAR-а...
И ещё: где правильнее располагать переменные, чтобы не помешать компилятору расположить стек и переменные (или IAR-у всё равно?).

Стеки, как правило, размещаются с прижатием к верху.
Если какие-нибудь сегменты данных или Ваши принудительно размещаемые переменные налезут на стеки (или другие сегменты), линкер выдаст ошибку.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Apr 3 2007, 16:45
Сообщение #5


Гуру
******

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



Цитата(IgorKossak @ Apr 3 2007, 09:04) *
Стеки, как правило, размещаются с прижатием к верху.
Если какие-нибудь сегменты данных или Ваши принудительно размещаемые переменные налезут на стеки (или другие сегменты), линкер выдаст ошибку.


Понятно...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:37
Рейтинг@Mail.ru


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