Easyelectronics.ru

Электроника для всех
Текущее время: 23 сен 2019, 23:04

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 15:55 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 окт 2012, 19:00
Сообщения: 110
Откуда: Санкт-Петербург
Доброго дня! Пошел уже 7й или 8й час, в течении которых я уже из чисто спортивного интереса хочу решить эту проблему.

Исходные данные:
- Работа под Windows 10.
- Имеется Atmel Studio 7, скаченная на прошлой недели с официального сайта.
- Имеется Proteus 7 (ISIS 7.10 SP0) и Proteus 8.5 SP1.
- Я компилирую программу для ATMega8 в студии и загружаю в Proteus .elf файл с желанием пошаговой отладки кода на C.

Проблема:

При пошаговой отладке в окне исходного кода я вижу прочерки вместо большинства адресов (см. скриншот), при отладке код бессмысленно скачет между этой парочкой адресов. В общем, ничего не работает. Наблюдается и в 7й и в 8й версии протеуса. При этом переменные в окне переменных и их изменения я вижу корректно.

Что я пытался делать:
1. В компиляторе отключена оптимизация.
2. Прописаны параметры компиляторы -g3 (максимальный уровень включения отладочной информации) и на всякий случай -gdwarf-2 (формат отладочной информации).
3. Проект протеуса находится в одной папке с исходниками и результатами работы компилятора. Все файлы в одной папке.
4. Все запущено от имени администратора.
5. Все пути не содержат кириллицы.
6. Я запускал компилятор прямо из протеуса, добавив его через "исходник" - "добавить/удалить инструмент генерации кода". Полный список параметров был:
-mmcu=atmega8 -std=c99 %1 -o %2 -g3 -gdwarf-2
Результат - компилируется окейно, но строчек с адресами в окне становится только еще меньше.
7. Я скачал пакет WinAVR версии 20100110 и повторил пункт 6 с использованием компилятора, входящего в этот пакет. Нет изменений.

На данный момент я пытаюсь скомпилировать исходники вручную, но застрял на этапе редактирования makefile. Думаю попробовать сделать так, чтобы компилятор выдал coff, а не elf.

На одном форуме нашел информацию, что новая версия AVR-GCC некорректно работает с протеусом, человек просто для протеуса использует AVR Studio 4й версии. Но это очень неудобно. Хотелось бы или перенастроить компилятор чтобы он делал все как нужно протеусу, или скачать старую версию компилятора и прикрутить ее к новой Atmel Studio 7.

Есть мысли как это сделать или может быть другие пути решения?


Вложения:
2018-07-20_13-41-06.png
2018-07-20_13-41-06.png [ 59.55 Кб | Просмотров: 2485 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 16:43 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2225
Цитата:
-mmcu=atmega8 -std=c99 %1 -o %2 -g3 -gdwarf-2

-O1 или -Os добавь. Без оптимизации отладка не работает нормально. Об этом кстати последний компилятор или студия (не помню) должны были предупредить. Если не поможет, замени "-g3 -gdwarf-2" на просто -g. У меня так работает с последним тулчейном AVR и протеусом 8.6.

Цитата:
На одном форуме нашел информацию, что новая версия AVR-GCC некорректно работает с протеусом, человек просто для протеуса использует AVR Studio 4й версии. Но это очень неудобно. Хотелось бы или перенастроить компилятор чтобы он делал все как нужно протеусу, или скачать старую версию компилятора и прикрутить ее к новой Atmel Studio 7.

Работает, см. выше. И на 8.5 работало, если не ошибаюсь.

PS: Зачем было менять стандартные опции компилятора, которые протеус сам предлагает в конфигурации Debug? Там бы всё работало ведь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 16:55 
Старожил

Зарегистрирован: 15 янв 2018, 18:52
Сообщения: 854
а у вас такая отладка нормально работает? у меня с крашем протеуса через раз выкидывалась при попытке симуляции. на схеме голая атмега и пара светиков. программа установлена по системным путям с полной латиницей в пути и запущена от админа и один фиг так себя ведет. зато симуляция хекс прошивки нормально идет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 17:05 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2225
"Такая" - это какая? Когда скомпилено прямо в протеусе? Да, нормально, на ура не один проект отлаживал так. Почти всегда соб-но в протеусе и компилю прям. Правки в код сразу внес и симулируешь. Тулчейн вначале юзал от WinAVR, потом перешел на последний атмеловский.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 17:17 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2225
Хмм... стоп, сейчас пошел перепроверить... и правда не кажет нормально адреса... Но не падет, работает норм.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 17:20 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2225
Поменял компилятор на старый от WinAVR - появились адреса. Но кривовата отладка работает, бряки кое-где только 1 раз срабатывают. Блин, работало же у меня когда-то!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 17:23 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2225
Вот нагуглил: http://kazus.ru/forums/showthread.php?t=115068
Цитата:
РАБОЧИЙ тулчейн: AVR_8_bit_GNU_Toolchain_3.5.0_1662.
Начались поиски в мировой помойке - инете. В инете все есть, даже исходники этого тулчейна были найдены, а вот скомпилированного - нема. Пришлось скачать всю студию с ним: Atmel Studio 7.0.634.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 17:38 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 окт 2012, 19:00
Сообщения: 110
Откуда: Санкт-Петербург
NStorm писал(а):
Цитата:
-mmcu=atmega8 -std=c99 %1 -o %2 -g3 -gdwarf-2

-O1 или -Os добавь. Без оптимизации отладка не работает нормально. Об этом кстати последний компилятор или студия (не помню) должны были предупредить. Если не поможет, замени "-g3 -gdwarf-2" на просто -g. У меня так работает с последним тулчейном AVR и протеусом 8.6.

Отсутствие O должно восприниматься им как O1. А вообще добавлял O1, бесполезно. просто -g тоже пробовал.

Цитата:
Работает, см. выше. И на 8.5 работало, если не ошибаюсь.

Ого, это хорошая новость.

Цитата:
PS: Зачем было менять стандартные опции компилятора, которые протеус сам предлагает в конфигурации Debug? Там бы всё работало ведь.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 17:39 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 окт 2012, 19:00
Сообщения: 110
Откуда: Санкт-Петербург
mazahakka v2.0 писал(а):
а у вас такая отладка нормально работает? у меня с крашем протеуса через раз выкидывалась при попытке симуляции. на схеме голая атмега и пара светиков. программа установлена по системным путям с полной латиницей в пути и запущена от админа и один фиг так себя ведет. зато симуляция хекс прошивки нормально идет

Да, в остальном такая отладка работает совершенно нормально и без вылетов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 17:40 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 окт 2012, 19:00
Сообщения: 110
Откуда: Санкт-Петербург
NStorm писал(а):
Поменял компилятор на старый от WinAVR - появились адреса. Но кривовата отладка работает, бряки кое-где только 1 раз срабатывают. Блин, работало же у меня когда-то!

Аналогично, я не нашел где старый компилятор найти, но поставил AVR Studio 5.1 и скомпилировал ей - все отлично работает. Теперь хочу ее компилятор прикрутить к протеусу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 17:43 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 окт 2012, 19:00
Сообщения: 110
Откуда: Санкт-Петербург
NStorm писал(а):
Вот нагуглил: http://kazus.ru/forums/showthread.php?t=115068
Цитата:
РАБОЧИЙ тулчейн: AVR_8_bit_GNU_Toolchain_3.5.0_1662.
Начались поиски в мировой помойке - инете. В инете все есть, даже исходники этого тулчейна были найдены, а вот скомпилированного - нема. Пришлось скачать всю студию с ним: Atmel Studio 7.0.634.

О, блин, списибище!

Я правда наверное не буду брать этот, я возьму из уже установленной мной студии 5.1. Вероятно, это он и есть, я думаю.

СПАСИБО!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AVR-GCC компилятор + отладка в Proteus
СообщениеДобавлено: 20 июл 2018, 18:50 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 окт 2012, 19:00
Сообщения: 110
Откуда: Санкт-Петербург
ИТОГО, как в итоге я решил проблему. Оформлю это в виде гайда на случай если какой-нибудь мой последователь тоже будет 8 часов лазать по интернету и долбится лбом в этот треш.

!Для начала не забываем, что проект протеуса обязательно должен лежать в той же папке, что и все файлы кода, с которым он работает!

1. Берем один из двух компиляторов, которые заведомо корректно работают с Proteus. Один из них был взят коллегой из Atmel Studio 7.0.634 и имеет версию 3.5.0_1662. Другой я взял из AVR Studio 5.1 и он имеет версию 3.3.1.27. Их можно взять ТУТ: https://yadi.sk/d/JyBoevCL3ZPdPK

2. Далее можно поступить одним из двух способов:

2.1. Прикрутить нужный компилятор к вашей студии и скармливать Proteusу полученные после компиляции в студии .ELF файлы для симуляции.

2.1.1. В этом случае надо не забыть выключить оптимизацию, прописав в настройках в студии параметр -s0. Это можно сделать в Atmel Studio 7.0 через Project -> Properties -> Toolchain -> AVR/GNU C Compiler ->Optimization -> Optimization level из выпадающего списка выбрать None (-O0).

Только надо не забывать, что отсутствие оптимизации может увеличить код по размеру и снизить его быстродействие, поэтому для сборки версии, которая пойдет в контроллер, оптимизацию, возможно, имеет смысл включить. Измененные параметры по умолчанию применяются к Debug, для контроллера можно собрать Release (у него кстати вроде еще больше оптимизации и отключено добавление отладочной информации, можно полистать настройки ради интереса в чем разница).

Далее буду просто цитировать коллегу ProtAS-13, которому также большое спасибо, отсюда: http://kazus.ru/forums/showthread.php?t=115068

2.1.2. Создать директорию в c:\\Atmel\Studio\7.0\toolchain\avr8\<любое имя>, и переписать в нее все, что находится в архиве. Путь может быть любой - здесь просто приведен путь, где находится тулчейн студии.

2.1.3. Запустить студию => меню Tools -> Options -> Toolchain -> Package Configuration.

2.1.4. Выбрать из выпадающего списка Toolchains: Atmel AVR 8-bit (C-language) => в списке будут отображаться тулчейны, подключенные к этой группе.

2.1.5. Нажать кнопку Add Flavour => откроется окошко, где надо будет указать узнаваемое имя и путь к директории bin (там должен лежать avr-gcc.exe). Всё, тулчейн подключен к студии.

2.1.6. Перед компиляцией проекта необходимо убедиться, что подключен необходимый тулчейн: свойство проекта => Advanced => в выпадающем списке Toolchain Flavour: выбрать необходимый и после этого перекомпилировать проект.

2.2. Другой вариант, я сделал именно так. В студии оставляем ее штатный компилятор, а протеусу прикручиваем свой собственный. В этом случае протеуса будем кормить не файлами .ELF, а непосредственно файлами .C, а он себе сам сделаем свой собственный .ELF как ему нравится :)

Тут стоит отметить, что у этого способа есть потенциальный косяк: то что мы симулируем и то что будем заливать в контроллер будет создано компиляторами разных версий. Поэтому, чисто теоретически, в некоторых случаях оно может вести себя по-разному, что может оказаться весьма неожиданным и неприятным.

2.2.1. Сохраняем файлы компилятора куда-нибудь, например в папку протеуса, что находится в Program Files.

2.2.2. Запускаем ISIS, заходим в Исходник -> Определить инструменты генерации кода (у меня русская версия, но не думаю что это серьезно помешает).

2.2.3. Нажимаем Новый.

2.2.4. Идем в директорию, куда мы положили файлы компилятора и находим среди этих дебрей папку bin, а в ней файл avr-gcc.exe. Указываем его.

2.2.5. Заполняем поля:
Извлечение исходника: C
Объект извлечения: ELF
Командная строка: -mmcu=atmega8 -std=c99 %1 -o %2 -g3 -gdwarf-2
Вместо atmega8 пишем свой контроллер.
Все остальное оставляем как было.
В итоге должно получится как на приложенном скриншоте.
Подтверждаем выбор.

2.2.6. Заходим в Исходник -> Добавить/удалить файл исходного кода. Выбираем нужный нам контроллер, выбираем только что добавленный нами инструмент генерации кода AVR-GCC. Нажимаем Новый и выбираем наш файл исходного сишнего кода с расширением .C. Еще раз напомню, что он должен находится в той же папке, что и проект протеуса.

2.2.7. Готово, радуемся жизни.


Вложения:
2018-07-20_16-37-43.png
2018-07-20_16-37-43.png [ 8.86 Кб | Просмотров: 2451 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB