И чего же не хватает в avr-gcc? Я в прошлом году пробовал, это был gcc 5.3, с С++14 кодом проблем не было. В то же время на днях пришла рекламка от IAR, типа наконец наш компилятор понимает С++11&14, но это для ARM, для AVR все по-прежнемуЯрослав555 писал(а):Кроме того, в один прекрасный момент, Вы захотите попробовать С++, а в avr-gcc его поддержка не полная.
Нескольно простых вопросов о программировании AVR на Си.
Re: Нескольно простых вопросов о программировании AVR на Си.
- Реклама
Re: Нескольно простых вопросов о программировании AVR на Си.
Если уж совсем - то в "итоговом коде" не существует ни массивов, ни типов, ни строк, а лишь "приёмчики" по работе с памятью, сгенерированные компилятором из того кода, что мы ему скормили.Ярослав555 писал(а):... что в итоговом коде не существует массивов размерностью больше 1. Любой многомерный массив переводится в строку и хранится в таком виде в памяти. ...
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! 
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: Нескольно простых вопросов о программировании AVR на Си.
Создал я значит проект С++ в 7й студии. Портирую рабочий код из ИАРа (так надо было). И тут студия мне заявляет, мол она не понимает new. Лезу в инет и читаю - допиливай мол сам. Не знаю ребятки, для меня иар это надежная прога, где все сделано для работы. Если что-то в иаре не работает, значит виноват я сам. Проверено много раз.Reflector писал(а):И чего же не хватает в avr-gcc? Я в прошлом году пробовал, это был gcc 5.3, с С++14 кодом проблем не было. В то же время на днях пришла рекламка от IAR, типа наконец наш компилятор понимает С++11&14, но это для ARM, для AVR все по-прежнему
Добавлено after 3 minutes 10 seconds:
а ядро при этом следит чтобы один кусок кода не полез в запрещенную для него область, но это не про avrSiarzhuk писал(а):Если уж совсем - то в "итоговом коде" не существует ни массивов, ни типов, ни строк, а лишь "приёмчики" по работе с памятью, сгенерированные компилятором из того кода, что мы ему скормили.
Re: Нескольно простых вопросов о программировании AVR на Си.
можете привести более приземленные примеры для писателя средней руки (AVR) в чем же заключается преимущество IAR над тойже 4 студией ?Ярослав555 писал(а): К вопросу о среде. Я агитирую за IAR. Изначально привык к среде и переход на стмки был не так ужасен.
Tell Me The Truth
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: Нескольно простых вопросов о программировании AVR на Си.
4я студия у нас без компилятора, если я не ошибаюсь. А большего не напишу, т-к 4ю студию ни разу не использовал. Вот с 7й пришлось столкнуться. Пробовал кодвижн - генерит кучу стартового кода, меня как новичка тогда это не привлекло. Пробовал микро С - он плюсы не поддерживает. С эклипсом потрахаться надо прилично. А иар вот он - готов из коробки и всё работает, и протеус с ним дружит, и самопальные джетаги. Только редактор никак улучшить не могут, но со временем я привык к отсутствию удобств. А для разбора чужого кода имеется Source Insight (подсмотрел на ютубе у одного азиата).FreshMan писал(а):можете привести более приземленные примеры для писателя средней руки (AVR) в чем же заключается преимущество IAR над тойже 4 студией ?
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
4-я студия подхватывает WinAVR автоматически, если надо. Но синтаксис С++ не подсвечивает, редактор убогий.Ярослав555 писал(а):4я студия у нас без компилятора, если я не ошибаюсь. А большего не напишу, т-к 4ю студию ни разу не использовал. Вот с 7й пришлось столкнуться. .... Пробовал микро С - он плюсы не поддерживает. С эклипсом потрахаться надо прилично. А иар вот он - готов из коробки и всё работает, и протеус с ним дружит, и самопальные джетаги.
7-я студия, как и все от MS, требует непомерных ресурсов, хотя сервис на уровне.
а вот Eclipse - это наше всё
По сравнению с IAR у описанного "комплекта" достоинство одно, но весьма веское: это все 100% бесплатно и даже у самых щепетильных никаких подозрений в чистоте и непорочности не вызывает. Ну а про редактор - и говорить нечего, IAR, как я понимаю, нервно курит...
Ну и о недостатке, как без него: avr-gcc, не смотря на все новшества, генерирует менее компактный при оптимизации по размеру, и менее быстрый при оптимизации по скорости код, чем IAR... но разница в единицах процентов.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Нескольно простых вопросов о программировании AVR на Си.
добавлю до кучи:
Microsoft Visual Studio Community 2015 (бесплатно)
+ VisualGDB (не бесплатно €79, есть лекарство, кому не страшен серый
)
supports AVR, STM32, Freescale Kinetis, NXP LPC, TIVA, MSP430, ESP8266 and many other devices.
Симулятор для AVR работает.
https://visualgdb.com/?features=embedded
Можно писать и под Линукс и Андроид. Естественно на всяких родных Микрософтовских C# C++ VB и пр.
Работает на 2-х ядернике с 4Гб памяти вполне шустро, лучше ставить на вин. 10 х64.
Microsoft Visual Studio Community 2015 (бесплатно)
+ VisualGDB (не бесплатно €79, есть лекарство, кому не страшен серый
supports AVR, STM32, Freescale Kinetis, NXP LPC, TIVA, MSP430, ESP8266 and many other devices.
Симулятор для AVR работает.
https://visualgdb.com/?features=embedded
Можно писать и под Линукс и Андроид. Естественно на всяких родных Микрософтовских C# C++ VB и пр.
Работает на 2-х ядернике с 4Гб памяти вполне шустро, лучше ставить на вин. 10 х64.
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: Нескольно простых вопросов о программировании AVR на Си.
Только в иаре я могу выбрать любой удобный формат отладочного файла.ARV писал(а):свежак генерит какой-то новый ELF, который уже протеус не понимает
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
выбрать-то не проблема и в avr-gcc, только версии 5 и новее генерируют ELF, в котором протеус не видит ничего... а COFF протеус по определению не понимает. вот и приходится для протеуса собирать в 3-ей версии avr-gcc...Ярослав555 писал(а):Только в иаре я могу выбрать любой удобный формат отладочного файла
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Нескольно простых вопросов о программировании AVR на Си.
Вы пробовали ELF и исходники сложить в одну папку?ARV писал(а):новее генерируют ELF, в котором протеус не видит ничего...
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
там проблема в другом: протеус видит исходник и показывает его, но не видит адресов строк... т.е. как бы некуда ставить точки останова и нечего по шагам проходитьZ_h_e писал(а):Вы пробовали ELF и исходники сложить в одну папку?
возможно, я просто не знаю каких-то параметров LD, чтобы задать нужный формат ELF-а...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Нескольно простых вопросов о программировании AVR на Си.
А протеус то не знает...ARV писал(а):а COFF протеус по определению не понимает.
И более того позволяет отлаживать прошивку. Показывая все переменные с именами как на Си, регистры и порты.
И точки останова есть.
Глупый не задает вопросы. Глупый и так все знает.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
виноват, это я с прямым углом перепуталAndTer писал(а):А протеус то не знает...
протеус не понимает формат отладочной инфы, которая для avr-gcc по умолчанию считается стандртной - stabs, а когда делаешь dwarf-2 новыми версиями, тогда проблема, о которой я писал... COFF я вообще не знаю, как создать avr-gcc...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Нескольно простых вопросов о программировании AVR на Си.
Не знаю какой версии в AS6 компиллер (для avr в нем делаю). Протеус 7 работает с elf. Если исхдники лежат в другой папке чем elf, то показывает только переменные и исходник библиотеки delay (может еще конечно какие может). Если сложить все в одну папку, то все показывает, все шагает, точки останова работают.ARV писал(а):протеус видит исходник и показывает его, но не видит адресов строк... т.е. как бы некуда ставить точки останова и нечего по шагам проходить
-
DimAlt
- Вымогатель припоя
- Сообщения: 576
- Зарегистрирован: Пт май 19, 2006 05:39:11
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
Здесь https://electronix.ru/forum/index.php?showtopic=140866 выложен GCC 6.3.0, компилит по размеру лучше, на одном проекте где то 7к кода собрался на 500 байт меньше. Но с elf, беда.. Протеус 7 и 8,4 не понимают..
Re: Нескольно простых вопросов о программировании AVR на Си.
Товарищи коты, помогите разобраться с avr-gcc, уже запарился с бубном вокруг него плясать.
Использую avr-gcc 5.4 под линуксом (opensuse 13.1) + avr-libc 2.0.0
При попытке хоть что-то скомпилить, получаю ошибку:
Как я понимаю, компилятору почему-то не нравятся строки в Makefile:
и дальше в опциях сборки
Вместо "atmega8" он подставляет "avr4" (название каталога с файлами под мегу8) и начинает тупить.
Что делать и как с этим бороться?
Использую avr-gcc 5.4 под линуксом (opensuse 13.1) + avr-libc 2.0.0
При попытке хоть что-то скомпилить, получаю ошибку:
Код: Выделить всё
as: неизвестный ключ «-mmcu=avr4»Код: Выделить всё
MCU = atmega8Код: Выделить всё
-mmcu=$(MCU)Что делать и как с этим бороться?

Re: Нескольно простых вопросов о программировании AVR на Си.
Andrew88, прикольно: все указал (версию линукса, версию gcc,версию, и даже версию libc), но версию binutils (в котором и находится тот, кто ругается - а именно ассемблер) не указал 
binutils для avr хоть стоит?
======
Если хочешь, чтобы помогли - давай точно, что запускаешь , и полностью что выводится в ответ!
binutils для avr хоть стоит?
Компилятор вообще ничего не знает про какой-то Makefile. Ему "по барабану", кто его вызвал make или Вы "руками" команду ввели.Andrew88 писал(а): Как я понимаю, компилятору почему-то не нравятся строки в Makefile:
======
Если хочешь, чтобы помогли - давай точно, что запускаешь , и полностью что выводится в ответ!
Re: Нескольно простых вопросов о программировании AVR на Си.
В Suse это немного странно организовано. Помимо собственно avr-gcc ставится пакет cross-avr-gcc (в других дистрибутивах его, по ходу, нет), без него компилятор даже не запускается, хоть и установлен. Вместо avr-binutils в репозиториях лежит (и автоматом устанавливается) cross-avr-binutils 2.28. Пакет cross-binutils тоже стоит, и тоже 2.28.
Исходники, которые пытался скомпилировать, во вложении. Взяты из статьи, с гитхаба WiseLord'а - он собирал как раз под линуксом на avr-gcc. Плюс исходники компилировались и другими пользователями, так что в этом плане проверены.
Следуя инструкциям автора, открываю терминал в папке с проектом, пишу make all. Вот, что получается:
Исходники, которые пытался скомпилировать, во вложении. Взяты из статьи, с гитхаба WiseLord'а - он собирал как раз под линуксом на avr-gcc. Плюс исходники компилировались и другими пользователями, так что в этом плане проверены.
Следуя инструкциям автора, открываю терминал в папке с проектом, пишу make all. Вот, что получается:
Код: Выделить всё
~/Desktop2/fm7segm-master> make all
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -MMD -MP -MT build/volume.o -MF build/./volume.d -mmcu=atmega8 -DF_CPU=8000000 -D_PIN1 -D_TEA5767 -D_RDA580X -D_TUX032 -c -o build/volume.o volume.c
as: неизвестный ключ «-mmcu=avr4»
make: *** [build/volume.o] Ошибка 1- Вложения
-
- fm7segm-master.zip
- (190.34 КБ) 208 скачиваний

- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
у меня похожая хрень в Windows: в путях прописан Delphi, и его make по умолчанию первым вызывается... если у вас разные бинутилсы установлены, то вполне может быть, что вызываются не те, которые надо для avr-gcc.
попробуйте в командной строке указать полный путь к правильной make
попробуйте в командной строке указать полный путь к правильной make
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
Ругается на отсутствующий avr4. У меня в Gentoo это /usr/avr/lib/avr4/ (тут и для atmega8 объектный файл лежит). Но принадлежит это не пакету avr-gcc, а avr-libc. Убедитесь, что эта библиотека тоже установлена.
Вообще, для полного счастья нужны:
- avr-gcc - собственно компилятор
- avr-binutils - некоторые утилиты (as, size, objdump и прочее)
- avr-libc - стандартная библиотека C для AVR (все эти "stdlib.h" и "strings.h" и всеми любимые "util/delay.h" и, главное, "avr/io.h")
- avr-gdb - отладчик (с ним я не работал, т.к. с эмуляцией мелких МК проще в proteus под wine, а "большие" МК не использовал, да и аппаратного отладчика для AVR у меня нету)
- avrdude - для прошивки всего этого добра. В моих проектах он обычно прикручен к Мakefile, и вся прошивка сводится к простому "make flash"
А make должен любой абсолютно подходить. И в linux он, как правило, из коробки есть. Ну, или ставится элементарно. Он ведь сам по себе не компилирует, а лишь выполняет инструкции из Makefile.
Вообще, для полного счастья нужны:
- avr-gcc - собственно компилятор
- avr-binutils - некоторые утилиты (as, size, objdump и прочее)
- avr-libc - стандартная библиотека C для AVR (все эти "stdlib.h" и "strings.h" и всеми любимые "util/delay.h" и, главное, "avr/io.h")
- avr-gdb - отладчик (с ним я не работал, т.к. с эмуляцией мелких МК проще в proteus под wine, а "большие" МК не использовал, да и аппаратного отладчика для AVR у меня нету)
- avrdude - для прошивки всего этого добра. В моих проектах он обычно прикручен к Мakefile, и вся прошивка сводится к простому "make flash"
А make должен любой абсолютно подходить. И в linux он, как правило, из коробки есть. Ну, или ставится элементарно. Он ведь сам по себе не компилирует, а лишь выполняет инструкции из Makefile.



