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

 
 
> WinAVR-20080610, делимся впечатлениями
haker_fox
сообщение Jun 24 2008, 03:57
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Скачал. Установил.
Приятно удивил результат.
Проект скомпилированный на WinAVR-20070525 занимает 6452 байт. Работает. Проект скомпилированный новым компиляторм занимает 5396 байт. Полностью не работает. Детальный анализ пока не проводил. Серьезных багов не видел.
makefile используется один и тот же, только пути разные подставляются для вызова разных версий утилит.
Самое интересное, что при очистке проекта
Код
make clean
вылетает такая ошибка
Код
0 [main] rm 3292 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
111988 [main] rm 3292 open_stackdumpfile: Dumping stack trace to rm.exe.stackdump
make.exe: *** [clean] Error -1073741819

Компилирует на первый взгляд нормально, но при заливке кода в МК ничего не работает.
Вот...

P.S.
Версия WinAVR-20071221 полет нормальный. Только очистка вылетает с такой же ошибкой.

Свои makefile прикрепляю на всякий случай. Они абсолютно одинаковы, за исключением путей к утилитам пакетов WinAVR.
Прикрепленные файлы
Прикрепленный файл  makefiles.zip ( 5.81 килобайт ) Кол-во скачиваний: 115
 


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
timex
сообщение Sep 25 2008, 12:16
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 27-04-05
Из: Воронеж
Пользователь №: 4 541



mdmitry, да, спасиб.
при такой записи строки
Код
eeprom_write_block (current_sensor_code, (unsigned int*) EEPROM_SENSOR2_ADR, 8);

варнинг не выдаётся.


Вдогонку!

Обратил внимание, что в окне сообщений компилятора при Rebuld All выдаётся следующее (помечено "!!!!!!!!>"):

Код
Build started 25.9.2008 at 17:14:51
avr-gcc.exe -I"C:\AVRlib"  -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -fgnu89-inline                 -O2 -fsigned-char -MD -MP -MT main.o -MF dep/main.o.d  -c  ../main.c
!!!!!!!!> C:\WINDOWS\Temp/ccFQajf5.s: Assembler messages:
!!!!!!!!> C:\WINDOWS\Temp/ccFQajf5.s:2433: Warning: expression dangerous with linker stubs
!!!!!!!!> C:\WINDOWS\Temp/ccFQajf5.s:2434: Warning: expression dangerous with linker stubs
avr-gcc.exe -mmcu=atmega16  main.o     -o sensor_ibutton.elf
avr-objcopy -O ihex -R .eeprom  sensor_ibutton.elf sensor_ibutton.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex sensor_ibutton.elf sensor_ibutton.eep || exit 0

AVR Memory Usage
----------------
Device: atmega16

Program:    4506 bytes (27.5% Full)
(.text + .data + .bootloader)
Data:        158 bytes (15.4% Full)
(.data + .bss + .noinit)

Build succeeded with 0 Warnings...


файлов таких в c:\windows\temp нету...
где копать?

Сообщение отредактировал timex - Sep 25 2008, 13:14
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 25 2008, 13:23
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(timex @ Sep 25 2008, 16:16) *

1. по поводу Linker Stubs - это глюки. Здесь уже была тема. Можно (по крайней мере, в предыдущей winavr 2007) не обращать внимания.
2. Вернемся к
Код
eeprom_write_block (current_sensor_code, (unsigned int*) EEPROM_SENSOR2_ADR, 8);

Вроде как правильно, но Вы уверены, что Вам нужен именно (unsigned int*) ? smile.gif Имхо, бардака в голове только прибавилось.
Go to the top of the page
 
+Quote Post
timex
сообщение Sep 25 2008, 13:44
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 27-04-05
Из: Воронеж
Пользователь №: 4 541



Цитата(_Pasha @ Sep 25 2008, 17:23) *
1. по поводу Linker Stubs - это глюки. Здесь уже была тема. Можно (по крайней мере, в предыдущей winavr 2007) не обращать внимания.


Сейчас проверил - появляется только при оптимизации -O1, -O2, -O3. При -Оs и -O0 такого нету... (WinAVR-20071221).

Обновил до 20080512 - глюк перестал проявлятся!

Цитата(_Pasha @ Sep 25 2008, 17:23) *
2. Вернемся к
Код
eeprom_write_block (current_sensor_code, (unsigned int*) EEPROM_SENSOR2_ADR, 8);

Вроде как правильно, но Вы уверены, что Вам нужен именно (unsigned int*) ? smile.gif Имхо, бардака в голове только прибавилось.


Упс, от созерцания прекращения выдачи варнингов незаметил smile.gif.
Переправил на "(unsigned char*)". Но в данном случае, думается, между int и char нет разницы, т.к. в описании функции стоит "void"...?

Сообщение отредактировал timex - Sep 25 2008, 13:57
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 25 2008, 14:19
Сообщение #5


Гуру
******

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



Цитата(timex @ Sep 25 2008, 16:44) *
Переправил на "(unsigned char*)". Но в данном случае, думается, между int и char нет разницы, т.к. в описании функции стоит "void"...?
Если вы хотите писать понятно, то приведите к указателю на тот тип, данные которого записываете, т.е. к тому типу, на который у вас указывает current_sensor_code. Если хотите чтобы было "просто правильно", то приведите к тому типу, который ожидает функция, т.е. к void *. Если хотите через полгода-год, смотря в этот кусок кода, мучительно думать "а какого черта здесь приводится именно к unsigned char *, а не к unsigned int *?" - оставьте так, как есть.

P.S. параметр функции объявлен как void *, потому что к void * неявно приводится любой указатель.


--------------------
На любой вопрос даю любой ответ
"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
mdmitry
сообщение Sep 25 2008, 15:02
Сообщение #6


Начинающий профессионал
*****

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



Цитата(Сергей Борщ @ Sep 25 2008, 18:19) *
Если вы хотите писать понятно, то приведите к указателю на тот тип, данные которого записываете, т.е. к тому типу, на который у вас указывает current_sensor_code. Если хотите чтобы было "просто правильно", то приведите к тому типу, который ожидает функция, т.е. к void *. Если хотите через полгода-год, смотря в этот кусок кода, мучительно думать "а какого черта здесь приводится именно к unsigned char *, а не к unsigned int *?" - оставьте так, как есть.

P.S. параметр функции объявлен как void *, потому что к void * неявно приводится любой указатель.

Сергей Борщ, в функциях типа
Код
memmove
и др. все же делается приведение к тому типу данных, который используется. Согласен, мой пример требует корректировки с точки зрения соблюдения всех стандартов.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 25 2008, 18:17
Сообщение #7


Гуру
******

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



Цитата(mdmitry @ Sep 25 2008, 18:02) *
в функциях типа
Код
memmove
и др. все же делается приведение к тому типу данных, который используется.
Здесь какое-то недопонимание. Внутри функции memmove, memset и т.п. переданный указатель типа void * действительно приводится к тому типу, единицами которого осуществляется копирование, стирание (чаще всего к байту). Но сам параметр функции имеет тип void * чтобы при вызове этой функции можно было использовать любой указатель, не делая явного приведения:
Код
int var1;
unsigned char var2;
struct struct_t
{
    unsigned int a;
    unsigned long b;
} var3;

void Test()
{
    memset(&var1, 0, sizeof(var1));
    memset(&var2, 0, sizeof(var2));
    memset(&var3, 0, sizeof(var3));
}


--------------------
На любой вопрос даю любой ответ
"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
mdmitry
сообщение Sep 25 2008, 19:46
Сообщение #8


Начинающий профессионал
*****

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



Цитата(Сергей Борщ @ Sep 25 2008, 22:17) *
Здесь какое-то недопонимание. Внутри функции memmove, memset и т.п. переданный указатель типа void * действительно приводится к тому типу, единицами которого осуществляется копирование, стирание (чаще всего к байту). Но сам параметр функции имеет тип void * чтобы при вызове этой функции можно было использовать любой указатель, не делая явного приведения

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


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- haker_fox   WinAVR-20080610   Jun 24 2008, 03:57
- - 733259   По сравнению с 3.4.6 по прежнему проигрывает. ЗЫ ...   Jun 24 2008, 07:56
|- - haker_fox   Цитата(733259 @ Jun 24 2008, 16:56) По ср...   Jun 25 2008, 01:40
- - kurtis   Цитата(haker_fox @ Jun 24 2008, 06:57) .....   Jun 24 2008, 08:48
- - viakon   Цитата(haker_fox @ Jun 24 2008, 08:57) По...   Jun 25 2008, 03:53
|- - haker_fox   Цитата(viakon @ Jun 25 2008, 12:53) Разоб...   Jun 25 2008, 04:33
- - 733259   ИМХО это уже не раз обсуждалось, в четверке новые ...   Jun 25 2008, 04:33
|- - haker_fox   Цитата(733259 @ Jun 25 2008, 13:33) ИМХО ...   Jun 25 2008, 04:54
|- - haker_fox   Цитата(733259 @ Jun 25 2008, 13:33) ИМХО ...   Jun 25 2008, 05:30
- - 733259   Эти 20070525, 20071221 никакой инфы о компилере не...   Jun 25 2008, 05:10
|- - viakon   А пользую только С никаких С++, так что дело вряд ...   Jun 25 2008, 05:29
|- - aesok   Цитата(viakon @ Jun 25 2008, 09:29) А пол...   Jun 25 2008, 05:41
- - haker_fox   Код>c:\winAVR-20070525\bin...   Jun 25 2008, 05:28
- - viakon   интересно, и уменя проблемы c UART были. Работал c...   Jun 25 2008, 05:43
|- - aesok   Цитата(viakon @ Jun 25 2008, 09:43) Читал...   Jun 25 2008, 05:45
|- - haker_fox   Цитата(viakon @ Jun 25 2008, 14:43) интер...   Jun 25 2008, 05:50
- - viakon   попробую выгрызть, но не на этой неделе точно.   Jun 25 2008, 05:48
- - 733259   ЦитатаПрошу пролщения, а о какой четверке идет реч...   Jun 25 2008, 06:00
- - kurtis   Попробовал скомпилировать проект в сабжевой версии...   Jun 25 2008, 11:05
- - haker_fox   Видимо все-таки сыроват этот новый WinAVR... У мен...   Jun 26 2008, 09:01
- - viakon   Новый проект откомпилил на SUBJ работает. Только о...   Jun 27 2008, 08:29
|- - solosh   Цитата(viakon @ Jun 27 2008, 11:29) Новый...   Jun 27 2008, 08:43
|- - haker_fox   Цитата(viakon @ Jun 27 2008, 17:29) Новый...   Jun 28 2008, 00:13
- - kurtis   Заметил что компилятор все символьные строки запих...   Jun 28 2008, 18:50
|- - aesok   Цитата(kurtis @ Jun 28 2008, 22:50) Замет...   Jun 28 2008, 18:55
|- - kurtis   Цитата(aesok @ Jun 28 2008, 21:55) Тестов...   Jul 1 2008, 08:13
|- - aesok   Цитата(kurtis @ Jul 1 2008, 12:13) Есть с...   Jul 1 2008, 08:53
|- - kurtis   Цитата(aesok @ Jul 1 2008, 11:53) Прости...   Jul 1 2008, 09:42
|- - _Pasha   Цитата(kurtis @ Jul 1 2008, 12:42) строку...   Jul 1 2008, 12:23
- - Hmm   Когда-то, некоторое время, вел проекты параллельно...   Jun 29 2008, 19:29
- - viakon   Цитата(kurtis @ Jun 28 2008, 23:50) Замет...   Jun 30 2008, 03:59
|- - aesok   Цитата(viakon @ Jun 30 2008, 07:59) Подпр...   Jun 30 2008, 09:21
|- - Сергей Борщ   Цитата(aesok @ Jun 30 2008, 12:21) Лучше ...   Jun 30 2008, 09:32
|- - aesok   про --gc-sections где-то читал что могут быть проб...   Jun 30 2008, 09:35
|- - Сергей Борщ   Цитата(aesok @ Jun 30 2008, 12:35) про --...   Jun 30 2008, 10:06
|- - 777777   Поставил сабж. Размер обоих проектов увеличился ро...   Jul 18 2008, 07:02
|- - aesok   Цитата(777777 @ Jul 18 2008, 11:02) Глупы...   Jul 18 2008, 10:53
|- - 777777   Цитата(aesok @ Jul 18 2008, 14:53) Исходн...   Jul 18 2008, 11:56
|- - MrYuran   Цитата(777777 @ Jul 18 2008, 14:56) Надо ...   Jul 18 2008, 12:03
||- - kaf   Цитата(MrYuran @ Jul 18 2008, 18:03) А мн...   Jul 18 2008, 12:27
|- - aesok   Цитата(777777 @ Jul 18 2008, 15:56) а OS_...   Jul 20 2008, 20:21
- - Chak   Здравствуйте уважаемые форумчане! У меня проб...   Jun 30 2008, 18:03
|- - aesok   Цитата(Chak @ Jun 30 2008, 22:03) Help...   Jun 30 2008, 18:43
- - Chak   К Анатолию Спасибо за информацию о скором выходе ...   Jul 1 2008, 06:44
- - kurtis   Но если пойти по приведенной aesok ссылке, то там ...   Jul 1 2008, 12:59
|- - mdmitry   Цитата(kurtis @ Jul 1 2008, 16:59) Но есл...   Jul 1 2008, 13:15
- - kurtis   Заменил все prog_char на char имя_строки[] PROGMEM...   Jul 1 2008, 15:48
|- - aesok   Цитата(kurtis @ Jul 1 2008, 19:48) почему...   Jul 1 2008, 17:07
|- - haker_fox   Цитата(aesok @ Jul 2 2008, 02:07) Во втор...   Jul 4 2008, 02:59
- - kurtis   Анатолий, спасибо за ответы, очень помогло!...   Jul 3 2008, 10:39
- - MrYuran   Ну уж не знаю, что тогда считать документацией... ...   Jul 18 2008, 12:54
- - Антон Малыгин   У меня вот такой вопрос. поставил тут сегодня AVR ...   Jul 30 2008, 10:31
- - mdmitry   Мало информации: как создаете проект, какими средс...   Jul 30 2008, 13:26
|- - MrYuran   Цитата(mdmitry @ Jul 30 2008, 17:26) Снач...   Jul 30 2008, 13:32
- - Антон Малыгин   Самое интересное что дома попробывал сейчас немног...   Jul 30 2008, 18:16
|- - haker_fox   Цитата(Антон Малыгин @ Jul 31 2008, 03:16...   Jul 31 2008, 03:48
- - kaf   Цитата(haker_fox @ Jul 31 2008, 09:48) На...   Jul 31 2008, 07:22
- - _Pasha   Цитата(Антон Малыгин @ Jul 30 2008, 21:16...   Jul 31 2008, 07:41
- - mdmitry   2 MrYuran и haker_fox как я понимаю, студия именно...   Jul 31 2008, 11:26
|- - LEAS   Сам я пользуюсь WinAVR+AVRStudio+иногда Proteus. Н...   Jul 31 2008, 14:09
|- - haker_fox   Цитата(mdmitry @ Jul 31 2008, 20:26) 2 Mr...   Aug 1 2008, 03:13
|- - namelos   Доброе время суток, уважаемые. Возникла проблема п...   Aug 18 2008, 13:44
- - kurtis   Попробуйте так Кодtypedef struct { //const char*...   Aug 18 2008, 14:27
|- - namelos   kurtis, спасибо большое , помогло.   Aug 18 2008, 14:36
- - Tracer   Вот нарвался на странность Прописываю свой тип дан...   Sep 11 2008, 19:04
|- - aesok   Цитата(Tracer @ Sep 11 2008, 23:04) Вот н...   Sep 11 2008, 19:35
|- - Tracer   Цитата(aesok @ Sep 11 2008, 22:35) Привед...   Sep 11 2008, 19:58
|- - Сергей Борщ   Цитата(Tracer @ Sep 11 2008, 22:58) Компи...   Sep 11 2008, 20:50
|- - Tracer   Цитата(Сергей Борщ @ Sep 11 2008, 23:50) ...   Sep 11 2008, 21:12
|- - Непомнящий Евгений   Цитата(Tracer @ Sep 12 2008, 01:12) 2. По...   Sep 12 2008, 04:13
|- - Tracer   Цитата(Непомнящий Евгений @ Sep 12 2008, 07...   Sep 12 2008, 19:01
|- - aesok   Цитата(Tracer @ Sep 12 2008, 23:01) Я с т...   Sep 12 2008, 19:08
|- - Tracer   Цитата(aesok @ Sep 12 2008, 22:08) avr-li...   Sep 12 2008, 19:27
- - timex   Добрый день! У меня WinAVR 20080512 + AVR Stu...   Sep 25 2008, 10:44
- - Непомнящий Евгений   ну напишите руками приведение к тому типу, который...   Sep 25 2008, 10:56
|- - timex   Цитата(Непомнящий Евгений @ Sep 25 2008, 14...   Sep 25 2008, 11:25
- - mdmitry   Достаточно распространенная ситуация, когда конста...   Sep 25 2008, 11:45
|- - mdmitry   Цитата(_Pasha @ Sep 25 2008, 17:23) 1. по...   Sep 25 2008, 13:31
|- - vik0   Цитата(mdmitry @ Sep 25 2008, 22:46) Наск...   Sep 25 2008, 20:13
|- - mdmitry   Цитата(vik0 @ Sep 26 2008, 00:13) Нет. С ...   Sep 25 2008, 20:36
- - _Pasha   Хочу спросить: почему в хедерах контроллеров не п...   Sep 30 2008, 07:06
- - aesok   Цитата(_Pasha @ Sep 30 2008, 11:06) Хочу ...   Sep 30 2008, 18:24
- - demiurg_spb   К слову, из рассылки ImageCraft от 26 сентября 200...   Oct 1 2008, 07:40
- - Tracer   Цитата(demiurg_spb @ Oct 1 2008, 10:40) К...   Oct 3 2008, 20:13


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:40
Рейтинг@Mail.ru


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