LINUX.ORG.RU

Отладка avr приложения

 ,


0

2

Пишу приложение для atmega8 и иногда есть подозрение заканчивается память и из-за этого срывает стек. Чем сейчас модно в linux дебажить avr-приложения собранные с помощью avr-gcc? Пытался смотреть simavr - какая-то поделка которая даже собираться не хочет из git, документации никакой нет (может я не прав?). Что хочется от эмулятора: взять бинарь собранный с помощью avr-gcc и запустить его так, чтобы вывод uart шел в терминал/файл, иметь возможность подсунуть данные по пинам, читать данные по пинам и задавать что получается/отправляется по SPI, ну и программа должна запускаться под отладчиком, чтобы можно было поставить брейкпоинты и выполнять программу по ассемблерным/сишным шагам.


Ответ на: комментарий от Harald

+1, в проектах таких как прошивки для AVR только моск

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

Для кода: paste.org.ru, ни в коем случае не простыню на ЛОР

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Разберись с периферией, там её кот наплакал, а остальное хоть в gcc хоть в С++билдере, потом прошьёшь в железку.

ilovewindows ★★★★★
()

По нехватке памяти, в мапе всё расписано, скорее всего, кто чего вызывает и сколько памяти отводится, надо это дело распарсить, делал когда-то, вроде для IAR, но gcc наверно не хуже)

ilovewindows ★★★★★
()
Ответ на: комментарий от ft232r

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

Например, для Nios2 или Microblaze сразу видно что не влезло. Наверняка для AVR аналогично можно запустить и посмотреть статистику.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от ft232r

Линковщик создаёт файл map, из него можно получить инфу по вложенным вызовам функций и сколько памяти отводится под локальные переменные в стеке. Ну и само количество вложений.Самое неконтролируемое место по расходу памяти. Динамическое выделение ты сам может отследить, глобально тебе просто компилятор лишнего не даст.

ilovewindows ★★★★★
()
Последнее исправление: ilovewindows (всего исправлений: 1)

То, о чем ты пишешь, сейчас, нужно только тебе. Ради тебя пилить инструмент с таким функционалом никто не будет. Даже сами разработчики не просто так добавляют поддержку того же jtag для конкретных кристаллов (там, где это может понадобится, но, увы, это не atmega8; как уже писали выше (для твоего случая) — только «моск»). Отлаживать лучше в железе. Так что либо бери что-то вменяемое (те же младшие STM32) и отлаживай, либо мучайся со своими atmega8 (по цене примерно одинаково, только у STM32 возможностей на порядок больше, хотя бы та же отладка). В общем: выводы делай сам ...

baldman88
()

вроде бы сам симулятор собирается, нужен только avr-libc в системе.

Ну а так есть еще avr studio, который можно в виртуальной машине запускать, или proteus;)

zudwa
()

avr-size натрави на бинарь, чтобы увидеть размеры секций. а там уже смотри по даташиту, сколько памяти тебе доступно.

WRG ★★★★
()
Ответ на: комментарий от WRG

+1, ведь светодиод можно не только зажигать/гасить, но и мигать разной частотой :) а еще туда можно осциллограф тыкнуть

I-Love-Microsoft ★★★★★
()

STM32F103C8T6 и китайский клон ST-Link сделают твои волосы мягкими и шелковистыми. Нет, правда, зачем обмазываться этой архаичной поделкой, если по сопоставимой цене можно взять контроллер с нормальной системой отладки и на порядок более жирной периферией? Вин по всем пунктам, кроме корпуса.

ox55ff ★★★★★
()

всем спасибо за помощь!

к сожалению, в линуксе нужного софта не нашлось, пришлось поставить Amtel Studio на винду. Там в эмуляторе разобрался где был косяк. Как и предполагал - памяти не хватало при вложенных вызовах функций и в какой-то момент одна из функций локальными переменными затирала глобальную и начиналась магия; vsprintf оказался более требовательным к памяти чем я ожидал.

ft232r
() автор топика
Ответ на: комментарий от ft232r

для чего интересно мог понадобиться vsprintf на mega8?

Harald ★★★★★
()
Ответ на: комментарий от ft232r

Меняй мозг. А то у тебя даже логин какой-то нравственно неверный. Безнравственный на все 100%!

Ну какой идиот нонче будет это говно (ft232r) использовать, когда есть всякие дешевые pl2303 и т.п.?

anonymous
()
Ответ на: комментарий от anonymous

Ну какой идиот нонче будет это говно (ft232r) использовать, когда есть всякие дешевые pl2303 и т.п.?

я лично убедился что pl2303 это полнейший ненадежный кал, и избавился от него во всех разработок в пользу FTDI

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Ни разу не натыкался на проблемы с ним.

А вообще, какой смысл париться с преобразователями UART<->USB (кроме, разве что бутлодыря), если полным-полно дешевых МК с набортным USB?

anonymous
()
Ответ на: комментарий от anonymous

А вообще, какой смысл париться с преобразователями

USB VID/PID папа римский выдавать будет? а драйвер? нет, я не неосилятор, просто есть плюсы и минусы

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

VID/PID

Если ты хочешь толпу одинаковых железок подключить к одному компу или же хитрый udev скрипт запускать при подключении, то проще взять тот же STM32 с USB на борту и не парить мозг!

а драйвер?

USB-CDC в ядре есть. Так что не надо тут! Если ты хочешь свой протокол реализовать — флаг тебе в руки, см. первый абзац.

Естественно, переходничок на PL2303 используется только для прошивки микроконтроллера или работы с девбордами, на которых нет USB. В готовое изделие их никто совать не собирается (а вот ft232 всякие идиоты суют!).

anonymous
()

Общеупотребимый метод измерения используемого стека - заполнение участка памяти заранее известным паттерном и периодический контроль изменившихся байт.

Uzix
()

оффтоп немного

странно что кукаретиков про моск всего двое,в первых постах,неужели ботов на лоре побанили

по факту-я тоже в принципе никогда для x86/64 не использовал низкоуровневые дебагеры и считал что они уже устарели и не нужны

но как делал софт для arm-а(бинарный с мизерными ресурсами железки) так и пришлось дебажить и ловить ошибки/непредвиденные расходы от Си компилятора которым собран бинарник,а код был без ошибок(почти(досихпор впечатляюсь типом char в си-худшее изобретение человечества))

anonymous
()
10 апреля 2018 г.
Ответ на: комментарий от anonymous

досихпор впечатляюсь типом char в си-худшее изобретение человечества

а поподробнее, если не сложно?

sunjob ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.