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

 
 
 
Reply to this topicStart new topic
> как в winavr напрямую указать адрес функции?, сабж
Kibi
сообщение Mar 11 2008, 13:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 11-03-08
Пользователь №: 35 811



Есть необходимость напрямую задать адреса расположения функций в winavr, .init .finit не интересуют, необходимо именно четко определить начальный адрес функции, помогите кто знает...

ах да конструкция
void test0(void) __attribute__ ((section (".test0")));

с директивой -Wl,--section-start=.test0=0xd000 не проходитsad.gif

Сообщение отредактировал Kibi - Mar 11 2008, 13:39
Go to the top of the page
 
+Quote Post
Kibi
сообщение Mar 14 2008, 07:38
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 11-03-08
Пользователь №: 35 811



вижу что ни кто не сталкивался, просто конструкция не работает, хоть линкер и пишет что секция по этому адресу создана. но саму функцию наотрез отказывается по этому адресу размещать, а для программы критично, просто неохото на асме переделыватьsad.gif может тогда подскажите что в этой конструкции не верно???? может просто у меня немного руки кривоватыsmile.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 14 2008, 08:10
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Надо создать свою секцию и указать ее размещение в скрипте линкера.
Цитата(Kibi @ Mar 14 2008, 09:38) *
вижу что ни кто не сталкивался, просто конструкция не работает, хоть линкер и пишет
Что именно пишет линкер? Приведите текст дословно. Сделайте примитивный пример, вроде
Код
int main()
{
     foo();
}
void foo() __attribute__((section ".mysection"))
{
}
добейтесь неправильного поведения и выложите сюда с мейк-файлом, файлом линкера и текстом сообщений. Что значит "с директивой -Wl, ... не проходит"? Что вы получаете? А что ожидаете? Ответ на ваш вопрос в текщей формулировке требует недюжих телепатических способностей, с котороыми у большинства, увы, напряженка.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Mar 14 2008, 09:39
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Может пусть функция размещается как обычно, а по фиксированному адресу размещать указатель на нее?
Go to the top of the page
 
+Quote Post
Kibi
сообщение Mar 14 2008, 15:06
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 11-03-08
Пользователь №: 35 811



хм, в простом примере все работает, и секция задается как надо, буду копать, почему не реботает в программе.....
Go to the top of the page
 
+Quote Post
Kibi
сообщение Mar 17 2008, 11:35
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 11-03-08
Пользователь №: 35 811



все разобрался, нашол пару глюков в компиляторе, вся проблема была в том что описание секций надо делать в основном файле, компилятор не понимает секции если они в доп файлахsad.gif гсм загрузчик готовsmile.gif
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 18 2008, 08:45
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Kibi @ Mar 17 2008, 13:35) *
все разобрался, нашол пару глюков в компиляторе, вся проблема была в том что описание секций надо делать в основном файле, компилятор не понимает секции если они в доп файлахsad.gif гсм загрузчик готовsmile.gif

????????????????????????????????
Секции описываются в скрипте линкера.
Компилятор не имеет никакого отношения к распределению секций. Все, что может компилятор, это указать имя секции, отличное от имени по умолчанию.
Где и как размещается секция - это решает линкер, на основании скрипта.
Так что никакого глюка там нет.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post

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

 


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


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