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

 
 
> 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
Ответов
Tiro
сообщение Sep 27 2006, 11:32
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Ну прочтите же, наконец, документацию!

excl.gif Перемещаем .data

WinAVR 20060421, avr-libc-user-manual-1.4.4.pdf

8.7.2 The .data Section
This section contains static data which was defined in your code. Things like the fol-
lowing would end up in .data:

Код
char err_str [] = "Your program has died a horrible death!";
struct point pt= { 1, 1 };


It is possible to tell the linker the SRAM address of the beginning of the .data section.
This is accomplished by adding -Wl,-Tdata,addr to the avr-gcc command
used to the link your program. Not that addr must be offset by adding 0x800000
the to real SRAM address so that the linker knows that the address is in the SRAM
memory space. Thus, if you want the .data section to start at 0x1100, pass 0x801100
at the address to the linker.

excl.gif Для того, чтобы привязать переменную к абсолютному адресу, можно назначить ей уникальное имя секции при помощи указания атрибута. Способ указания атрибутов переменных рассмотрен в gcc.pdf, раздел 5.32 Specifying Attributes of Variables.

Вот пример :

Код
int my_glob_var __attribute__ (( section ("my_glob_var") ));


excl.gif Как переместить секцию, написано в разделе 8.10.3 файла avr-libc-user-manual-1.4.4.pdf
Если линковка выполняется из avr-gcc, а не прямым вызовом avr-ld, то в командной строке (или в строке Makefile, где вызывается avr-gcc, надо написать -Wl,--section-start=.my_glob_var=0x801234
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
- - aesok   Цитата(Serg79 @ Sep 27 2006, 11:21) Как р...   Sep 27 2006, 11:37
|- - defunct   Цитата(aesok @ Sep 27 2006, 14:37) Язык ...   Sep 28 2006, 23:50
|- - IgorKossak   Цитата(defunct @ Sep 29 2006, 02:50) Цита...   Sep 29 2006, 06:50
|- - 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 Текстовая версия Сейчас: 31st July 2025 - 06:19
Рейтинг@Mail.ru


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