Поводом написания нижеизложенного послужило то как на этом форуме один товарищ утверждал что «AVR-STUDIO + jtag» или «IAR + jtag» это правильно, а всё остальное удел начинающих.
Я постиг Дао программирования. (щютка).
Довольно давно я не пользуюсь отладчиками (как программными так и аппартными) и приборами сложнее напряжеметра (мультиметра). Правда паять мне уже давно не приходится. От меня схема в Оркаде – обратно запаянная плата. Все у меня обычно запускается довольно быстро если не моментально. Только не надо думать что платы очень простые а в конторе нет приборов. Есть несколько осциллографов, включая цифровой с памятью и jtag-отладчики для AVR и ARM. Честно говоря их использую но ооочень редко. Примерно раз в полгода.
Во всех моих поделках есть хотя бы 1 rs232 порт. Вот через него и отлаживаю. Пишу отладочные модули. В любой момент времени могу запросить содержимое ОЗУ, внешней FRAM, EEPROM, часов, и т.д. Пообщаться со всей периферией, подергать ногами, покрутить двигателями, вывести на экран, поработать с нужными функциями программы и т.д. Все в текстовом виде. Команды вида:
Команда ‹1 параметр› ‹2 параметр›‹3 параметр›…
И ответы типа
0000: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
…
Также удобно при выполнении кода посылать отладочные сообщения. Которые при компиляции релиза исчезают.
У коллег бывает ситуанус когда Jtag-отладчик позволяет отловить трудновоспроизводимый глюк. Но у меня вроде такого небыло. Да! Только я один в конторе так отлаживаю изделия, остальные интенсивно используют блага технического прогресса. Я бы не сказал что я проигрываю в скорости выполнения работы, скорее наоборот.
Рекомендовать всем «AVR-STUDIO + jtag» считаю неправильным. Радиолюбителям он может быть попросту не по карману. Да и зачем если радиолюбитель паяет схемку ценой 200 рублей покупать отладчик за 2500 или ещё дороже. Да и есть ли смысл привязываться в наше время к какой либо среде или конкретному производителю контроллеров? Это может быть полезно при профессиональном подходе. Да и тут куча вопросов возникает. Jtag- требует накладных расходов. При отладке по этому интерфейсу некоторые пины контроллера не могут использоваться по назначению. Да и при разводке платы надо на это закладывать. У АРМ7 производитель рекомендует колодку на 16 (непомню сколько) штырей, что не есть гуд. То что JTAG дает рил-тайм отладку – я обойтись могу без этого.
Proteus. Кому только я его не предлагал (совсем не настойчиво). Никому не надо
Его я чаще всего использую для отладки протоколов не имеющих аппаратной поддержки со стороны контроллера. Подключаю виртуальный логический анализатор и вперёд. Опять же без трассировки и пошаговой отладки. Уже стало привычно что если работает в протеусе то и работает в железе.
Например моя текущая работа на ARM7 у которого 512 кБ памяти программ и 32 кБ ОЗУ. Уже написано около 100 кБ – прошивка в бинарном виде, будет ещё столько же как минимум. Пишу на Си (возможно перенесу на Си++) и jtag отладчик мне совсем не интересен.
В этом месте не надо бить себя пяткой в грудь. Не думайте что вы написали бы это на ассемблере гораздо меньшего размера. Я примерно 4 года непрерывно писал на одном ассемблере для x51 и AVR пока не перешёл на Си. Возможно откровением будет некоторым узнать, что на Си программы писать сложнее, вернее сложнее писать правильные программы. Вернее так
Чтобы писать на Си правильные программы разработчик должен не только знать ассемблер и архитектуру процессора но знать как работает сишный компилятор, то есть иметь более высокую квалификацию.
Вопрос к знатокам: что я теряю при таком способе отладки. Вопрос не риторический. Мне действительно интересно.