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

 
 
> резервирование места в ОЗУ
yung
сообщение Jan 13 2012, 14:37
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 25-03-05
Из: Рязань
Пользователь №: 3 669



Здравствуйте! Работаю с Atmega128 и компилятором ICC6.31. Возникла необходимость, чтобы ряд глобальных переменных находился по фиксированным адресам. Сделал это путем, предложенным встроенным application builder-ом

void mapping_init(void)
{
asm(
".area memory(abs)\n"
".org 0x0a00\n"
" _temp1:: .blkb 4\n"

".text\n"
);
}

В АВР-студио эта процедура не видится (стоит ret) вместо тела. А компилятор не видит, что эта область занята и пытается по тем же адресам расположить другие переменные. Можно ли как-то объяснить ему, что место уже занято?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
hd44780
сообщение Mar 16 2012, 07:16
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Эта бяка другого рода - у этой меги память 128 килобайт, а компилятор этого не понимает.
Лечится какими-то настройками проекта. Какими именно - не знаю, не пользовался, но где-то читал об этом.

Насчёт "килослов". Единица измерения всегда байт, а не слово. То, что АВРы шьют флэш словами, а не байтами - это "их проблемы", не влияющие на общепринятую терминологию.
Современные x86 процы имеют ШД 32 бита (4 байта). Но мы же не начинаем из-за этого измерять объём каких-то данных в двойных словах?

Сообщение отредактировал hd44780 - Mar 16 2012, 07:19


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th August 2025 - 05:42
Рейтинг@Mail.ru


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