CodeVisionAVR vs AVR Studio

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

uni писал(а):У меня очень большие сомнения, что нормальный отладчик и цифровой осциллограф доступны для любителя.
Тот же предлагаемый Вами отладчик из Студии вполне функционален и совершено бесплатен. За отладчик из GNU toolchain тоже денег не просят. Их может себе позволить любой.

Цифровой осциллограф, возможно, и жирноват по цене для начинающего, но аналоговый в хорошем состоянии вполне доступен. Например, я свой С1-99 недавно отдал за 3.000 в отличном состоянии (полная комплектность, я у него первый владелец, аккуратно пользовался около года). У каждого второго школьника в кармане мобила в несколько раз дороже.

Так что - было бы желание, кто действительно захочет, тот обзаведется.
uni писал(а):На электрику вся документация есть, а на алгоритмы в ПЛК нет ничего, только описание вх и вых сигналов, всё. Так что это не глупость, а суровая реальность.
На чужое изделие в принципе и схему вполне могут не дать, это понятно. Используйте как черный ящик, пока работает. Не дает же Атмел принципиальных схем на свои МК, и ничего.

Речь шла о проектной документации, доступной разработчикам:
Кто-нить их видел когда в чужом проекте?
Если документацию секретят от посторонних, это понятно (хоть и создает проблемы при эксплуатации "черного ящика", но при нормальной техподдержке терпимо). Если ее не ведут в принципе, это головотяпство. Один взгляд на диаграмму UML даст столько же информации, сколько и тщательное чтение целой пачки листингов.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Реклама
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

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

Эко вас, братцы, понесло.... Вопрос-то стоял в другом)))))).........
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Реклама
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

Простите великодушно, если можете... Тем более что Ваш мегавопрос давно уже давно решен в первых нескольких постах.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: CodeVisionAVR vs AVR Studio

Сообщение HHIMERA »

Dr. Alex писал(а):Эко вас, братцы, понесло.... Вопрос-то стоял в другом)))))).........
Ну... если вам ещё не перехотелось возиться с МК... то... 99.99(9)% отказоустойчивости
обеспечивается схемотехнически !!!
А отказоустойчивость проги, в общем то, только вашими знаниями и возможностями мозга...
Так что... скачивайте AVR Studio и вперёд!!!

Это писалось под Микрочип, но общие тенденции справедливы для всех МК...
EMC_ru.pdf
(1.41 МБ) 842 скачивания
FLR10.pdf
(1.12 МБ) 290 скачиваний
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение YS »

Неудивительно, что отсюда следует вывод: "гуанокодинг" на "больших" системах и "коекакерство" в эмбеддинге не имеют ничего общего (хотя с моей точки зрения это как раз одно и то же - халтура, она и есть халтура).
Где тут такой вывод? Напротив, это действительно звенья одной цепи. Просто надо смотреть правде в глаза: большинство нынешних программистов таки с трудом отличают AVR от ARM, а ARM от MIPS, и все это вместе от x86. Это не "маргинальные примеры", это суровая правда жизни. :dont_know: И вот такие товарищи, пришед на почву МК, становятся Ардуинщиками.

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

Re: CodeVisionAVR vs AVR Studio

Сообщение Kavka »

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

Re: CodeVisionAVR vs AVR Studio

Сообщение vem566 »

Kavka писал(а):Тот Самый Программист, который хорошо знает, что внутри компьютера, а также что и как из него можно выжать, то единственное, что ему надо сделать - прочесть даташит
Когда начинал, 25 лет назад, очень быстро убедился, что подобные специалисты уже тогда были в "красной книге". Сейчас остались те, кто начинал в те времена. Кто начинает сейчас - просто не у кого учиться. А книгами пользоваться не умеют. Что такое ассемблеровская вставка уже только слышали. Если в любой среде разработки высокого уровня, приходится что-то своё писать, то считают это программированием на низком уровне. Короче, и тут жопа.
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: CodeVisionAVR vs AVR Studio

Сообщение Kavka »

vem566, ты с именем цитируемого ошибся. :)

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

Re: CodeVisionAVR vs AVR Studio

Сообщение vem566 »

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

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

Основные навыки, которыми должен владеть специалист в области программной инженерии, весьма четко определены в SWEBOK. IEEE Computer Society - достаточно авторитетная организация, чтобы хотя бы обратить внимание на ее образовательный стандарт, да и участие в его разработке таких фирм, как Boeing, Rational, SAP, Construx Software и других кое-о чем говорит.

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

А вообще тема постепенно свернула на проторенную колею:
Наша молодежь любит роскошь, она дурно воспитана, она насмехается над начальством и нисколько не уважает стариков. Наши нынешние дети стали тиранами; они не встают, когда в комнату входит пожилой человек, перечат своим родителям. Попросту говоря, они очень плохие. (Сократ, ~380 год до Р.Х.)

Я утратил всякие надежды относительно будущего нашей страны, если сегодняшняя молодежь завтра возьмет в свои руки бразды правления, ибо эта молодежь невыносима, невыдержанна, просто ужасна. (Гесиод, ~720 год до Р.Х.)

Эта молодежь растленна до глубины души. Молодые люди злокозненны и нерадивы. Никогда они не будут походить на молодежь былых времен. Младое поколение сегодняшнего дня не сумеет сохранить нашу культуру. (Надпись найдена в развалинах Вавилона, ~3000 лет до Р.Х.)
Мой опыт свидетельствует, что молодость - не столь уж тяжкий порок, а лень, глупость и самодовольство не имеют возраста. Среди убеленных сединами (а то и щедро украшенных лысинами) кодоборзописцев тоже немало тех, кто явное невежество прикрывает красивым словом "творчество": мол, он не следует догмам (поскольку на самом деле попросту с ними не знаком, но ни за что в этом не признается, пока не будет приперт к стенке), а ищет свой путь (который в итоге оказывается извилист и тернист). Так что лучше все же вспомнить Экклезиаста:
Не говори: «Отчего это прежние дни были лучше нынешних?», потому что не от мудрости ты спрашиваешь об этом.
и судить кодеров по делам их (а дела их ой как разнообразны...).
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение YS »

Программист, не умеющий управлять требованиями, писать автоматические модульные тесты или управлять конфигурациями, - столь же нелепое явление, как архитектор-строитель, не знающий сопромата.
Для эмбеда актуальнее знание MISRA C. А модульные тесты там не всегда прокатят. Расскажите мне, темному, как без железа оттестировать код, реализующий, например, софтовый USB (вроде V-USB)? :)

Вообще, эмбеддер - где-то на 80% схемотехник, на 20% - программист.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

YS писал(а):Для эмбеда актуальнее знание MISRA C.
И что там конкретно знать? Набор рекомендаций, большая часть из которых довольно банальны, и очень многие могут быть проверены простым статическим анализатором кода? Не бином Ньютона и на инженерную дисциплину уж никак не тянет. Всего лишь рядовой стандарт кодирования, хоть и толковый, безусловно. К тому же для пишущих, например, на той же ADA это лишь пустой звук.
YS писал(а):А модульные тесты там не всегда прокатят.
Там - это где конкретно? Может, там их и не очень нужно?
YS писал(а):Расскажите мне, темному, как без железа оттестировать код, реализующий, например, софтовый USB (вроде V-USB)? :)
Вот так вот, мимоходом, в одном посте на десяток-другой строк, пересказать содержимое книги, которая целиком посвящена этой теме (и которая Вам, кстати, знакома, хотя бы сам факт ее существования: prooflink)? Я, к сожалению, не Илона Давыдова и не владею экспресс-методом; такие знания добываются только трудом, "царских путей к геометрии нет" (С). Кстати, с темнотой вполне можете побороться самостоятельно (и даже одержать верх), ибо ссылку на мою "книжную полку" уже неоднократно видели (и даже благодарили как-то). Могу подсказать ключевое "магическое" слово: мок-объекты.

Встречный каверзный вопрос: Вам нужно протестировать часть программы, ответственную за обработку ошибки (все равно какой; например, это код, обрабатывающий ошибку записи на флеш-карту, или ошибку обращения к веб-серверу курса валют, или что-то еще). Сломаете флешку или сделаете имитатор? Поднимете собственный сервер, который выдает ошибку при обращении? Просто наплюете и оставите код непроверенным? Полное покрытие кода тестами даже на реальном железе - не такая простая задача, поскольку некоторые функии спровоцировать бывает очень непросто. Тестовые дублеры - очень хорошие помощники в этом.
YS писал(а):Вообще, эмбеддер - где-то на 80% схемотехник, на 20% - программист.
Это напоминает очередную рекламу супершампуня: "Ваши волосы стали на 73 процента сильнее и на 55.7 процентов ярче". А кто их реально мерит, эти проценты, и чем?

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

Re: CodeVisionAVR vs AVR Studio

Сообщение YS »

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

Re: CodeVisionAVR vs AVR Studio

Сообщение uni »

Вообще, эмбеддер - где-то на 80% схемотехник, на 20% - программист.
Это напоминает очередную рекламу супершампуня: "Ваши волосы стали на 73 процента сильнее и на 55.7 процентов ярче". А кто их реально мерит, эти проценты, и чем?
Это очень просто измерить. Возьмите примерно 50 типовых datasheets, которые использует эмбеддер в своей практике. Прочитайте их и попробуйте выявить соотношение между количеством кода и количеством приведённых электрических схем. Думаю, что соотношение вполне отражает ситуацию. Банальное тактирование микроконтроллера, ограничения по питанию, логические уровни и т.д. - всё это относится к схемотехническому уровню и, если, к примеру, человек не понимает как работает Pull-up резистор, то ему очень трудно будет потом вылавливать ошибки на верхнем уровне при работе с портами.

Что касается флешки, то прежде чем писать тесты, нужно сначала её правильно подключить. Эмбеддер тем и отличается, что понимает КАК это делается и почему. Поэтому успех работы с флешкой зависит от того правильно ли её подключение разведено на плате, иначе можно всякими тестами поймать виртуальные ошибки. У меня был такой случай, когда на готовой плате были не пропаяны два вывода держателя карточки или ещё был случай, когда был не пропаян вывод отвечающий за работу по протоколу I2C. Такого рода ошибки искать без знания схемотехники очень трудно. Программа тебе скажет, что-то не работает, даже осциллограмма может показать, что вроде сигналы на линии есть, а вот на выводе периферии его нет (непропай) - тут работает интуиция и метод исключения, если человек не владеет схемотехникой, то он полагается на неё и может блуждать в потёмках очень долго, пока не поймёт важность обладания такими знаниями. На ПК периферия на этапе загрузки проходит все тесты железа и есть гарантия, что всё будет работать на уровне пользователя. На низком уровне такой гарантии нет, поэтому в обязанности эмбеддера входит знакомство с этими вопросами и поверхностным оно быть не может.

Короче говоря, практически любая подключаемая периферия требует знания схемотехники.

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

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

uni писал(а):Это очень просто измерить. Возьмите примерно 50 типовых datasheets, которые использует эмбеддер в своей практике. Прочитайте их и попробуйте выявить соотношение между количеством кода и количеством приведённых электрических схем. Думаю, что соотношение вполне отражает ситуацию.
Ну и какой серьезный код Вы рассчитываете найти в справочнике по микросхеме? Несколько трехстрочных огрызков, поясняющик, как работать с регистрами? А в стандарте языка C, которым тоже пользуется эмбеддер, нет вообще никаких схем, и какой отсюда вывод? Возьмите тогда уж вместо datasheet'а что-нибудь более-менее похожее на реальный проект, например, какой-нибудь не самый примитивный Application Note... ну хотя бы AVR460: Embedded Web Server.

И что мы там видим по части "схемотехники"? Микроконтроллер, микросхема интерфейса Ethernet (не лучшая, на более современных аналогичные схемы делаются еще проще), дополнительное ОЗУ (встроенного для такой задачи явно не хватит), еще немного мелочевки... Причем вариантов соединения не так много, схема весьма тривиальна и разбирается за считанные минуты.

А теперь попробуйте разобраться с "начинкой", т. е. кодом, реализующим стек TCP/IP и саму логику Web-сервера. Если Вы реально сможете досконально разобраться в этом коде за четверть времени, которое мне потребуется, чтобы понять такую схему (именно такая пропорция вытекает из соотношения "80% аппаратура / 20% код, не так ли?), я готов пасть перед Вами ниц и молиться остаток жизни, честное слово.
uni писал(а):Что касается флешки, то прежде чем писать тесты, нужно сначала её правильно подключить. Эмбеддер тем и отличается, что понимает КАК это делается и почему. Поэтому успех работы с флешкой зависит от того правильно ли её подключение разведено на плате, иначе можно всякими тестами поймать виртуальные ошибки.
Вы не поняли главную идею (явно моя вина, не разъяснил детально; попробую исправиться).

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

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

Например, флешка перестала отвечать на обращения к ней. Отработает ли устройство тайм-аут или повиснет в вечном ожидании ответа? Или флешка отвечает, но какая-то ячейка повреждена, и считываются не те данные, которые были ранее записаны. Как поведет себя устройство - отработает сбой корректно или сойдет с ума, выполняя непредсказуемые действия?

Подобных вопросов возникает уйма, и протестировать такие ситуации в"в железе" неимоверно трудно. Например, где Вы возьмете флешку, которая "зависает" на определенной операции? Или с "дыркой" именно в интересующей Вас в данный момент области? Можно, конечно, сделать аппаратный эмулятор дефектной флешки, который будет моделировать все подобные сбои по заказу, но во многих ли коллективах разработчиков он действительно имеется? Отсюда печальный вывод: весь код, обрабатывающий подобного рода ошибки, не тестируется вовсе с вероятностью, близкой к 100%. Значит, от него в принципе можно ждать чего угодно.

Я привел первый попавшийся пример, очень примитивный. В реальной жизни встречаются куда более коварные сбои, и непроверенный софт рано или поздно даст о себе знать. Недавно мне попалась на эту тему любопытная книга: Lisa Simone. If I Only Changed the Software, Why is the Phone on Fire?: Embedded Debugging Methods Revealed. Technical Mysteries for Engineers. Но тема уже выходит за рамки "программистов", не знающих азов, и "эмбеддеров", прогулявших в школе урок, посвященный закону Ома. Обсуждать маргинальные случаи просто неинтересно, давайте перейдем хотя бы на уровень крепких середнячков.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Аватара пользователя
uni
Встал на лапы
Сообщения: 137
Зарегистрирован: Пт дек 07, 2007 11:17:40
Откуда: г. Екатеринбург
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение uni »

Контроллер может обидеться, если вы его будете микросхемой называть :)
А в стандарте языка C, которым тоже пользуется эмбеддер, нет вообще никаких схем, и какой отсюда вывод?
Вывод очень простой - любой контроллер изучается с азов, т.е. с уровня ассемблера. На чём бы ни писал эмбеддер (ассемблер, Си, С++, бейсик, паскаль) в отладчике и в выходном листинге вы увидите оптимизированный ассемблерный код целевой системы. Стандартом Си наша жизнь не ограничена. Поэтому в документации к контроллеру пишут не проекты на контроллере, а типовые приёмы работы с внутренней периферией. Это кирпичики будущего здания ЛЮБОГО проекта. Если вы не читаете документации к железу, то никакое железо у вас никогда работать не будет. Вижу вы согласились косвенно, что в datasheets полно схем :) так ведь? Да, да, читать и понимать их надо уметь. И код в datashhets самый что-ни на есть серьёзный, ибо только в оригинальной документации написано как работать с конкретным экземпляром контроллера. Знание стандарта Си не поможет, если вы не понимаете логики работы его внутренностей. Когда вы пишите что-то на Си, то неявно подразумевается, что вы уже освоили архитектуру, ибо она порою очень сильно отличается от больших ПК.
Несколько трехстрочных огрызков, поясняющик, как работать с регистрами?
Ещё раз поясняю. Основа любого проекта - это знание datasheet'а к основной его части - контроллера. Примеры в документации - это не "огрызки", это "кирпичики". Если вы будете относиться к ним как к огрызкам, то ваш проект будет похож потом на кучу мусора, если же вы будете относиться к ним как к кирпичикам, то ваш проект будет зданием с прочным фундаментом. Периферия современных МК достаточно сложная и не надо упрощать её до работы с регистрами. Вас кто-нить не дай Бог послушает, а потом будет удивляться, что регистры эти живут какой-то своей жизнью, по какой-то своей внутренней логике, зависящей от конкретного модуля внутри МК. Банальный пример - дребезг контакта, если вы не понимаете что это такое, то знание регистров вам не поможет :) Это схемотехника, которая встречается в каждом втором проекте.

У эмбеддера ошибки железа и программные ошибки - это одного уровня ошибки, т.к. он проектирует комплексно, т.е. и архитектуру проекта и управляющую программу. По этой причине, чего вы явно не понимаете, нельзя взять и их и разделить. При проектировании архитектуры могут комбинироваться различные периферийные микросхемы и одним ethernet'ом ничто не ограничивается, это вообще частный случай. Не бывает абсолютно правильно собранных устройств - это сферический конь в вакууме. Бывает партия и процент брака, а до этого бывают прототипы. Так вот на стадии прототипирования ловятся как раз и программные ошибки, и ошибки проектирования самого железа. Отладочная плата может помочь как тестовое железо, но когда проектируешь устройство сам, то там может быть всё, что угодно и не факт, что программа, работающая на отладочной плате, заработает на прототипе устройства.

Если кто-то боится схемотехники, то он просто программист и не более того. Эмбеддер же должен одинаково хорошо себя чувствовать в обеих этих сферах, а ещё во многих других, к примеру, разбираться в технологии производства ПП, чтобы уметь выбирать места, где эти самые платы производить. Также эмбеддер должен разбираться в принципе работы периферийных устройств, если для вас датчик температуры - это удалённый регистр, то для эмбеддера такой датчик - это datasheet с всеми его электрическими и эксплуатационными параметрами, включая корпус изделия. Чувствуете разницу?
Например, флешка перестала отвечать на обращения к ней. Отработает ли устройство тайм-аут или повиснет в вечном ожидании ответа? Или флешка отвечает, но какая-то ячейка повреждена, и считываются не те данные, которые были ранее записаны. Как поведет себя устройство - отработает сбой корректно или сойдет с ума, выполняя непредсказуемые действия?

Подобных вопросов возникает уйма, и протестировать такие ситуации в"в железе" неимоверно трудно. Например, где Вы возьмете флешку, которая "зависает" на определенной операции? Или с "дыркой" именно в интересующей Вас в данный момент области? Можно, конечно, сделать аппаратный эмулятор дефектной флешки, который будет моделировать все подобные сбои по заказу, но во многих ли коллективах разработчиков он действительно имеется? Отсюда печальный вывод: весь код, обрабатывающий подобного рода ошибки, не тестируется вовсе с вероятностью, близкой к 100%. Значит, от него в принципе можно ждать чего угодно.
Зачем приумножать сущности? Могу доложить, что длительные операции могут сбрасываться по таймеру (я изучал этот вопрос при исследовании драйвера флешки), а остальные просто возвращают код ошибки. Что там тестировать? Ты либо получил результат, либо получил код ошибки. Часто встречающиеся ошибки закодированы, остальные могу быть закодированы по мере их появления. Результат предсказуем о обрабатывается. Какие проблемы?

Непонятно что ваш пример означает. Кто-то за заводе не протестировал флешку и нужно её протестировать самому, а также любую другу микросхему, с которой имеешь дело? Так? Во всех мыслимых комбинациях и рабочих режимах (в т.ч. температурных)? Может проще отказаться от серии, если несколько экземпляров работают не так как указано, а в остальном доверять указанным характеристикам? Когда я упоминал флешку, то имел в виду брак при сборке своего устройства и вообще все ошибки при проектировании своей платы, при этом полагается, что прочие элементы протестированы на заводах фирм изготовителей.
Такие примитивные вещи действительно ловятся на столе разработчика на раз. Речь о гораздо более тонких вещах.
Это не правда, ничто на раз не ловится, тем более такие штуки, которые можно разглядеть только под лупой. Если ты работаешь с чужим софтом с каким-то новым модулем, то ты не сможешь сразу сказать в чем проблема, пока не изучишь этот самый софт. Это вполне обычная ситуация, когда ты используешь сторонние наработки. Когда у меня был непропай и флешка не заработала на известном драйвере, то мне пришлось под отладчиком забираться в дебри кода, чтобы найти место, где происходит сбой. Потом нужно покумекать над вариантами причины, при этом обязательно смотришь ещё раз на схему. Когда я перебрал код в отладчике и проверил схему, то начал смотреть на сигналы. Под отладчиком я привожу контроллер в нужное место, останавливаю и смотрю уровни. Хорошо, что у меня были непропаяны только контакты, отвечающие за состояния держателя карточки: CD и WP, другие случаи могут потребовать куда более сложного случая моделирования неисправности. Дело оказалось не в карточке, в её держателе.

П.С. Вот ещё пример книжки, где можно посмотреть разницу между простым программистом и эмбеддером: http://avrproject.ru/MicrocontrollersAn ... Design.pdf [pdf, ~26 МБайт, ~1000 стр]
Россия навсегда!
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение urry »

если программа, отданная в эксплуатацию, вешает системное сообщение об ошибке - выговор. Если при этом разрушение или пропажа данных - сразу сам иди за трудовой. Не хотят на таких условиях работать
Для этого есть отдел качества и тестировщики. Они умудряются нажать кнопки в приложении в такой последовательности, которая тебе и в голову не придет. Интересная ситуация - в этом случае возникает соблазн перехватить все ексепшены и погасить их внутри. Как бы наверх ничего показываться не будет, но хорошо ли это ? Не думаю.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4736
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: CodeVisionAVR vs AVR Studio

Сообщение vem566 »

urry писал(а):перехватить все ексепшены и погасить их внутри.
А результат работы программы не интересен? Или предполагается, что если в программе глюк, то работает все равно верно?
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: CodeVisionAVR vs AVR Studio

Сообщение urry »

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

Re: CodeVisionAVR vs AVR Studio

Сообщение Goldsmith »

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

Если уж использовать аналогию со строительством здания, то в даташитах скорее содержатся инструкции, как правильно замесить цемент или развести обойный клей, т.е. по-своему тоже важные, но второстепенные детали, отнюдь не определяющие архитектуру здания в целом. В правильном проекте без громадных усилий можно заменить какую-нибудь Atmega на PIC, STM8 или любой другой микроконтроллер общего назначения аналогичного класса; даташит (вместе с огрызками кода) будет совершенно другим, а архитектура системы в целом существенно не изменится.
uni писал(а):Банальный пример - дребезг контакта, если вы не понимаете что это такое, то знание регистров вам не поможет :) Это схемотехника, которая встречается в каждом втором проекте.
Давайте не будем называть высоким штилем ("схемотехника") прописные истины. Если то, о чем мы говорим, -"схемотехника", то задача "у Пети было два яблока, у Маши - на три яблока больше..." - это высшая математика. Непонимание дребезга контакта - это уже ниже самого нижнего уровня профпригодности инженера. Такие страшилки лучше оставить для первоклассника, впервые пришедшего в сельский клуб юных техников. Мы ведь именно об инженерии говорим, если я не ошибаюсь?
uni писал(а):По этой причине, чего вы явно не понимаете, нельзя взять и их и разделить.
...
если для вас датчик температуры - это удалённый регистр, то для эмбеддера такой датчик - это datasheet с всеми его электрическими и эксплуатационными параметрами, включая корпус изделия. Чувствуете разницу?
Вы действительно твердо уверены, что явно понимаете, чего я явно не понимаю?

На всякий случай, чтобы не было дальнейших подобных недоразумений, немного проясню ситуацию (исключительно для информации, убедительно прошу не воспринимать как приглашение к фаллометрии). Я попал в мир электроники через аналоговую схемотехнику (проектировал прецизионные измерительные приборы, которых нет в спектре серийной продукции) для экспериментаторов в разных областях - астрономов, атомщиков, химиков, специалистов по физике твердого тела... Когда стали доступны аналоги сначала 8080, а немного погодя 8048 и 8051, они поселились в наших приборах. Довелось также поработать в конторе, которая производила (буквально штучно) заказные микросхемы на арсениде галлия и где частоты ниже 10 гигагерц в шутку называли "постоянным током". Посчастливилось и излазить с паяльником и логическим анализатором "потроха" легендарного некогда VAX-11 (тогдашнего фаворита Пентагона), после которого огрызки схем из даташита по какой-нибудь Atmega не вызывают священного трепета.

Повторяю, это никоим образом не самореклама; поясняю лишь, что многочисленные упомянутые "проблемы" (вроде дребезга контактов или подтягивающих резисторов) я не воспринимаю вовсе не потому, что являюсь "абстрактным программистом в вакууме" и не имею понятия об их существовании; я просто не считаю их реальными проблемами; это лишь обычная каждодневная рутина разработчика, и заострять на них внимание не вижу смысла. Также в курсе, что у термодатчика есть корпус. Ну и рассказ про его "электрические и эксплуатационные параметры" - лишь двойная трата времени: Вам - написать, мне - прочитать, поскольку мы оба в курсе (честное-пречестное слово). Реальные, действительно интересные проблемы находятся несколькими этажами выше.
uni писал(а):Непонятно что ваш пример означает. Кто-то за заводе не протестировал флешку и нужно её протестировать самому, а также любую другу микросхему, с которой имеешь дело? Так?
Хорошо, давайте сделаем еще одну попытку немного "понизить градус". Видимо, рассказчик из меня никакой, если такие элементарные вещи не могу четко сформулировать.

Нет. Не так. Совершенно не нужно тестировать любую микросхему. Речь идет совершенно о другом.

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

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

Если я и в этот раз не смог внятно объяснить, лучше на этом завязывать и не тратить на эту писанину свое время, а также не воровать Ваше на ее чтение.
uni писал(а):П.С. Вот ещё пример книжки, где можно посмотреть разницу между простым программистом и эмбеддером: http://avrproject.ru/MicrocontrollersAn ... Design.pdf [pdf, ~26 МБайт, ~1000 стр]
Увы, не открывается... Возможно, временные трудности. Не подскажете автора и точное название? Может, у меня уже есть такая, я их давно собираю.

Хотя в общем-то я немного в курсе, кто такие эмбеддеры. Общаюсь (к сожалению, пока только заочно, через письма и форумы) с Jack Ganssle, James Grenning, ребятами из Atomic Objects (преимущественно Mark VanderVoord), ну и за прессой слежу, само собой. Полагаю, это не самые худшие представители эмбеддинга, по ним можно представить общую картину.

P.S. Вообще ко всему вышесказанному прямо напрашивается эпиграф из классики:
В каюте первого класса Остап, лежа на кожаном диване и задумчво глядя на пробочный пояс, обтянутый зеленой парусиной, допрашивал Ипполита Матвеевича:
-- Вы умеете рисовать? Очень жалко. Я, к сожалению, тоже не умею.
Он подумал и продолжал:
-- А буквы вы умеете рисовать? Тоже не умеете? Совсем нехорошо! Ведь мы-то попали сюда как художники. Ну, дня два можно будет мотать, а потом выкинут.
Давайте все же говорить о художниках, которые умеют рисовать. Хотя бы буквы. А то мы как-то все больше о всякой мелочи для дошколят - дребезг, резисторы подтяжки, корпуса... Максимум два дня помотаем, но потом ведь как пить дать выкинут.

P.P.S. Ох и дофигища получилось... Но короче уже пробовал - нет ясности. Сделаю последнюю попытку. Заранее прошу прощения у всех утомленных чтением.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Ответить

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