0
Оживлю…
Прошло 4 с лишним года после написания топика, но Ардуина (не смотря на маты и плевки в ее сторону со стороны MCU-менов) не только не померла, но живее всех живых, стала мегапопулярна и де-факто стандартом контроллера_для_управления_чем-то у «хуельцов» и уже потихонечку лезет с заднего, навозно-сарайного двора в промавтоматику.
-2
Просто вся «пена» более-менее успокоилась после ренессанса электроники в виде нео-електроники среди людишек на ex-совковом пространстве, который произошел в 2008-2011-м годах. Здесь совпали одновременно несколько факторов:

— Кризис конца 2008-го. Тогда IT сектор офисного планктона тоже довольно жестко накрыло, и многие эникейщики, сисодмины и говнокодеры стали задумываться: А что я еще знаю, чем увлекался в молодости, чему еще учили в институте, что еще могу?

— Появление и хорошее пропиаривание в СМИ такой незатейливой платки, как Arduino.

— Триумфальный взлет технологии ARM Cortex-M MCU, с одновременным ценовым демпингом и «раздачей слонов» (STM Discovery, TI Launchpad и т.д. и т.п.).

— Инторнет. Наличие уже достаточной массы инфы обо_всем_этом в нем (раньше-то по книжкам учились, а их еще купить или достать надо).

— Инетторговля. Освоение покупок на ebay, взлет Aliexpress просто с фантастической кучей фантастически дешевого електронного барахла.

— Доступность технологий. Опять же этот самый пресловутый ЛУТ (у скольки %-ов местных людей в 90-х или даже в начале 2000-х дома был лазерный принтер?), ну и фоторезист. Плюс китайские PCB-сервисы.

— Появление дешевого китайского проф. паяльного инструмента, ну т.е. не ЭПСН (в терминологии ex-совка), наплыв которого произошел после 2005-2006-го года, т.е. после взрыва продаж сотовых телефонов, соответственно стали появляться, как грибы, фирмешки/ремесленники по их пайке/ремонту.

— Появление дешевого проф. измерит инструмента (опять же благодарим китайцев) после 2008-2009-го: 50-100MHz 0.5/1GSpl DSO Rigol и т.п., копеечные логич. анализаторы Saleae/USBee, программаторы/отладчики для MCU и т.д. и т.п.

— Еще кое-какие факторы, мне уже надоело писать — сами допишите.
-2
Ну так-то довольно серьезная работа (очень мелочно-скурпулезно (в хорошем смысле слова) сделано), особенно удобно и полезно будет тем, кто делает проекты под ЕСКД.

А ваще-то, щас уже создание EDA софта (даже с нуля), особенно в части проектирования лейаута PCB, — это уже не супер-пупер задача, которую могут асилить только гиганты типа Mentor Graphics или Altium. Учитывая еще и то, что по сути щас надо почти весь имеющийся говнокод переписывать уже под web-приложение (js/пхп/java).
-1
Дык это же DOOMSDAY на тебя наехал там, а он сам из с Украины, так что мимо. Тем паче, +16 за весьма посредственную статью — радоваться надо!
-1
Да отцепитесь вы от меня, пристал к человеку!
Вот видите значок у меня на лацкане пинжака?

А вот мой членская книжка.

0
через полгода не придется куда-то портировать, сполна хлебнув последствия закладывания на implementation-specific
А я хитрожопый и ловко устроился в этой жизни, и мне портировать/совместимость_соблюдать надо только в одной экосистеме от M0 до M4F. До пенсии мне хватит ARM Cortex-M.

Кроме того, я и так стараюсь соблюдать треть правил MISRA, которые полезный боян. Ты меня уговорил — надо выписать их все в список и проверять, а на остальные просто забить.
-2
А что Вы орете, дорогой камрад GarryC? Вы думали, что я сдулся? Ан нет, я просто находился под гипнозом другого ресурса.

Вы же сами и раздули этот MISRA-срач, упомянув, что де либу STM32Cube_HAL (которую Вы, в отличии от меня, считаете абсолютным говнокодом) надо проверить на правила MISRA. Тем не менее, она уже MISRA-C 2004 compliant :) Специально нашел в HAL driver User Manual, оказывается и HAL, а я думал, что только CMSIS.

И потом, Вы кто такой? Вы Лайфловер, Л_И или сам ChaN, чтобы я к Вам прислушивался? Где Вы применяете MISRA-C, покажите нам этот код, где Ваши статьи на тему применения правил MISRA-C в кодировании для MCU, если Вы такой фанат этого стандарта.
-1
Проблемы кросскомпиляторной совместимости (сюда треть мисры смело попадает)
Вот об этом я и говорил, что не хочу по ихней прихоти уходить с C99. Мне это не надо — мое «уютненькое» — это ARM Cortex-M + C99, который в GCC/IAR/KEIL уже давно стандарт по дефолту, и больше мне ничего не надо. Хотя, вроде бы в MISRA 2012 они может и включили поддержку C99, но это надо внимательно изучать MISRA 2012. Вот ты и попробуй найти в сети этот стандарт (он ваще-то платный) и внимательно прочитай, а потом расскажи нам. А мне лень — мне и MISRA 98/2004 хватило.

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

С рекурсией соглашусь, тем более рекурсивный алгоритм хоть и намного короче, но бывает труднее в понимании со стороны и в отладке. Хотя и рекурсивный алгоритм достаточно просто можно защитить от переполнения стека досрочным завершением. Про Фибоначчи — это плохой пример, здесь рекурсия чисто в учебных целях и не нужна, но вот если надо построить двоичное дерево разбора чего-либо — рекурсия хороша, а сами элементы дерева и строится в стеке по ходу алгоритма (рекурсивный спуск). Просто надо резервировать необходимый стек и считать итерации, чтобы они не превысили допустимый максимум.
-1
Я же уже писал, что третья часть из этих рекомендаций и так выполняются кодерами, т.к. давно известны и описаны в разной лит-ре.

Но почему, вдруг, я должен отказаться от C99 и писать на С90/ANSI C89, отказаться от прерываний в коде (каково? занятно прочитать такое на MCU ресурсе), даже комментарий в виде // мне запрещён.

Или вот, например, битовые поля запрещены, а челу надо писать код под TI DSP MCU, а там спецом, в хедерах, описывающих регистровый name_space, они изначально использованы самим TI. А рекурсия? И если надо обрабатывать древовидные данные, или нужен некий компилятор (лингв.разбор).

И т.д. и т.п. Здеся разговор очень долгий может быть, если конкретно разбираться — на целую книжку потянет.
-1
Ну наконец-то, срач дискуссия все же разрастается.

Дело в том, что тупое следование ВСЕМ рекомендациям MISRA, во-первых, просто не возможно. о чем и сообщается в доках на MISRA-C Compliant ПО, например, вот MISRA-C violations in CMSIS library.

Во-вторых, это совершенно не спасает от ошибок или говнокода, о чем и рассказывается в этой статье, т.к. либа STM32Cube HAL тоже MISRA-C Compliant.
0
Причем здесь Линус.

Ядро Linux значит написано с учетом всех обязательных (99 для MISRA C 1998, 121 для MISRA C 2004) её правил? Как насчет другого ПО, в частности для MCU?

Треть этих правил — боян, они были известны и применялись без всякого упоминания MISRA.

Еще треть — просто спорны.

Ну и последняя треть по тем или иным причинам просто не будут выполняться многими кодерами, т.к. являются чистым и тупым бюрократизмом и ущемлением свободы воли и выбора ПРОГРАММИСТА и заказчика.

Намного проще тогда уже — просто исключить язык Си, как потенциально очень опасный, из многих сфер человеческой деятельности. MISRA — это чистая бюрократия, ее надо почитывать, но тупо следовать всем ее указаниям — не нужно, конечно, если это не прямо указано в ТЗ (любой каприз за ваши деньги).
-1
Хрен там. С точностью до наоборот

Обычно хватает просто прогнать и посмотреть в отладчике.

А в данном конкретном случае челу просто необходим был трассировщик J-Trace за 1-2 килобакса, хороший DSO (цифр.осцилл) или 100/200 МГц логич.анализатор. Возможно, что тогда можно было бы все сделать быстрее и даже без долгого медитирования над реф.мануалом.

Я даже год назад так вот решил проблему в 1С 8.3 (которую я нихуя не знаю — там только описание — 4 толстенных талмуда) одному «уважаемому и солидному челу». Нашел модуль/документ в конфигурации, с которым была проблема, и прогнал в отладчике — там просто оказалось, что не заполнена какая-то константа или поле в одном из справочников. Заполнили, и ошибка перестала вылетать и все стало считаться очень чудесно. Все сказали, что я «голова» и «гений», даже «заработал десятку» на один раз поесть в ресторане. А что там делается в этих портянках (а они там сотни и тысячи строк кода) я так и не понял и даже не смотрел, что смотреть, если ничего не понимаешь. Ну так-то все понятно: условия, циклы, свойства, методы, но что конкретно делают и для чего эти все объекты из объектной модели 1С — полный ноль понимания, только очень смутно, чисто по названию.
-1
MISRA — это говно. Это мое ИМХО. Ну или чисто для автомобильных кодеров, т.к. это ихний стандарт и это ИХ проблема и ИХ попоболь. Что, почему-то, совершенно не помешало Тойоте говнозакодировать монолитный спагетти говнокод c гоуту и с магическими цифрами.

Писать в 21 веке на ANSI Си 89-го года, да еще кастрированном и выхолощенном MISRA по самое не могу на 70% его возможностей (это нельзя, это тоже нельзя, это опасно). Пусть эти мудаки идут нахуй, или создают себе для автопромышленности язык типа Паскаля или еще чего изначально ограниченного и защищенного. А лучше всего — пусть юзают готовые системы на ПЛК — там это уже все продумано — все что можно уже защищено и анально огорожено.

Нехуй им лезть в Си, да и ваще в MCU. Хорошо, что я не работаю на автопром (как и Линус и многие и многие другие) и могу спокойно обходиться без ихних иезуитских инквизиторских нравоучений. Лучше уже тогда ваще не изучать Си и не писать на нем, а сразу же уходить в программирование ПЛК или в говнокодирование на Java, ПХП или 1С.
-1
Честно говоря, мне за индусов было обидно: у нас же как — индусы-говнокодеры, индусский код и т.п., ясно же, что у нас каждый «гигант мысли», но почему мы тогда в дерьме, а эти индусы(в том числе) двигают забугорный хайтек?

В коде Куба я, кстати, не нашел никакого лютого и конкретного именно говнокода. Просто многие считают, что такие прослойки сами по себе являются говнокодом, вне зависимости от качества его закодирования. А к Кубу я, на самом деле, отношусь чисто коммерчески.

А там просто ошибка(типа опечатки) — видимо красноглазят очень много — ну графики там, сроки, дедлайны… Чужие ошибки искать намного легче, чем выдавать на гора объемы по жесткому графику.
-1
Самое полезное (кому-то, видимо HAL'о-говноCube'рам) в этой статье — это коротенький рассказ про Ctrl+X и затем Ctrl+V (перенос одной строки кода ниже на 12 строк).

Wireshark, ну туды-сюды, тык-тык, кстати, и референс мануал был стимул прочитать наконец-то полностью и внимательно, короче: "джентельмен в поисках десятки". Хотя самого себя автор представил, как некоего Мистера Вульфа в сфере MCU-електроники: серьезный и богатый заказчик, прибыл для усиления команды говнокодеров(видимо «дебилов»), не говоря уже о говнокодерах индусах.

Но судя по откликам — глупая и недалекая публика ждала чего-то большего.
0
Кстати, а в чем прикол или фича этих Nucleo-144, кроме не малой цены? Порт Ethernet что-ли? Может поддержка Arduino/mbed?

Наблюдал такие за последние 2 года только у аспирантов и МНС-ов, прослышавших про IoT (т.е. у начинающих дебило-игрунов), и то купленные не за свои деньги.
0
А с самого сайта Infineon они в РФ отправляют?

Этих плат STM32 Nucleo-144 с LQFP144 чипами несколько:
NUCLEO-F207ZG,
NUCLEO-F303ZE,
NUCLEO-F429ZI,
NUCLEO-F446ZE,
NUCLEO-F746ZG
Это какие из них бюджетные, NUCLEO-F303ZE за 1870 рэ?
0
Это получается J-Link OB на чипе Infineon XMC4200. Есть виртуальный COM-порт (UART-to-USB мост), т.е. аналог J-Link-OB на STM32F072C8. J-Link-OB на STM32F103C8T6 не имеет виртуального COM-порта.

Хм, 670 рэ — но все-таки это не раздача слонов, почему не $5, если этот Infineon так уж хочет войти_в_народные_массы?

ПЛК'ист, дружище, а сколько стоит доставка в РФ?
0
И еще инсталлятор сканирует диск в поисках IDE (Keil/IAR e.t.c) и предлагает заменить эту пресловутую JLinkARM.dll в их папках на свою более новую, если в IDE'шной папке более старая.
0
Да, только с серийником осторожнее (если случайно вобьешь какой самый старый из массива в Dll'ке) — а то войдешь в бесконечный цикл :) Но у них там на сайте все эти версии инсталляторов «Software & documentation pack» аккуратненько лежат огромной стопкой начиная с самых допотопных версий.