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

 
 
> WinAVR и переменные
Guest_Serg79_*
сообщение Sep 27 2006, 07:21
Сообщение #1





Guests






Как разместить глобальную переменную по определенному адресу в памяти, при использовании WinAVR.
Например:
Код
/*
* Нужно разместить по адресу 0x0110
*/
char flag;

Как мне это сделать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aesok
сообщение Sep 27 2006, 11:37
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Serg79 @ Sep 27 2006, 11:21) *
Как разместить глобальную переменную по определенному адресу в памяти, при использовании WinAVR.


А зачем вам это нужно? Язык 'C ' как раз и был придуман для того чтобы избавить програмиста от ручного распределения переменных в памяти и переложить это на компилятор и линкер. Если вам нужно узнать по какому адресу компилятор расположил переменную - для этого сущесвуют указатели.

В WinAVR можно размещать переменые по абсолютным адресам:

1) Вы можете указать начало сегмента данных с адреса отличного от начала RAM, с помощью опции ликера -Tdata 0x8ххххх, и компилятор будет размещать переменые начиная с этого адреса.

2) Можоно создать свой сегмент, задать ему начальный адрес, и расположить ваши переменые в нем.


Анатолий.

Сообщение отредактировал aesok - Sep 27 2006, 11:39
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 28 2006, 23:50
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(aesok @ Sep 27 2006, 14:37) *
Язык 'C ' как раз и был придуман для того чтобы избавить програмиста от ручного распределения переменных в памяти и переложить это на компилятор и линкер.

Когда используется шина внешней памяти и по некоторым фиксированным адресам располагаются регистры внешних I/O устройств, то без ручного распределения просто нельзя обойтись...
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Sep 29 2006, 06:50
Сообщение #4


Шаман
******

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



Цитата(defunct @ Sep 29 2006, 02:50) *
Цитата(aesok @ Sep 27 2006, 14:37) *

Язык 'C ' как раз и был придуман для того чтобы избавить програмиста от ручного распределения переменных в памяти и переложить это на компилятор и линкер.

Когда используется шина внешней памяти и по некоторым фиксированным адресам располагаются регистры внешних I/O устройств, то без ручного распределения просто нельзя обойтись...

Ручного распределения действительно не избежать. То ли это будет назначение адресов в каком-нибудь выделенном сегменте, то ли определение переменных каждую в свой сегмент.
В любом случае линкеру (или программисту) работы прибавится.
Что же касается высокоуровневости языка С, то когда речь идёт о встроенных системах, то абсолютного абстрагирования от аппаратуры и её особенностей как правило не избежать. Об этом уже очень много писали.
Главное здесь, чтобы все подобные особенности были определены единожды (hal, bsp, называйте это как хотите) и доступны через заголовочные файлы. В этом случае никакого противоречия с С нет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Serg79   WinAVR и переменные   Sep 27 2006, 07:21
- - Сергей Борщ   Цитата(Serg79 @ Sep 27 2006, 10:21) Как р...   Sep 27 2006, 08:30
|- - Serg79   Цитата(Сергей Борщ @ Sep 27 2006, 12:30) ...   Sep 27 2006, 08:59
- - Serg79   Народ, не ужели ни кто не знает как это сделать. Д...   Sep 27 2006, 08:36
- - otrog   Для IAR-а делал так: Код#define r_mode (* ...   Sep 27 2006, 09:10
|- - Serg79   Цитата(otrog @ Sep 27 2006, 13:10) Для IA...   Sep 27 2006, 09:53
|- - Harvester   Цитата(Serg79 @ Sep 27 2006, 13:53) Цитат...   Sep 27 2006, 11:47
- - Serg79   Представляете, в отстойном CodeVision это можно сд...   Sep 27 2006, 11:06
|- - IgorKossak   Цитата(Serg79 @ Sep 27 2006, 14:06) Вы мн...   Sep 27 2006, 11:25
|- - otrog   Цитата(Serg79 @ Sep 27 2006, 15:06) Вы мн...   Sep 27 2006, 11:27
- - Tiro   Ну прочтите же, наконец, документацию! Пере...   Sep 27 2006, 11:32
|- - aesok   Цитата(defunct @ Sep 29 2006, 03:50) Цита...   Sep 29 2006, 07:12
- - AVR_Amator   По WinAVR есть очень любопытные сайты http://avr....   Oct 12 2006, 14:58


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

 


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


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