|
WinAVR-20071221 и AVR Studio 4.13 SP2 Final, новые релизы программ |
|
|
|
Dec 21 2007, 19:35
|
Частый гость
 
Группа: Свой
Сообщений: 106
Регистрация: 13-05-05
Пользователь №: 4 977

|
WinAVR-20071221 hxxp://sourceforge.net/project/showfiles.php?group_id=68108 Что нового: - Added support for these devices: AT90PWM216, AT90PWM316, ATtiny43U, ATtiny48, ATtiny88, AT90PWM2B, AT90PWM3B, ATmega48P, ATmega88P, ATmega168P, ATmega328P, ATmega1284P, ATmega32HVB
- Binutils 2.18 - New version.
- GCC 4.2.2 - New version.
- avr-libc 1.6.0 - New version.
- avrdude 5.5 - New version.
- GDB / Insight 6.6 - New version.
- AVaRICE 2.7 - New version.
- SRecord 1.37 - New version.
AVR Studio 4.13 SP2(b571) hxxp://www.atmel.com/dyn/resources/prod_documents/AVRStudio4.13SP2.exe - ATmega32HVB, ATmega1284P, ATtiny48, ATtiny43U.
- Full support for the new STK600 starter kit, including programming front-end and command line tools.
- New devices in Simulator V2: ATmega164P, ATmega324P, ATmega644P, ATmega1284P, ATmega48P, ATmega88P, ATmega168P, ATmega328P, ATmega32HVB, ATtiny48 and ATtiny43U.
- ELF production file format support.
- Several enhancements in the IO view.
- and many more...
|
|
|
|
|
 |
Ответов
|
Dec 22 2007, 10:32
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(haker_fox @ Dec 22 2007, 03:55)  Судя по дате, продукт недавний. Как у него на счет стабильности? Т.е. если я использую, например scmRTOS, то все функции-процессы можно объявлять с атрибутом OS_task? Скорее всего да, но я не работал с scmRTOS, а глянув на исходники не нашeл там порта на GCC. общее правило такое, если код вызывающий функцию-процесс не расчитывает на то что регистры r2-r15, r28-r29 сохранят свое значение после возврата из этой функции, то эту функция можно объявлять с атрибутом 'OS_task'.
Сообщение отредактировал aesok - Dec 22 2007, 10:32
|
|
|
|
|
Dec 22 2007, 12:00
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(aesok @ Dec 22 2007, 12:32)  Скорее всего да, но я не работал с scmRTOS, а глянув на исходники не нашeл там порта на GCC. Он там пока в репозитории в branches/avreal лежит. Нужно ещё очень внимательно проверить. Но пользоваться уже можно. Да её и раньше портировали "частным порядком", там немного работы. Цитата общее правило такое, если код вызывающий функцию-процесс не расчитывает на то что регистры r2-r15, r28-r29 сохранят свое значение после возврата из этой функции, то эту функция можно объявлять с атрибутом 'OS_task'. И всё же как по моему вопросу - соотношению атрибутов OS_task и noreturn ? Правильно ли я понимаю, что OS_task это старый добрый noreturn минус подавление генерации команды ret и проверка компилятором построения функции как действительно никогад не возвращающей управления? Похоже, что для процессов scmRTOS правильнее применять noreturn, а OS_task оставить для тех ОС, в которых процесс может прекратить существование путём возврата из основной функции процесса.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Dec 22 2007, 12:25
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(ReAl @ Dec 22 2007, 15:00)  И всё же как по моему вопросу - соотношению атрибутов OS_task и noreturn ?
Правильно ли я понимаю, что OS_task это старый добрый noreturn минус подавление генерации команды ret и проверка компилятором построения функции как действительно никогад не возвращающей управления? Я перичитал описание атрибута 'noreturn' - основное его предназначение позволить компилятору оптимизировать вызывающию функцию, и не генерировать в ней код после вызова функции с атрибутом 'noreturn'. Как компилятор должен/может оптимизировать саму функцию к которой применен атрибут 'noreturn' надо посмотреть. Атрибут "OS_task" (OS_main) заставляет компилятор генерировать специальные версии пролога и эпилога для указанной функции. Эта функция перестает соответствовать соглашениям о вызове функций в С, и не должна вызываться из С кода. Цитата Похоже, что для процессов scmRTOS правильнее применять noreturn, а OS_task оставить для тех ОС, в которых процесс может прекратить существование путём возврата из основной функции процесса. 'noreturn' ничего не даст кроме предупреждения компилятора, если функция функция всетаки возвращает управление. Компилятор не сможет оптимизировать вызывающий код, он же написан в ассемблере. Для функции с OS_task генерируються более эффективные пролог и эпилог, если функция не не возвращается, то эпилог не генерируеться. Анатолий. PS: Для тех кто не знаком с терминами пролог и эпилог: пролог - код выполняемый до начала тала функции, сохраняет 'call-saved' реистры и выделяет место в стеке для локальных переменных. эпилог - код выполняемый после тала функции, востанавливает 'call-saved' реистры, освобождает место в стеке выделеное в прологе и выполняет команду 'RET'. Анатолий.
Сообщение отредактировал aesok - Dec 22 2007, 13:09
|
|
|
|
|
Dec 23 2007, 07:13
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(aesok @ Dec 22 2007, 14:25)  'noreturn' ничего не даст кроме предупреждения компилятора, если функция функция всетаки возвращает управление. Ну и на том спасибо :-), я стараюсь, чтобы предупреждений не было вообще и при таком подходе даже просто выдать предупреждение - уже помощь компилятора. Цитата(aesok @ Dec 22 2007, 22:05)  Разница между "noreturn' и 'OS_task' есть: первый предотвращает сохранение регстров r2-r15, второй дополнительно r28-r29. Ну и само сабой 'OS_task' работает для всех функций, вне зависимости от того возвращают они управление или нет. Я немного поэкспериментировал, для avr-gcc 4.2.2 (WinAVR-20071221) для функции, помеченной этими атрибутами, различие действительно такое (для noreturn добавляется сохранение r28,r29 в начале пролога, если же организовать возврат из функции, то и в конце эпилога) а вот 4.3.0 (сборка klen http://electronix.ru/forum/index.php?showtopic=38876) генерирует абсолютно одинаковый код для этих двух атрибутов (видать какой-то патч с winavr.cvs.sourceforge... недотащен был). Более ранние компиляторы, естетсвенно, вообще OS_task не знают. Так что я пока оставлю как есть, с noreturn, а там посмотрим, добавлю проверку версии компилятора и в зависимости от этого изменение #define OS_PROCESS на атрибут noreturn или OS_task. Цитата(Сергей Борщ @ Dec 23 2007, 00:57)  Есть еще вопрос по "noreturn" с main() в режиме С++. Как известно, main() в С++ должна быть объявлена как возвращающая int. Если к ней добавить "noreturn", то появляется warning: main.cpp:68: warning: function declared 'noreturn' has a 'return' statement хотя никаких return statement в функции нет, из for(;;) {} выхода тоже не сущствует, и никаких ret в листинге нет. Это бага? return 0; перед закрывающей скобкой '}' в main() в С++ присутствует неявно, если его не написал программист. В стандарте написано: Цитата 3.6.1 Main function ... 5 A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing return 0; А в "полновесном" С++ управление на закрывающую скобку main() может перейти и при бесконечном цикле, и при noreturn-функции (о которых стандарт вообще ничего не знает) - за счёт исключения. Поэтому return 0; всегда неявно присутствует для С++ - программы. Есть ли смысл делать в avr-gcc какой-то особый подход - я не уверен. Да, он всё равно не поддерживает исключения и за бесконечный цикл в main() не попасть никак, но "генерация" неявного retrun 0; и упомянутого предупреждения происходит, как я понимаю, на платформо-независимых этапах компиялции. А потом оптимизатор выбрасывает это как unreachable code, но это потом :-)
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
Сообщений в этой теме
Alex_NEMO WinAVR-20071221 и AVR Studio 4.13 SP2 Final Dec 21 2007, 19:35 aesok В версию avr-gcc из WinAVR-20071221 добавлены два ... Dec 21 2007, 21:07 ReAl Цитата(aesok @ Dec 21 2007, 23:07) Функци... Dec 22 2007, 08:27    aesok Цитата(aesok @ Dec 22 2007, 15:25) Цитата... Dec 22 2007, 20:05     Сергей Борщ Есть еще вопрос по "noreturn" с main() в... Dec 22 2007, 22:57     Сергей Борщ Цитата(ReAl @ Dec 23 2007, 09:13) но ... Dec 23 2007, 10:37     aesok Цитата(ReAl @ Dec 23 2007, 10:13) Более р... Dec 24 2007, 09:25 sla000 Кроме того добавлена поддержка языка Ада.
Кто шар... Dec 22 2007, 03:29 _Алекс Не могу второй день скачать сервис пак AVR Studio ... Dec 23 2007, 12:52 designer Нормально скачалось. Dec 23 2007, 20:02 733259 А чем OS_main отличается от __attribute__((naked))... Dec 24 2007, 18:49 aesok Цитата(733259 @ Dec 24 2007, 21:49) А чем... Dec 24 2007, 21:39 733259 Цитата(aesok @ Dec 25 2007, 02:39) Дело в... Dec 25 2007, 04:29 Qwertty Цитата(733259 @ Dec 25 2007, 07:29) Выкид... Dec 25 2007, 05:36 singlskv Цитата(733259 @ Dec 25 2007, 07:29) Выкид... Dec 26 2007, 19:35  Сергей Борщ Цитата(singlskv @ Dec 26 2007, 21:35) Хот... Dec 26 2007, 19:41   singlskv Цитата(Сергей Борщ @ Dec 26 2007, 22:41) ... Dec 26 2007, 19:52    Сергей Борщ Цитата(singlskv @ Dec 26 2007, 21:52) Я н... Dec 27 2007, 01:52     singlskv Цитата(Сергей Борщ @ Dec 27 2007, 04:52) ... Dec 27 2007, 11:55     aesok Цитата(Сергей Борщ @ Dec 27 2007, 04:52) ... Dec 27 2007, 13:17 733259 ЦитатаЯ вот тоже попробовал naked, и прошло нормал... Dec 25 2007, 05:48 Qwertty Цитата(733259 @ Dec 25 2007, 08:48) А мож... Dec 25 2007, 05:58 733259 Цитата(Qwertty @ Dec 25 2007, 10:58) stat... Dec 25 2007, 06:13 Qwertty Цитата(733259 @ Dec 25 2007, 09:13) Это я... Dec 25 2007, 06:18 733259 Согласен, только чем отличается переменная static ... Dec 25 2007, 07:09 Qwertty Цитата(733259 @ Dec 25 2007, 10:09) Согла... Dec 25 2007, 09:39 aesok Цитата(733259 @ Dec 25 2007, 10:09) ЗЫ: с... Dec 25 2007, 10:04 733259 ЦитатаРазличие в том, где она создается. Локальная... Dec 25 2007, 10:18 aesok Цитата(733259 @ Dec 25 2007, 13:18) Да яс... Dec 25 2007, 10:25 ivainc1789 Посмотрите, плиз, во втором сервис-паке Студии пер... Dec 26 2007, 14:38 Visor Беда какая-то, при старте отладки проекта WinAVR, ... Dec 26 2007, 18:48 733259 ЦитатаХотелось бы от Вас услышать в каком варианте... Dec 27 2007, 02:03 Сергей Борщ Цитата(733259 @ Dec 27 2007, 04:03) По пр... Dec 27 2007, 12:34  singlskv Цитата(Сергей Борщ @ Dec 27 2007, 15:34) ... Dec 27 2007, 16:50 733259 ЦитатаОн проверен на 20060421.Мы обсуждаем здесь к... Dec 27 2007, 13:21 733259 ЦитатаДык в 20060421 оно и так с naked глючит т.к.... Dec 27 2007, 16:56 singlskv Цитата(733259 @ Dec 27 2007, 19:56) Вы вм... Dec 27 2007, 17:02  aesok Вот минимальный нерабочий пример:
Код__attribute__... Dec 27 2007, 18:47   singlskv Цитата(aesok @ Dec 27 2007, 21:47) Здесь ... Dec 27 2007, 19:13    aesok Цитата(singlskv @ Dec 27 2007, 22:13) ИМХ... Dec 27 2007, 19:38     singlskv Цитата(aesok @ Dec 27 2007, 22:38) Если ф... Dec 27 2007, 19:51      aesok Цитата(singlskv @ Dec 27 2007, 22:51) Я и... Dec 27 2007, 19:58       singlskv Цитата(aesok @ Dec 27 2007, 22:58) Я писа... Dec 27 2007, 20:18 733259 Ааа, переменные не влазят. Однозначно признак плох... Dec 27 2007, 17:55 733259 ЦитатаВы предлагаете объявлять все переменные в ... Dec 27 2007, 19:07 aesok Цитата(733259 @ Dec 27 2007, 22:07) И что... Dec 27 2007, 19:12 singlskv Цитата(733259 @ Dec 27 2007, 22:07) Я гов... Dec 27 2007, 19:26 733259 ЦитатаНичего не помешает, только перед тем как вы ... Dec 27 2007, 19:24 733259 А по теме - кто нибудь использует avr-gcc четвёрку... Dec 27 2007, 19:33 733259 В init2 Y устанавливается на вершину стека. И что ... Dec 28 2007, 01:34 Qwertty Решил приобщиться к прогрессу, обновил ГЦЦ с 3.4.6... Jan 13 2008, 16:59 aesok Цитата(Qwertty @ Jan 13 2008, 19:59) Поп... Jan 13 2008, 22:52 Непомнящий Евгений Не совсем понял - зачем ломать копья из-за main? О... Jan 14 2008, 07:11 aesok Цитата(Непомнящий Евгений @ Jan 14 2008, 10... Jan 14 2008, 09:43 733259 Цитата(Непомнящий Евгений @ Jan 14 2008, 12... Jan 14 2008, 09:25
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|