CodeVisionAVR vs AVR Studio

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение Dr. Alex »

Ну что ж, всем спасибо, разъяснили на пальцах. Я понял. Просто писал и там и там, и вот подумал где кекс будет меньше. Как почитаешь топики разные, так получается, что каждый кулик своё болото хвалит)))) Вот и стало интересно)

Всем ещё раз огромное спасибо!!!!!! :beer: :beer: :beer:
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: CodeVisionAVR vs AVR Studio

Сообщение Kavka »

Dr. Alex писал(а):Я про код AVR Studio на Сях говрю, как-то более элегантно компилятор ассемблирует....
...чуть-чуть по-занудствую :))
Термин элегантно, относиться, скорей, к искусству, нежели к программированию. Ну или к человеческому восприятию тех или иных вещей (в том числе и не материальных). А про меру элегантности я вообще молчу. И что значит "более элегантно"? В каких единицах измеряется? На сколько элегантнее? Смешно, однако. :)
Поэтому, IMHO, правильнее сказать эффективнее по критерию "размер генерируемого кода".
Теперь про "ассемблирует". Слово заимствованное, означает "сборка", "собирать" и т.п.
Если программа написана на языке ассемблера, т.е. в терминах непосредственно соответствующих машинным командам, то как раз и осуществляется, можно сказать, простая сборка готовой программы.
Если же брать ЯВУ, то компилятор осуществляет преобразование программы на ЯВУ в представление на более низкоуровневом языке (объектные файлы, байт-код, листинг на ассемблере, ... ). А потом может осуществляться та самая сборка. Обычно это выглядит как одна операция, но внутри компилятора это всегда несколько стадий. Поэтому компилятор - компилирует (транслирует) программу.
Термин сборка (собрать программу) применяется ещё касательно командных файлов и файлов сборки (makefile) с помощью которых осуществляется запуск программ необходимых для получения исполняемого файла или файла прошивки.

Что лучше, что хуже?... См. третью строку подписи. :)
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Аватара пользователя
vem566
Друг Кота
Сообщения: 4736
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: CodeVisionAVR vs AVR Studio

Сообщение vem566 »

Полностью согласен с Kavka.
Что касается эстетики программирования, то иногда смотря на исходный код, хочется задавить автора, а иногда... У меня в голове возникает термин "изящно".
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: CodeVisionAVR vs AVR Studio

Сообщение Vov123 »

В CVAVR есть удобная "фишечка",в стандартной функции задержки можно использовать как константу,так и переменную в качестве аргумента,а WinAVR только константу.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: CodeVisionAVR vs AVR Studio

Сообщение ChipKiller »

Kavka писал(а):Термин элегантно, относиться, скорей, к искусству, нежели к программированию.
... данный термин скорее всего ИМХО является аналогом фраз читаемость , удобство сопровождения и т.п...
Vov123 писал(а):В CVAVR есть удобная "фишечка"...
... а кто запрещает сделать ручками то же самое?

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

 Delay_ms(int cnt){
    while(cnt--){delay_us 1000;}
}
Реклама
Аватара пользователя
uni
Встал на лапы
Сообщения: 137
Зарегистрирован: Пт дек 07, 2007 11:17:40
Откуда: г. Екатеринбург
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение uni »

В AVR Studio 4 есть вот такая фишка, которая может "побить" всё остальное. Когда проект вырастает из штанишек, то основным критерием становится отладка. Вряд ли может быть что-либо лучше оригинального отладчика. Между прочим, в AVR Studio 4 можно даже отлаживать в железе проекты BASCOM AVR, т.е. на бейсике написанные. Представьте себе, отладчик даже пытается ходить по коду листинга при отладке.
Вложения
AVRStudio4.19&ProteusVSM.png
Отладка в AVR Studio 4
(220.71 КБ) 636 скачиваний
Россия навсегда!
Реклама
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

uni писал(а):Когда проект вырастает из штанишек, то основным критерием становится отладка.
Довольно сомнительное и загадочное утверждение. Оновным критерием чего становится отладка?

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

Есть довольно интересные методики, которые помогают выявить ошибки как можно быстрее и практически устраняют необходимость отладки, например, TDD (test-driven development, разработка через тестирование), CI (Continuous Integration, непрерывная интеграция) и др. Для применения этих методик в разработке встроенных систем имеются специальные инструменты, но они слабо связаны со средой разработки; их с равным успехом можно применять как в атмеловских "Студиях" любой версии, так и в альтернативных средах вроде Eclipse или CodeBlocks.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение YS »

есть довольно распространенное заблуждение, что программирование контроллеров принципиально отличается от остального программирования, но оно несостоятельно и служит лишь оправданием лени и нежелания учиться
Как раз те, кто говорят, что все едино, часто и оправдывают этим свою лень и нежелание учиться. : )

Естесственно, отличия в подходе есть, и утверждение о наличии разницы вполне состоятельно. Мне лично приходилось просвещать в эмбеде нескольких людей, до того писавших исключительно под ПК, и вследствие сего привыкших к гигабайтам оперативной памяти, гигагерцам тактовой частоты а также возможностям стандартного вывода.

Из личного опыта:

1. пришедшие с ПК склонны пихать float везде. Особенно, если пришли с чего-то типа Python.

2. пришедшие с ПК склонны использовать тип bool там, где хватит бита в переменной состояния. На ПК с его гигабайтами оперативной памяти это и правда некритично, в эмбеде всегда лучше использовать флаги для экономии памяти, ибо один байт заменяет ВОСЕМЬ булевских переменных.

3. пришедшие с ПК склонны выбирать для переменных самый большой тип, или просто по умолчанию пишут int, в то время как в эмбеде лучше брать минимально достаточный по размеру тип.

Что характерно, порой пришедшие с ПК пытаются записать в int на AVR число, большее 0xFFFF, и удивляются, что оно не лезет. :)))

4. пришедшие с ПК, особенно с чего-то типа Python, очень смутно понимают смысл логических операций, не следят за возможным переполнением и знаком, если тип знаковый.

Это основные моменты, основанные на личном опыте. Когда дело доходит до алгоритмизации, вылезает еще куча различий. Так что прикладника, начинавшего с ПК, порой надо натурально переучивать под микроконтроллеры. Я уже не говорю о том, что хорошо решать реальные задачи на МК, не зная схемотехники, почти невозможно.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
uni
Встал на лапы
Сообщения: 137
Зарегистрирован: Пт дек 07, 2007 11:17:40
Откуда: г. Екатеринбург
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение uni »

Я соглашусь с вами, Goldsmith, если вы мне покажите реальный проект для встраиваемых систем, где эта TDD использовалась. Не теоретическая возможность, а нечто осязаемое, что можно потрогать, перенять, вставить в свой проект. Мне просто интересно как это может выглядеть для микроконтроллерных проектов.

Лет за 12 я видел всего одного человека, который пытался что-то такое делать и может быть у него даже что-то и получалось: Немного о тестировании программ для МК. Но подход его в массы не пошёл.

Остальные люди пользуются отладчиком для всего: отлов ошибок, изучение периферии, экспериментирование, доводка и т.д.
Россия навсегда!
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: CodeVisionAVR vs AVR Studio

Сообщение HHIMERA »

YS писал(а):
есть довольно распространенное заблуждение, что программирование контроллеров принципиально отличается от остального программирования, но оно несостоятельно и служит лишь оправданием лени и нежелания учиться
Как раз те, кто говорят, что все едино, часто и оправдывают этим свою лень и нежелание учиться. : )
100% ... :)))
Бредоносцы в потёмках это святое... без них скучно... :)))
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: CodeVisionAVR vs AVR Studio

Сообщение HHIMERA »

uni писал(а):Но подход его в массы не пошёл.
Что и следовало ожидать...
Пока по этой статье всё выглядит так как будто всеобъемлющее автоматизированное тестирование — это какая-то серебреная пуля, позволяющая отловить, если не все, то почти все дефекты в разрабатываемой программе. В реальной жизни это далеко не так. Во первых если просто наклепать каких-никаких тестов для уже написанной программы, то это не даст ровным счетом ничего. Такие тесты будут просто показывать, что программа работает именно так, как она работает и будут пригодны только для проверки, что новые изменения не сломали старую функциональность (уже полезно, впринципе). Во-вторых далеко не всякий код можно и нужно тестировать независимо от всей остальной системы. Например, драйвера различных специфичных внешних устройств, которые нельзя симулировать, очевидно можно тестировать только на реальном оборудовании. Проще говоря для того чтобы протестировать фрагмент кода (модуль) нужно в тестовом окружении воспроизвести все его исходящие зависимости.
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
uni
Встал на лапы
Сообщения: 137
Зарегистрирован: Пт дек 07, 2007 11:17:40
Откуда: г. Екатеринбург
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение uni »

Да, я о том же...

YS, можно ещё добавить:

5. Пришедшие с ПК склонны в прерывания вставлять вывод в uart (с функцией sprintf()) и потом удивляться, что всё как-то не так работает.

6. Пришедшие с ПК вряд ли сообразят, что отладку "узких" по времени мест в коде можно делать при помощи осциллографа, используя свободные выводы контроллера как флаги. Так, кстати, делать правильнее, чем вставлять printf'ы и прочее в ISR.

На больших ПК между программистом и железом лежит толстая прослойка промежуточного ПО, которая скрывает устройство железок от пользователя. На низком уровне ничего такого нет, ты работаешь практически напрямую с сигналами и нет времени задуматься и сделать ещё что-то, разве что только ножкой дёрнуть, чтобы на осциллограмме это было заметно. Между прочим, я когда-то именно так проводил теститрование драйвера Modbus одного. Там важен один интервал в 3,5 символа, так вот нужно было убедиться, что он реально выдерживается, а как это сделать? У нас был один цифровой осциллограф, который более менее что-то там пытался оцифровывать, я наснимал на нём разные пакеты, потом загрузил их в Mathcad и расчётным путём подтвердил, что вроде всё нормально работает в разных режимах. Как такое сделать программным путём мне трудно представить, а ведь выдержка временных диаграмм в протоколах - это очень важная вещь, если она реализуется программно.
Россия навсегда!
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

YS писал(а):Мне лично приходилось просвещать в эмбеде нескольких людей, до того писавших исключительно под ПК, и вследствие сего привыкших к гигабайтам оперативной памяти, гигагерцам тактовой частоты а также возможностям стандартного вывода.
Альтернативно одаренных можно найти в любой области. Вы найдете немало и обратных примеров, - тех, уто уверен, что главное в эмбеддинге - это выбор правильной температуры жала паяльника, а код вполне можно писать задней левой ногой, и неплохо получится. Причем далеко ходить не придется.
YS писал(а):пришедшие с ПК склонны пихать float везде. Особенно, если пришли с чего-то типа Python.
С такой аргументацией лучше в тему "Мяу - православие". Таки все пришедшие и таки везде?

Начсет Питона - ну несерьезно же. Вы бы еще взяли для себя ориентиром тех, кто программирует в 1С-Бухгалтерии или раскрашивают веб-странички.

Пообщайтесь лучше с теми, кто пишет драйверы и/или любой код в режиме ядра для ПК (ну и вообще решает задачи реального времени на этой платформе). В этой среде эмбеддеру не так легко распушить перышки, как среди ламеров, не знающих длину слова или состав регистров на собственном процессоре.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение YS »

5. Пришедшие с ПК склонны в прерывания вставлять вывод в uart (с функцией sprintf()) и потом удивляться, что всё как-то не так работает.
О-о-о, printf - это вообще песня. :) Сколько шаблонов было разорвано тем фактом, что для мелкого-мелкого контроллера printf - страшный монстр, которого лучше не использовать...
Вы найдете немало и обратных примеров, - тех, уто уверен, что главное в эмбеддинге - это выбор правильной температуры жала паяльника, а код вполне можно писать задней левой ногой
К сожалению, да. Но это уже не эмбед, это дилетантство. Эмбеддер - человек, который разбирается и в схемотехнике, и в программировании. Этим он и ценен.
Пообщайтесь лучше с теми, кто пишет драйверы и/или любой код в режиме ядра для ПК (ну и вообще решает задачи реального времени на этой платформе).
Общаюсь с большим удовольствием. С ними приятно говорить, поскольку они свободны от всех перечисленных ляпов. Более того, у них можно многому поучиться.

Вообще говоря, написание драйверов вполне попадает под понятие эмбеда, ибо драйверописатели работают на самом низком уровне и разбираются в железе. Так что они тоже эмбеддеры.
Таки все пришедшие и таки везде?
Таки не все, да. Мой друг-программист, специалист по распределенным вычислениям и поклонник Хаскеля, исследователь вирусов на досуге, неплохо разбирается в схемотехнике и пишет кристалльно ясный код на любом из знакомых ему языков. Но таких единицы.
Начсет Питона - ну несерьезно же. Вы бы еще взяли для себя ориентиром тех, кто программирует в 1С-Бухгалтерии или раскрашивают веб-странички.
А вот это мейнстрим, именно то, что в среднем значит сейчас слово "программист". Естесственно, я ориентируюсь на большинство и под "программированием на ПК" понимаю именно это. С этим и боремся.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

uni писал(а):Я соглашусь с вами, Goldsmith, если вы мне покажите реальный проект для встраиваемых систем, где эта TDD использовалась. Не теоретическая возможность, а нечто осязаемое, что можно потрогать, перенять, вставить в свой проект. Мне просто интересно как это может выглядеть для микроконтроллерных проектов.
Если действительно интересно - извольте для начала:
http://www2.enel.ucalgary.ca/People/Smi ... _paper.pdf
http://www.atomicobject.com/files/EIT20 ... dedTDD.pdf
Если заинтересуют эти примеры, добавлю еще, "их есть у меня". в принципе можете самостоятельно найти примеры на сайте фирмы Atomic Object вместе с бесплатными инструментами весьма неплохого качества. Да и вообще эта команда открыта для общения, если решите пообщаться с ними, не пожалеете. Есть и другие, но не буду загромождать этот пост ссылками. Захотите еще - всегда пожалуйста.

Кстати, я и сам решился "поиграться" с микроконтроллерами лишь после того, как удалось подобрать адекватный набор инструментов для TDD. Уж очень сильный когнитивный диссонанс вызывал столь явный разрыв между дисциплиной программирования "больших" распределенных систем и убогостью инструментария для встроенных разработок. Как только выяснилось, что и в embedded мире дела обстоят не так уж плохо, сомнения исчезли.
uni писал(а):Лет за 12 я видел всего одного человека, который пытался что-то такое делать и может быть у него даже что-то и получалось: Немного о тестировании программ для МК. Но подход его в массы не пошёл.
Судя по статье, подход довольно наивный и для влияния на массы явно слабоват. Я даже опускаю придирку, что человеку, не владеющему родным языком и не знающему, как пишется слово "серебряный", явно противопоказано писать статьи до прокачки скилла в великом и могучем. В наше время повальной профанации это уже печальная норма. Хотя есть там и явно здравая мысль (хоть и заимствованная у классиков, но тем не менее):
Отсюда вывод: программы изначально нужно разрабатывать с учётом потребности в тестировании.
Но, поскольку эта мысль не подкреплена конкретными рекомендациями, она легко теряется в общем белом шуме пустословия.

Книгу, ссылка на которую приведена в цитате, тоже трудно отнести к золотому фонду. Все больше общие слова без конкретных предложений. Такие книги скорее дискредитируют тестирование, чем продвигают. Есть книги и получше (ссылки я неоднократно приводил на данном форуме, скоро, наверное, обвинят в рекламе).
uni писал(а):Остальные люди пользуются отладчиком для всего: отлов ошибок, изучение периферии, экспериментирование, доводка и т.д.
Ну и зря. Отладчик нужен для отладки (прошу прощения за банальность), т. е. обнаружения точного местоположения ошибки, само наличие которой уже обнаружено тестами (или жалобами пользователей, оказавшихся в роли невольных бета-тестеров, если разработчики сами не удосужились протестировать собственный продукт). Отладчик сам по себе интерактивен, поэтому обнаружение ошибок с его помощью - чистое разбазаривание времени разработчика. Я искренне завидую тем, чьи заказчики столь щедры, что оплачивают такие забавы из своего кармана.
Последний раз редактировалось Goldsmith Вс мар 03, 2013 01:59:16, всего редактировалось 2 раза.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

YS писал(а):вот это мейнстрим, именно то, что в среднем значит сейчас слово "программист".
А для бабушек из бухгалтерии "программист" - это тот, кто втыкает обратно вырванные уборщицей провода и меняет бумагу в факсе. Не доводилось встречать такую точку зрения? Если нет, Вам очень повезло.

Говоря об отсутствии принципиальных различий между программированием "больших" и "встроенных" систем, я имел в виду несколько более высокий уровень понимания проблемы, чем у упомянутых бабушек. Но, учитывая такой (несколько неожиданный, поскольку это все-таки не бухгалтерский форум) разброс точек зрения, не рискну настаивать на своей. В конце концов, мнение, что эмбеддер - это тот, у кого есть паяльник, а программист PC - тот, кто умеет сводить квартальный баланс, тоже имеет право на жизнь, и с его учетом эти виды деятельности действительно принципиально разнятся, тут глупо спорить.

P.S. Байки про тотальную глупость "больших" программеров оценил, смишно. При наличии достаточно извращенной фантазии можно сочинить аналогичный анекдот про то, как эмбеддер пишет программу "Hello World" под Windows пару месяцев, поскольку ему для вывода фразы на экран приходится сначала разрисовать шрифт по точкам, а затем написать свой драйвер для прямого доступа к памяти видеокарты, чтобы эти точки высветить на экране. Но нужно уметь отличать анекдоты от реальной жизни. А в реальной жизни зачастую оказывается, что другие не настолько глупее нас, как нам хотелось бы думать. Чем раньше сможете с этим смириться, тем меньше разочарований испытаете впоследствии.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Аватара пользователя
uni
Встал на лапы
Сообщения: 137
Зарегистрирован: Пт дек 07, 2007 11:17:40
Откуда: г. Екатеринбург
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение uni »

Ну и зря. Отладчик нужен для отладки (прошу прощения за банальность), т. е. обнаружения точного местоположения ошибки, само наличие которой уже обнаружено тестами (или жалобами пользователей, оказавшихся в роли невольных бета-тестеров, если разработчики сами не удосужились протестировать собственный продукт). Отладчик сам по себе интерактивен, поэтому обнаружение ошибок с его помощью - чистое разбазаривание времени разработчика. Я искренне завидую тем, чьи заказчики столь щедры, что оплачивают такие забавы из своего кармана.
За ссылки спасибо, один проект тестовый я у них взял, посмотрю. Отладчик для эмбеддера - это такой же точно инструмент как осциллограф. Если бы у местного народа был нормальный отладчик, то большая часть вопросов у них просто бы отпала сама собой, а если бы был и осциллограф, то многие даже и не думали писать здесь свои вопросы, так как ошибку или недочёт они могли увидеть прямо на экране.

Вот что тут чаще всего, насколько я заметил, народ делает? Пишет на скорую руку программку, при этом из разных частей, прошивает кое-как (программатор-то у всех есть), она с первого раза не работает и далее идёт процесс поиска ошибки. Большая часть ошибок, насколько я замечал, от недопонимания самого предмета - мк, следующая часть от недопонимания Си, далее - собственно, используемого алгоритма в программе. Что делает человек, когда сдался? Пишет пост, говорит, что не работает и прикладывает код как есть :) Телепаты начинают работу. А что могло бы быть, имей человек хотя бы какое подобие отладчика? Он мог бы набирать программу не целиком, а частями и постепенно двигаться к цели - кусочек за кусочком, проверяя работу в отладчике. Написал одну строчку - проверил, ещё одну - проверил... и так далее, пока не дойдёт до нужного результата. Если же код работает как-то не так, то он смотрит состояние отладчика и думает почему так. Такой подход используется для самообучения. Чем плох такой вариант? И чем он отличается от подхода при программировании в той же Delphi, Visual Studio? Да ни чем не отличается. Там точно также пишешь код, компилируешь и смотришь под отладчиком, причём, делаешь это постоянно и итеративно.

Ещё вариант. Приняли на работу человека и дали ему объём - сопровождай, говорят. Сидит человек, думу думает и спрашивает главного программиста, а как это вообще работает? И что, он будет схемы алгоритмов рисовать что-ли? Кто-нить их видел когда в чужом проекте? Я лично нет. В таком случае берёшь отладчик, задаёшь начальные условия и прыгаешь по коду, пока не поймёшь общую структуру. Я, к примеру, по тому же freemodbus'у долго так прыгал в отладчике, пока, наконец, до меня не дошло как меняются состояния в программе, т.е. как данные транслируются в процессе циклической работы. По листингам это понять можно, но только прокручивая это всё в голове, но голова от этого может заболеть и времени так удёт на порядок больше.

Я бы вообще рекомендовал всем местным товарищам освоить связку: AVR Studio 4.xx + Proteus VSM + виртуальный нуль модем + терминал. Это покроет многие вопросы при отладке программ на асме, Си и С++. При этом можно не иметь пока реального железа, но большую часть кода можно проверить виртуально, общаясь с мк через терминал и отладчик Студии.
Россия навсегда!
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

uni писал(а):За ссылки спасибо, один проект тестовый я у них взял, посмотрю.
Если заинтересуетесь, у меня в запасе еще есть подобные. Я пристально слежу за этой темой, поскольку пока материалов негусто, мало кто охотно делится своими наработками.
uni писал(а):Отладчик для эмбеддера - это такой же точно инструмент как осциллограф.
IMHO Вы все же несколько преувеличиваете роль и того, и другого. И отладчик, и осциллограф вполне доступны даже для любителей. Вот только они далеко не всемогущи и должны сочетаться с другими инструментами. Логический анализатор сразу покажет полную картину там, где двухлучевым осциллографом придется долго и нудно тыкать по контактам; аналогично система автоматизированного модульного тестирования за секунду выявит ошибку, поиск которой в интерактивном отладчике может отнять изрядное время.
uni писал(а):Вот что тут чаще всего, насколько я заметил, народ делает? Пишет на скорую руку программку, при этом из разных частей, прошивает кое-как (программатор-то у всех есть), она с первого раза не работает и далее идёт процесс поиска ошибки. Большая часть ошибок, насколько я замечал, от недопонимания самого предмета - мк, следующая часть от недопонимания Си, далее - собственно, используемого алгоритма в программе.
Мне искренне непонятен ваш с YS подход - выбирать какие-то маргинальные примеры и на их основе делать глубокие выводы. Один выбирает программистов-неумех и на этом основании делает вывод о плачевном состоянии отрасли в целом; другой наблюдает за горе-эмбеддерами и рисует столь же безрадостную картину. Неудивительно, что отсюда следует вывод: "гуанокодинг" на "больших" системах и "коекакерство" в эмбеддинге не имеют ничего общего (хотя с моей точки зрения это как раз одно и то же - халтура, она и есть халтура).

Переместитесь на другую сторону шкалы мастерства: сравните лучшие практики "большого" программирования и эмбеддерства. Удивитесь, как много среди них общего: методики, инструменты, паттерны... Это, конечно, потруднее, но куда результативнее.
uni писал(а):Сидит человек, думу думает и спрашивает главного программиста, а как это вообще работает? И что, он будет схемы алгоритмов рисовать что-ли? Кто-нить их видел когда в чужом проекте? Я лично нет.
Опять маргинальный пример. В "большом" программировании довольно давно и успешно применяется нотация UML, которая для кода является примерно тем же, чем принципиальная схема и прочая документация - для оборудования. Ее вполне успешно адаптировали для приложений реального времени (один из участников этого процесса даже написал очень неплохую книгу).

Если Вам предложат разобраться в "железе", которое спаяли, но не удосужились нарисовать схему (хотя бы от руки), вы наверняка решите, что разработчики, мягко говоря, не слишком умны. Не документировать программную составляющую проекта - точно такая же глупость, как и восстанавливать недокументированную схему по проводникам на плате лишь потому, что неграмотные разработчики не научились рисованию схем.
uni писал(а):Я бы вообще рекомендовал всем местным товарищам освоить связку: AVR Studio 4.xx + Proteus VSM + виртуальный нуль модем + терминал. ... При этом можно не иметь пока реального железа, но большую часть кода можно проверить виртуально, общаясь с мк через терминал и отладчик Студии.
А если использовать паттерн проектирования MCH (это эмбеддерский аналог паттернов MVC и MVP из мира "больших" программ, найдете его описание в статьях по моим ссылкам), который отделяет бизнес-логику программы от оборудования, то совместно с системой модульного тестирования и генератором мок-объектов точно так же сможете большую часть кода отладить без "железа" и даже без симулятора, и к тому же в качестве бонуса получить хорошую архитектуру, а также возможность применять регрессионное тестирование, что довольно накладно с использованием отладчика.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: CodeVisionAVR vs AVR Studio

Сообщение HHIMERA »

К чему весь этот красивый бред, если сами ни разу этим не пользовались???
Спуститесь на землю, только не быстро, а то больно будет...
Я понимаю... хорошо писать красивые слова, особенно если ничего в этом не смыслишь... да и всегда найдутся те, кто будет слушать открыв рот...
"Ах, как она играла!"(С)
:)))
Goldsmith писал(а):А если использовать паттерн проектирования MCH (это эмбеддерский аналог паттернов MVC и MVP из мира "больших" программ, найдете его описание в статьях по моим ссылкам), который отделяет бизнес-логику программы от оборудования, то совместно с системой модульного тестирования и генератором мок-объектов точно так же сможете большую часть кода отладить без "железа" и даже без симулятора, и к тому же в качестве бонуса получить хорошую архитектуру, а также возможность применять регрессионное тестирование, что довольно накладно с использованием отладчика.
А если всё так легко и просто, почему всё так хреново с прогами на "большом сером брате"... глюк на глюке, тормоз на тормозе???
Никто не тестирует, или тесты гуано???
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
uni
Встал на лапы
Сообщения: 137
Зарегистрирован: Пт дек 07, 2007 11:17:40
Откуда: г. Екатеринбург
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение uni »

К сожалению, большая часть моих примеров это суровая реальность, а вовсе не маргинальность. Взять тот же UML2, честно говоря, я знаю только одного человека, который пытался это применить для написания оберточного кода - это я сам. Где-то с год назад или больше я открыл тему по этому поводу на форуме электроникса, которую так и назвал: кросскомпиляторный шаблон проекта на C++ для GCC и IAR, попытка правильного проектирования сверху. Мне удалось на практике самому найти инструментарий, который мог автоматизировать работу по созданию классов на UML2 и экспорту их в код, а также импорту обратно. Хотя это вроде даже практически работает, но не нашлось с тех пор ни одного человека, которого бы это заинтересовало, так как для этого нужно много дополнительных знаний, не говоря уж про C++, который мало используется на практике.

У меня очень большие сомнения, что нормальный отладчик и цифровой осциллограф доступны для любителя. Нет, они конечно стараются, но что-то я не наблюдал тут скринов отладки или временных диаграмм, описывающих проблему.

Я разбирал много чужого кода и никакой ни модульности, ни прочего, честно говоря не видел. Зачем далеко ходить, многие периферийные модули или протоколы всем известны. Я уже приводил имена: PetitFS, freemodbus, библиотеки для работы с индикаторами, v-usb. Исходники известны, можно добавить ещё что-то. Хотел бы я узнать какой паттерн и где там применялся. Я же не собираюсь всё это переписывать сам с нуля.

Что касается документирования алгоритмов, то могу сказать следующее, я работал автоматчиком в прокатном цехе двухниточного стана, который полностью автоматизирован и работает большей частью на 5-6 ПЛК от Сименс. Так вот, эти самые алгоритмы программ являются ноухау фирмы Даниелли и никто и не собирается и не собирался нам их давать. Автоматчикам дается общий курс и показываются некоторые места в коде, а дальше они могут лишь из отладчика наблюдать как работает стан и так постепенно его изучать. И это у европейцев считается нормой. На электрику вся документация есть, а на алгоритмы в ПЛК нет ничего, только описание вх и вых сигналов, всё. Так что это не глупость, а суровая реальность. Не хочет давать фирма алгоритмы и не даст, а всё сопровождение идёт при помощи отладчиков, которые могут в реальном времени смотреть на схемы внутри ПЛК. Либо при помощи анализаторов, но они имеют некоторые ограничения.
Россия навсегда!
Ответить

Вернуться в «AVR»