roboforum.ru

Технический форум по робототехнике.
Текущее время: 22 май 2025, 21:46

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 08 янв 2011, 23:34 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Есть ли оно?

Добавлено спустя 3 часа 59 минут 36 секунд:
В общем, оказалось, что есть, только какое-то ущербное.
Баг признан.
http://www.nongnu.org/avr-libc/bugs.html
http://sourceware.org/bugzilla/show_bug.cgi?id=1038


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 09 янв 2011, 06:22 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Как я понял, баг этот касается лишь объявления вершины стэка, с собственно слабыми символами он общего не имеет

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 09 янв 2011, 06:52 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Ну, значит я что-то делаю не так...

Не могу переопределить существующую слабую функцию новой.
Вот объявленную (но неопределенную) переопределить могу, и посмотреть в программе, определена ли она - могу. А если она уже определена, то никак - либо компилятор ругается (причем иногда непонятные ошибки выдает), либо не работает...

Примера нигде не нашел.
Пробовал аттрибуты weak и alias, и вместе, и по отдельности и т.п.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 09 янв 2011, 08:42 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Show me the code :)

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 09 янв 2011, 14:35 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
как отстал я от новшеств((( а что есть слабая функция?

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 09 янв 2011, 16:00 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
blindman писал(а):
Show me the code :)

Хорошая шутка - там кода-то две с половиной строчки.

В общем заработало вот в таком варианте:

Код:
weak.c
==============================================
#include <avr/io.h>
void __attribute__((weak)) f(unsigned char c)
{
   PORTB = c;
}

strong.c
==============================================
#include <avr/io.h>
void f(unsigned char c)
{
   PORTС = c;
}

main.c
==============================================
extern void f(unsigned char c);
void main(void)
{
   f(10);
}


в варианте из даташита:
Код:
void f (unsigned char c) __attribute__ ((weak, alias ("__f")))

ругается на синтаксис.

Romikgy писал(а):
а что есть слабая функция?

Слабое определение - это когда ты определяешь функцию (или переменную) "слабо" - например в библиотеке. А другой программист может прицепить эту твою библиотеку, но определить свою функцию с тем же именем, и линкер не будет ругаться, а будет использовать новую функцию...

Ну, как-то так :)
(Я не программист, если что - в точных терминах могу путаться.)

Ну например - обработчик прерываний. Вот он есть какой-то "по умолчанию", а ты можешь его переопределить на свой. Это совсем не новшество... просто редкостная штука - мало кто в такие дебри лезет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 09 янв 2011, 16:14 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
жосский офф, но таки:

я вот балдею с сей и прочего.. напридумывали столько, что изучать будешь всю жизнь.. не знаю прав я или нет.. но мне такой путь усложнения языка кажется мертвым...

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 09 янв 2011, 16:44 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
А мне кажется мертворожденными современные дергания.
Вот пока эд будет под "android 2.1" что-то ковырять, у всех уже будет "humanoid 3.5" :)
А время жизни проекта в непотребительских областях (вояки, пром, СХ) - хоть и сокращается, но все равно это десятки лет.

Считаю, что нужно качественно научиться хотя бы чему-то одному, а не бросаться на каждую блестящую рекламку. Помните, как все рекламировали Джаву для интернет-приложений? и где она теперь? Флэш ее вытеснил. А до этого, если помните, был макромедиа шоквейв... и где теперь тот шоквейв. Сейчас майкрософт двигает Сильверлайт, но где он будет, когда прийдет HTML5?

Точно так же перспективы андроида, например, по-моему крайне туманны.

Добавлено спустя 4 минуты 9 секунд:
Duhas писал(а):
но мне такой путь усложнения языка кажется мертвым...

А какой путь усложнения языка вам кажется живым? :wink: :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 09 янв 2011, 17:17 
Не в сети
Аватара пользователя

Зарегистрирован: 16 май 2009, 12:50
Сообщения: 1530
Откуда: Россия
прог. языки: Java, C
Цитата:
Помните, как все рекламировали Джаву для интернет-приложений? и где она теперь?

Бугагашеньки, у меня аж слезы от смеха потекли, а от сравнерия JEE и флеша - ресницы поседели. Где она? Вы серьезно? Она натянула все другие _недоязыки_ в этой области.
И да, хтмл5 уже несколько лет есть, вот что вы под этими буквами подразумеваеие - другое дело.
На мое сообщение отвечать не надо - отвечать не стану. Просто очень забавно вы сравнили тостер с мазератти, а потом с оставшимся хламом в гараже.

_________________
"There is nothing better than sliding down snow and flying through the air" (с) Shane McConkey.
Lieber ein Brett am Fuß als eins vorm Kopf, aber lieber ein Brett vorm Kopf als zwei am Fuß.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 09 янв 2011, 18:28 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Цитата:
Считаю, что нужно качественно научиться хотя бы чему-то одному, а не бросаться на каждую блестящую рекламку.

Я согласен. Производители просто бомбардируют нас все новыми и новыми технологиями и при этом получается так, что программисту "не поднять головы", насколько быстро все меняется.
Но и все же появляются новые и интересные технологии, которые стоит брать на вооружение.

Цитата:
но мне такой путь усложнения языка кажется мертвым...

Я считаю, что для встраиваемых систем уже пришло время более современных языков нежели чем Си.
Одним из самых удачных языков для реализации на микроконтроллере я считаю Оберон. Он очень компактен, позволяет использовать несколько парадигм программирования, имеет жесткую типизацию и автоматическую сборку мусора.

Хотя у меня есть некоторые соображения как модифицировать Оберон так, чтобы он был пригоден для реализации супер-надежных систем.

Добавлено спустя 1 минуту 17 секунд:
Цитата:
Она натянула все другие _недоязыки_ в этой области.

Видимо имелось ввиду технология JavaApplet.

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 09 янв 2011, 19:42 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Виталий писал(а):
Но и все же появляются новые и интересные технологии, которые стоит брать на вооружение.

Конечно, просто они часто сырые или непродуманные, в результате запуск этих технологий получается "кривым", растянутым, невнятным. Часто ценные фишечки, находки, идеи просто гибнут под горой неудобств, багов, несовместимости и т.п.
Производители ставят цель быстро выйти на рынок - на полноценное тестирование уже просто откровенно забивают, ("кагбе" думая, что пользователи за них оттестируют и пришлют им репорты или багфиксы)... Но пользователь не торопится обкатывать, а тем более полноценно тестировать чужое г... у него есть выбор и ему тоже надо свой продукт на рынок выплюнуть - вот он и "голосует ногами"...

Цитата:
Одним из самых удачных языков для реализации на микроконтроллере я считаю Оберон.

Может быть. Тут нужно понимать, что микроконтреллеры - эта такое разношерстное понятие. И часто в одном и том же проекте приходится программировать на НУ ОЧЕНЬ разных уровнях. Где-то спускаться до ассемблера, переписывания стартап-кодов, низкоуровневых обработчиков и т.п. А где-то наоборот сильно абстрагироваться (например в пользовательском интерфейсе или сетевых протоколах).
Я не думаю, что можно предложить какое-то единое средство, си пока достаточно удачно спозиционировался для мелких применений с углублением к железу. Для более высокого уровня его, конечно, маловато (примочки, конечно, появляются, но, имхо, выглядят достаточно искуственными костылями).

Цитата:
Видимо имелось ввиду технология JavaApplet.

Да, конечно. То что на веб страничках исполняется в окне браузера.
Я и не спорю, что некоторые другие применения джавы - гораздо более успешны - те же телефоны, например. (Хотя там и всплывают свои проблемы).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 10 янв 2011, 07:47 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Michael_K писал(а):
там кода-то две с половиной строчки.

Можно и полстрочки по-разному написать

"В варианте из даташита" пишется вот так:
Код:
main.c
=================
extern void f(void);
int main(void)
{
   f();
   for(;;);
}

strong.c
=================
void f (void)
{
   PORTB = 0x55;
}

weak.c
=================
void f (void) __attribute__ ((weak, alias ("__f")));

void __f(void)
{
   PORTB = 0xAA;
}

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 10 янв 2011, 13:47 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
Michael_K писал(а):
Слабое определение - это когда ты определяешь функцию (или переменную) "слабо" - например в библиотеке. А другой программист может прицепить эту твою библиотеку, но определить свою функцию с тем же именем, и линкер не будет ругаться, а будет использовать новую функцию...

Ну, как-то так :)
(Я не программист, если что - в точных терминах могу путаться.)

Ну например - обработчик прерываний. Вот он есть какой-то "по умолчанию", а ты можешь его переопределить на свой. Это совсем не новшество... просто редкостная штука - мало кто в такие дебри лезет.

имхо , то о чем вы говорите есть перегрузка функций , очень часто юзается в С++ (перегрузка методов)
если юзаете си ++ создавайте классы и полный вперед....
на чистом си используют подмену адреса самой ф-ции , как с тем же прерыванием.... пишем свою ф-цию , берем ее адрес, и записываем на место вектора прерывания, так же можно поступать и с другими ф-циями

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 10 янв 2011, 14:16 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
не, Ромик, ты ничего не понял. "Слабые" символы разрешаются на этапе компоновки, с перегрузкой не имеют ничего общего

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 10 янв 2011, 14:55 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
blindman писал(а):
Можно и полстрочки по-разному написать

Можно - вот я их и переписывал по-разному. Только зачем же в данном случае на мои 50 неправильных вариантов смотреть?

Я бы понял, если б там было две страницы кода, в которые где-то вкралась маленькая ошибочка...

blindman писал(а):
"В варианте из даташита" пишется вот так:

О! Спасибо!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO