Cortex-M4. Ну и как оно?

В прошедшую Пятницу Промэлектроника проводила семинар на тему ознакомления с Cortex-M4 на примере STM32F407, на базе которого построена плата STM32F4DISCOVERY

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

Первое, что я хотел бы отметить, это то, что я неправильно позиционировал Cortex-M4. По этой причине я его как бы вычеркнул из потенциальных камней, с которыми я собирался работать в ближайшее время. Для меня он был каким-то таким монстром — частота ядра 168 МГц, оперативной памяти — 192 кБ, флеш-памяти — аж 1 МБ. Счетчиков — немереное количество, арифметика с плавающей точкой, и т.д. Возможно, это произошло под воздействием шумной рекламы, которая сопровождала его появление на рынке. Не знаю… Ну, в общем, это был не «мой» камушек. Я с такими не работаю.

Но после того, как я с ним поигрался на семинаре, моё представление о нем резко изменилось. Я увидел, что этот проц практически такой же как и его младшие модели, я имею в виду Cortex-M3. Ничего в нем сверхъестественного нет. Хотя он и мощнее своих собратьев, но он такой же «управляемый». С ним так же можно легко совладать, и построить на нем какую-нибудь свою поделку.

По крайней мере, ничего специфического или тяжелого я в нем не обнаружил. Хотя, как я уже упоминал, я не копал его глубоко. Всё, что мы делали на семинаре — это правили специально «испорченные» проекты. Проводил семинар Денис Ягов, и он специально заменил названия некоторые переменных (периферии, ядра) именами типа «ХХХХХ», с которыми нужно было разобраться и написать правильно. Затем скомпилировать и залить в проц. Все работы выполнялись в среде IAR v.6.3.

Вообще, я считаю, чтобы «почувствовать» камушек нужно поиграться непосредственно с регистрами его периферии. Этот путь трудный и долгий, но он даст полное понимание того как работает движок. К сожалению, практические работы на семинар не предполагали, что мы будем открывать капот и изучать работу двигателя. Вместо этого нам показали, как у этого авто красиво горят ДХО и мягко открывается дверца багажника. Иными словами, под капотом, который называется Standard Peripheral Library (сокращённо — SPL), мы не заглядывали.

От этой библиотеки в восторге только манагеры, да молодые недо-инженеры. Знать ничего не надо и результат получаешь почти сразу! А низкая эффективность кода компенсируется мощностью процессора и большими объемами памяти. Сумма технологий позволяет вам не приходя в сознание «быстренько» (это любимое слово манагеров и руководителей) выйти на рынок с еще одной «моргалкой светодиодами».

А вот в корпусе старых разработчиков смятение. Шарахаются они от SPL. И в самом деле, что там под этим «Васиком» сгенерилось? Что оно там унутре себя делает?

Для обучения или для начального ознакомления SPL может быть это и хорошо, но применять ее в коммерческих продуктах…😦 не знаю… ну если только нужно «быстренько наговнокодить»…

Впрочем, на Visual Basic тоже ведь было создано немало продуктов, хотя и ругают его. Ругают, только прожженные профи. Но на рынке свою продукцию продают не только профи. Полно всяких студентов, дилетантов и прочих недо-инженеров. Потребитель-то ведь, не разбирается, на сколько качественно проработан и создан продукт.

Когда стоит задача «быстро нарубить бабала», а не задача «сделать шедевр», то да, SPL подойдет в самый рост. Потребитель не разбирается в том, из какого мяса был сделан фарш и на каком масле жарили котлету. Пахнет вкусно, во рту тоже — хорошо. И это всё, о чем он может судить. А если фарш сдобрить специями, да завернуть в красивую упаковку, да снабдить красивой легендой, типа это любимое блюдо Людовика-IV… ну вы поняли. Главное правильно впарить потребителю товар. Кстати, он как раз платит свои деньги за то, чтобы самому не разбираться в этих вопросах. Тот, кому не все равно, то сам для себя готовит. Разумеется, готовит по высшему классу. А на продажу, и так сойдет!

Ладно. Как бы там ни было, но камень интересный. Я, наверное, прикуплю себе парочку. Тем более, что стоит он не так уж и дорого — если верить той же Промэлектронике (а верить ей, сами знаете как!), то цена его не такая уж заоблачная. Например, за STM32F407VET6 Промэлектроника просит 263 рубля. Правда, у этого камня не 1МБ флеши, а только 512 кБ, и оперативы не 192 кБ, а 128. Но для знакомства с Cortex-M4, наверное, и этих объемов хватит?

Одна беда, из всего разнообразия Cortex-M4 в Промэлектронике имеется только единственный камень — STM32F407ZG в количестве зависших 120 штук.Интересно, почему народ не налетает?, не расхватывает.

А-а, да! У него проблемы с ногами! У него их аж 144! Чисто для ознакомления с ядром — столько ног нафиг не нужно! И для массовой лазерно-утюговой радиолюбительской технологи — тоже, проблемы — хрен разведешь, фиг сделаешь. Не-е, конечно, если на спор, или ради самореализации, или когда совсем уж припрет, люди делают. Но это бывает очень редко. Короче, не тот случай.

До кучи, камни лежат на складе. Сайт радостно сообщает, что если вы хотите приобрести по графе «Доступно в розницу», то для вас исключение — «нет в наличие». Зашибись! То есть один два камня купить в розницу не получится. Хотя… столько проблем за 410 рублей. Может ну его нафиг?

Но не все так мрачно! Есть один хитрый маневр. Можно прикупить не сам камень, а отладочную плату STM32F4DISCOVERY с STM32F407VGT6 на борту. Так даже выйдет несколько дешевле, нежели это все делать своими руками. Плата стоит 576 рублей. Накладно, конечно, но вполне терпимо.

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

И чего я его — этот Cortex-M4 — боялся? Камень, как камень… Мощный только. Вот и вся разница. Не-е, надо смелее хвататься за него и делать на нем свои «погремушки». Да.

Update 18.06.2012

Получив пару критических отзывов от представителя Промэлектроники Рустама, где он выражает явное недовольство тем, что я сказал, что в Проме нет никаких камней из семейства  STM32F4xx (видимо, для Рустама это принципиально, что в Проме все-таки есть одна позиция), я решил изменить текст поста.

14 responses to “Cortex-M4. Ну и как оно?

  1. Опять привираете, уважаемый.
    На складе Промэлектроники лежат STM32F407ZGT6 120 шт.
    В магазине «Радиодетали» на Колмогорова их действительно нет. Про разделение бизнеса писали же в конце прошлого года…

    • Простите! Из девяти позиций STM32F4xxx в магазине нет ни одной. А то, что есть на складе — всего одна, и она, мягко говоря, — не интересная. Так что все равно, что ничего нет.

      А если серьезно, то, Рустам, я видел, что на складе лежит мертвым грузом 120 кирпичей в 144-ноговом корпусе.

      К сожалению, они не очень подходят для ознакомительных целей, типа «поиграться», пощупать камушек. Если кто-то и купит их, то наверняка в какое-нибудь конкретное изделие. Но для пробы — нет!

      Для целей «попробовать» ног чрезвычайно много. У людей же проблемы с печатными платами сразу возникнут. Чтобы оценить камушек, ведь не нужно чрезмерно много портов. Да и цена, как мне кажется, тоже играет роль. 410 рублей — это все-таки несколько больше, чем 260. В совокупности параметров получается — не интересно. А значит, положить глаз не на что.

      Мои извинения!

  2. Ну так почему тогда не написали, что нужных нет, а написали «Одна беда, в Промэлектронике нет в наличие ни этого, ни каких-либо подобных» ? Смысл-то разный совсем…
    У менеджера, который с Вашей организаций работает, спросить не пробовали? На сайте компании так же есть форум специальный, где можно обсудить разные вопросы. И этот — в том числе.

    • От жешь засада какая!

      Рустам, я писал согласно своей оценке ситуации. STM32F407ZG не попадает в сферу моих интересов, а кроме него ничего другого из Cortex-M4 нет. Где выбор? Из чего выбирать? Поэтому я так и написал.

      «Единица — ноль, единица — вздор!»(с) В. Маяковский

  3. пользуясь премодерацией отмечу пару очепяток:
    «В_прочем (_здесь_слитно_), на Visual Basic тоже ведь было создано немало продуктов, хотя и ругают его. Ругаю_Т_, только прожженные профи»

    «К_стати (_тоже_слитно_), он как раз платит свои деньги за то,»

    «А на продажу, и_так (_а_в_этом_случае_раздельно_) сойдет!»

    «Я наверно_Е_ прикуплю » ну и «наверное» стоит выделить запятыми.

    » на базе этих плат в_А_рганить »

    ну а по существу.
    144ноги фоторезистом да на шаблоне из струйника — как два байта переслать. Хотя я свой первый арм (еще от атмела. эх, давно это было) вместе с клоном JLink, легко залутил. Фоторезистом сейчас вполне спокойно и 0,15/0,15 выходит.

    И про визуальный васик тоже несколько напрасно. Вопрос только в правильном применении инструмента. Хотя низкий порог вхождения конечно плодит массу неквалифицированных «поделянтов». Как пример васика можно привести WebResearch, как пример Delphi — Total commander. Вполне качественные изделия.
    «Красота в глазах смотрящего» (с)

    • 1. Уж не знаю кто Вы, товарищ «В», есть, но преогромнейшее Вам спасибо за то, что не поленились ткнуть меня носом в ошибки. Спасибо, что помогаете сделать мир лучше и чище! (У меня и в самом деле не лады с русским языком, а еще усталость, общая нехватка времени… Впрочем, жаловаться не буду. Все живем в таком ритме.)

      2. А я технологию фоторезиста так и не смог осилить. Несколько раз приступал, подыскивал времена засветки, по разному пылил фоторезист, подбирал пропорции «Крота»… В общем — искал. Но каждый раз мои технологические поиски грубо обрывались «внешним прерыванием» типа — «есть срочная работа, Бросай всё! Нужно быстренько сделать это». Или что-нибудь на производстве «рухнет», нужно разбираться. Или какая-нибудь идея в голову начальства стукнет. Короче, не получилось. Остановился на ЛУТе. Нормы проводников делаю 0.3-0.3 мм. Более мелкие о-о-очень тяжело получаются. Да и зрение уже не то! Высадил. А может уже года подходят. Получается, что мне проще заказать изготовление платы в «Резоните». Струйника нет… Да в общем-то последний раз делал плату недели три назад, а предпоследний — год или даже более того. Да, ладно!

      • 1. Ой, я надеялся на премодерацию, и что в люди оно не пойдет… Ну, да на здоровье.

        2. По резисту. Я подразумевал пленочный. С аэрозольным позитивом20 я тоже так толком и не подружился. Хотя до 0,3/0,3 техпроцесс допилил в свое время. Правда на эксперименты почти весь баллон убил и неделю чистого времени. Да и муторно оно — чисто равномерно распылить, подсушить, высушить. Долго и нудно.
        А плата с пленочным негативным выходит годная уже буквально через полчаса с травлением. Не преувеличение! Ну еще полтора часа на маску. И эти полтора часа плата просто загорает, и можно заняться своими делами. А на подходе еще и металлизация на коленке…
        По технологии как резиста, так и маски, отлично все расписано в сообществе на изиэлектрониксе камрадом evsi. С картинками, в стиле делай раз — делай два. В принципе, по его статьям для отработки процесса даже мозг включать не нужно. Пара часов на подгонку под себя, и все отработано. Струйник можно самый дешевый, все остальное или стоит копейки, или вообще просто в доме есть.

  4. ну и в догонку цитата с итхэппенса:
    «Смотрю я на эти битвы мегагерцев с ядрами и тихо офигеваю. Производители софта для смартфонов до сих пор добиваются плавности движения картинки.

    Как человек, программировавший на ZX Spectrum, я помню, что при 3,5 мегагерцах частоты (в тысячу раз медленнее современных процессоров!) в играх умудрялись делать плавный скроллинг. Ну, можно сделать скидку на С, на громоздкие библиотеки, на большое разрешение экрана. Но через какую жопу нужно писать софт, чтоб ему требовался на смартфоне четырёхъядерный процессор? Где хвалёное аппаратное ускорение?

    Ответ прост: чем быстрее железо, тем больше быдлокода пишут программисты. Нас жестоко обманули, господа.»

    • Да, почему «НАС жестоко обманули»? Нас уже не обманешь. Мы знаем, как оно должно быть правильно. А вот молодые…

      Основное требование нынешнего времени заключается не в том, чтобы сделать качественное устройство, а в том, как можно быстрее выйти на рынок со своим девайсом, и захватить тем самым как можно большую его часть. А качество — «потом допилим!» Если честно, то меня это принцип уже бесит! Столько недоведенного до ума г@вна на рынке по моему еще никогда не было. Но самое поганое то, что исправить эту ситуацию не возможно — лохи, обладающие деньгами, ориентируются не на качество изделий, а на их цвет, упаковку, и на то, что есть сегодня «круть крутяжная». Им пофиг, куда тратить бабло. Собственно, эта малограмотная масса потребителей и задает уровень качества товаров на рынке.

      • Да, согласен. Нас уже поздно. Как вспомнишь «однофреймовый скролл», подсчет тактов, синхронизацию… Эххх…

        С другой стороны, выход на рынок первым — вполне себе ощутимое конкурентное преимущество. Потому и выпускаются откровенно сырые поделия. А это самое «потом» как правило так и не наступает, к сожалению.
        Особенно показательна сейчас ситуация на рынке андроид-девайсов. Постоянно выпускаются все новые и новые модели, а даже на поддержку уже выпущенных силы производителями не тратятся. Меня, как потребителя, эта ситуация не может не расстраивать, конечно. Одна надежда остается на открытость исходников и возможность допиливания. Ну хоть что-то.

      • Да. Грустно все это.

  5. Бред сивой кобылы!!!!!

  6. ТС походу перепутал SPL с CMSIS. По сути CMSIS это набор дефайнов для облегчения работы с переферией. Такая штука есть для почти абсолютно всех МК. Ведь только в самом пьяном угаре программёр будет обращаться к регистрам по адресам.

    • Да, конечно же SPL!
      Спасибо за поправку!

      >> Ведь только в самом пьяном угаре программёр будет обращаться к регистрам по адресам.
      Спорный вопрос. Задачи, а следовательно уровни программирования бывают разные. Одни задачи требуют ассемблерного уровня программирования, а иные задачи решаются только на уровне ЯВУ (классы, потоки, динамическое распределение памяти, GC и т.д.).

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s