Нескольно простых вопросов о программировании AVR на Си.

Обсуждаем контроллеры компании Atmel.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение Reflector »

Ярослав555 писал(а):Кроме того, в один прекрасный момент, Вы захотите попробовать С++, а в avr-gcc его поддержка не полная.
И чего же не хватает в avr-gcc? Я в прошлом году пробовал, это был gcc 5.3, с С++14 кодом проблем не было. В то же время на днях пришла рекламка от IAR, типа наконец наш компилятор понимает С++11&14, но это для ARM, для AVR все по-прежнему :)
Реклама
Аватара пользователя
Siarzhuk
Потрогал лапой паяльник
Сообщения: 353
Зарегистрирован: Вс янв 19, 2014 22:41:55

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение Siarzhuk »

Ярослав555 писал(а):... что в итоговом коде не существует массивов размерностью больше 1. Любой многомерный массив переводится в строку и хранится в таком виде в памяти. ...
Если уж совсем - то в "итоговом коде" не существует ни массивов, ни типов, ни строк, а лишь "приёмчики" по работе с памятью, сгенерированные компилятором из того кода, что мы ему скормили. :)
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)
Реклама
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение Ярослав555 »

Reflector писал(а):И чего же не хватает в avr-gcc? Я в прошлом году пробовал, это был gcc 5.3, с С++14 кодом проблем не было. В то же время на днях пришла рекламка от IAR, типа наконец наш компилятор понимает С++11&14, но это для ARM, для AVR все по-прежнему :)
Создал я значит проект С++ в 7й студии. Портирую рабочий код из ИАРа (так надо было). И тут студия мне заявляет, мол она не понимает new. Лезу в инет и читаю - допиливай мол сам. Не знаю ребятки, для меня иар это надежная прога, где все сделано для работы. Если что-то в иаре не работает, значит виноват я сам. Проверено много раз.

Добавлено after 3 minutes 10 seconds:
Siarzhuk писал(а):Если уж совсем - то в "итоговом коде" не существует ни массивов, ни типов, ни строк, а лишь "приёмчики" по работе с памятью, сгенерированные компилятором из того кода, что мы ему скормили. :)
а ядро при этом следит чтобы один кусок кода не полез в запрещенную для него область, но это не про avr :)
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение FreshMan »

Ярослав555 писал(а): К вопросу о среде. Я агитирую за IAR. Изначально привык к среде и переход на стмки был не так ужасен.
можете привести более приземленные примеры для писателя средней руки (AVR) в чем же заключается преимущество IAR над тойже 4 студией ?
Tell Me The Truth
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение Ярослав555 »

FreshMan писал(а):можете привести более приземленные примеры для писателя средней руки (AVR) в чем же заключается преимущество IAR над тойже 4 студией ?
4я студия у нас без компилятора, если я не ошибаюсь. А большего не напишу, т-к 4ю студию ни разу не использовал. Вот с 7й пришлось столкнуться. Пробовал кодвижн - генерит кучу стартового кода, меня как новичка тогда это не привлекло. Пробовал микро С - он плюсы не поддерживает. С эклипсом потрахаться надо прилично. А иар вот он - готов из коробки и всё работает, и протеус с ним дружит, и самопальные джетаги. Только редактор никак улучшить не могут, но со временем я привык к отсутствию удобств. А для разбора чужого кода имеется Source Insight (подсмотрел на ютубе у одного азиата).
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение ARV »

Ярослав555 писал(а):4я студия у нас без компилятора, если я не ошибаюсь. А большего не напишу, т-к 4ю студию ни разу не использовал. Вот с 7й пришлось столкнуться. .... Пробовал микро С - он плюсы не поддерживает. С эклипсом потрахаться надо прилично. А иар вот он - готов из коробки и всё работает, и протеус с ним дружит, и самопальные джетаги.
4-я студия подхватывает WinAVR автоматически, если надо. Но синтаксис С++ не подсвечивает, редактор убогий.
7-я студия, как и все от MS, требует непомерных ресурсов, хотя сервис на уровне.

а вот Eclipse - это наше всё :) Трахаться не надо. Работает даже с флешки - положил в карман и в любом месте можно программировать. avr-gcc подхватывает так же автоматом, если компилятор устанавливался установщиком, т.е. прописывался в PATH, в противном слчае надо 4 строчки руками прописать - пути к компилятору, binutils, avrdude и еще какой-то (не помню). в принципе, я сейчас на флешку поставил 5 версий avr-gcc и путем правки этих строчек собираю в любой из них, если приспичит. с протеусом дружит (тут не Eclipse заслуга, а avr-gcc, естественно, свежак генерит какой-то новый ELF, который уже протеус не понимает). отладчики - вот тут да, проблемка... при помощи какой-то матери можно прикрутить GDB+Simulavr, но по сравнению с отладкой в протеусе это велосипед, едущий по болоту... зато если есть AVR ICE, то при помощи GDB можно отлаживать в железе, причем, как обычно и принято в GNU, возможна удаленная отладка (подумываю как раз заказать AVR ICE в Китае).

По сравнению с IAR у описанного "комплекта" достоинство одно, но весьма веское: это все 100% бесплатно и даже у самых щепетильных никаких подозрений в чистоте и непорочности не вызывает. Ну а про редактор - и говорить нечего, IAR, как я понимаю, нервно курит...
Ну и о недостатке, как без него: avr-gcc, не смотря на все новшества, генерирует менее компактный при оптимизации по размеру, и менее быстрый при оптимизации по скорости код, чем IAR... но разница в единицах процентов.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение oleg110592 »

добавлю до кучи:
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 на Си.

Сообщение Ярослав555 »

ARV писал(а):свежак генерит какой-то новый ELF, который уже протеус не понимает
Только в иаре я могу выбрать любой удобный формат отладочного файла.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение ARV »

Ярослав555 писал(а):Только в иаре я могу выбрать любой удобный формат отладочного файла
выбрать-то не проблема и в avr-gcc, только версии 5 и новее генерируют ELF, в котором протеус не видит ничего... а COFF протеус по определению не понимает. вот и приходится для протеуса собирать в 3-ей версии avr-gcc...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение Z_h_e »

ARV писал(а):новее генерируют ELF, в котором протеус не видит ничего...
Вы пробовали ELF и исходники сложить в одну папку?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение ARV »

Z_h_e писал(а):Вы пробовали ELF и исходники сложить в одну папку?
там проблема в другом: протеус видит исходник и показывает его, но не видит адресов строк... т.е. как бы некуда ставить точки останова и нечего по шагам проходить :) что-то изменилось в формате ELF.
возможно, я просто не знаю каких-то параметров LD, чтобы задать нужный формат ELF-а...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
AndTer
Поставщик валерьянки для Кота
Сообщения: 2406
Зарегистрирован: Ср фев 23, 2011 12:12:31

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение AndTer »

ARV писал(а):а COFF протеус по определению не понимает.
А протеус то не знает...
Изображение
И более того позволяет отлаживать прошивку. Показывая все переменные с именами как на Си, регистры и порты.
И точки останова есть.
Изображение
Вложения
234.png
(46.96 КБ) 898 скачиваний
123.png
(74.23 КБ) 773 скачивания
Глупый не задает вопросы. Глупый и так все знает.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение ARV »

AndTer писал(а):А протеус то не знает...
виноват, это я с прямым углом перепутал :)))
протеус не понимает формат отладочной инфы, которая для avr-gcc по умолчанию считается стандртной - stabs, а когда делаешь dwarf-2 новыми версиями, тогда проблема, о которой я писал... COFF я вообще не знаю, как создать avr-gcc...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение Z_h_e »

ARV писал(а):протеус видит исходник и показывает его, но не видит адресов строк... т.е. как бы некуда ставить точки останова и нечего по шагам проходить
Не знаю какой версии в AS6 компиллер (для avr в нем делаю). Протеус 7 работает с elf. Если исхдники лежат в другой папке чем elf, то показывает только переменные и исходник библиотеки delay (может еще конечно какие может). Если сложить все в одну папку, то все показывает, все шагает, точки останова работают.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
DimAlt
Вымогатель припоя
Сообщения: 576
Зарегистрирован: Пт май 19, 2006 05:39:11
Контактная информация:

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение DimAlt »

Здесь https://electronix.ru/forum/index.php?showtopic=140866 выложен GCC 6.3.0, компилит по размеру лучше, на одном проекте где то 7к кода собрался на 500 байт меньше. Но с elf, беда.. Протеус 7 и 8,4 не понимают..
Аватара пользователя
Andrew88
Открыл глаза
Сообщения: 43
Зарегистрирован: Ср мар 15, 2017 18:52:10

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение Andrew88 »

Товарищи коты, помогите разобраться с avr-gcc, уже запарился с бубном вокруг него плясать.
Использую avr-gcc 5.4 под линуксом (opensuse 13.1) + avr-libc 2.0.0
При попытке хоть что-то скомпилить, получаю ошибку:

Код: Выделить всё

as: неизвестный ключ «-mmcu=avr4»
Как я понимаю, компилятору почему-то не нравятся строки в Makefile:

Код: Выделить всё

MCU      = atmega8
и дальше в опциях сборки

Код: Выделить всё

-mmcu=$(MCU)
Вместо "atmega8" он подставляет "avr4" (название каталога с файлами под мегу8) и начинает тупить.
Что делать и как с этим бороться?
Изображение
viiv
Грызет канифоль
Сообщения: 289
Зарегистрирован: Чт ноя 06, 2014 13:09:06

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение viiv »

Andrew88, прикольно: все указал (версию линукса, версию gcc,версию, и даже версию libc), но версию binutils (в котором и находится тот, кто ругается - а именно ассемблер) не указал :-)
binutils для avr хоть стоит?
Andrew88 писал(а): Как я понимаю, компилятору почему-то не нравятся строки в Makefile:
Компилятор вообще ничего не знает про какой-то Makefile. Ему "по барабану", кто его вызвал make или Вы "руками" команду ввели.

======
Если хочешь, чтобы помогли - давай точно, что запускаешь , и полностью что выводится в ответ!
Аватара пользователя
Andrew88
Открыл глаза
Сообщения: 43
Зарегистрирован: Ср мар 15, 2017 18:52:10

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение Andrew88 »

В Suse это немного странно организовано. Помимо собственно avr-gcc ставится пакет cross-avr-gcc (в других дистрибутивах его, по ходу, нет), без него компилятор даже не запускается, хоть и установлен. Вместо avr-binutils в репозиториях лежит (и автоматом устанавливается) cross-avr-binutils 2.28. Пакет cross-binutils тоже стоит, и тоже 2.28.

Исходники, которые пытался скомпилировать, во вложении. Взяты из статьи, с гитхаба 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 на Си.

Сообщение ARV »

у меня похожая хрень в Windows: в путях прописан Delphi, и его make по умолчанию первым вызывается... если у вас разные бинутилсы установлены, то вполне может быть, что вызываются не те, которые надо для avr-gcc.

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

Мой уютный бложик... заходите!
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Нескольно простых вопросов о программировании AVR на Си.

Сообщение WiseLord »

Ругается на отсутствующий 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»