Когда я учился в 57 школе, одним из ярких и незабываемых событий был сайт bormidava.net — «неофициальный» сайт школы. Бормидав — это Борис Михайлович Давидович, много лет проработавший завучем. Еще в начале 2016 года он рассказывал всякие интересные вещи «МК», а сейчас на всех связанных с 57-й ресурсах трудно найти даже упоминание когда-то приводившего школьников в ужас Бормидава. О методах его работы все, в принципе, ясно из статьи по ссылке — так что неудивительно, почему так назвали «антисистемный» сайт.
Сайт просуществовал где-то год — с особо активной частью администрации побеседовал лично Бормидав (других санкций не применялось), после чего страничка стала несколько более плюшевой, затем благополучно похерилась регистрация домена, а окончательно добило всю эту движуху появление ЖЖ, где и продолжилось всякое неформатное общение. Закончился этот этап появлением Меморандума, но это совсем другая история.
Так вот, нашел сегодня потрясающую историю «как это делается в Америке«. Некая девочка в 2007 году создала в соцсети MySpace страничку, на которой карикатурным образом изобразила собственного завуча:
Fourteen-year-old Hillary chuckled to herself as she drew a caricature of her vice principal, replete with her signature red hair and green pantsuit. As the school administrator had a reputation as a strict disciplinarian, Hillary added an armband with a swastika and some knee-high black boots. Then, to get a laugh from her friends, she created a profile for the vice principal on the social networking site MySpace, uploaded her drawing, and added a few facetious features: In the “What do you collect?” category, she wrote “Johnny Depp’s tighty whities,” and under “Favorite people,” she listed “Bob Barker and Satan.” She also included a disclaimer, proclaiming the page a joke.
Так как в Соединенных Штатах не изучают творческое наследие Макаренко, единственным педагогическим приемом, доступным завучу, является заявление в суд о харассменте. Завучиха так и поступила — и вместо того, чтобы отправить заявление по территориальной принадлежности (в мусорную корзину), суд приговорил девочку к 90-дневному заключению в «camp for delinquent girls».
Что особенно забавно — в Пенсильвании подобные дела рассматриваются в зверски упрощенном порядке, а основанием для отправки в этот самый «лагерь для малолетних преступников» может служить что угодно — в качестве «status offence» рассматриваются, например, «деяния, ненаказуемые для взрослых, но неприемлемые для ребёнка и подростка» (типа школьных прогулов, ухода из дома или употребления алкоголя). В общем, весело у них там.
Попросили пояснить, почему советский учебник Кушниренко, Лебедева и Свореня был «невообразимо крут«. Вот один маленький примерчик. В декларируемое на уровне всяких там образовательных стандартов содержание курса «информатики и информационно-коммуникационных технологий» входит вот такой пункт:
Компьютер как универсальное устройство обработки информации. Основные компоненты компьютера и их функции. Программный принцип работы компьютера. Командное взаимодействие пользователя с компьютером, графический интерфейс пользователя. Программное обеспечение, его структура. Программное обеспечение общего назначения. Представление о программировании.
Попробуем, руководствуясь современными, рекомендованными аж Министерством образования, учебниками, понять — что же такое «компьютер». Мне удалось найти вот такие, с позволения сказать, «определения»:
(перед этим присутствует еще фраза «Компьютер — универсальная машина для работы с информацией»)
Зачем-то вплели «работу человека с информацией». Компьютер в составе какой-нибудь АСУ из этого определения выпадает. «Модель человека, работающего с информацией», на мой взгляд — это вообще какой-то ужас.
Те же авторы цинично ссылаются на то, что читатель «уже знаком» с устройством компьютера «вообще» (видимо, из их учебника для средней школы) и переходят к частному случаю персонального компьютера. В конце главы, правда, упоминается, что существуют компьютеры «более высокого» уровня — «мощные микрокомпьютеры, серверы, многопроцессорные системы параллельной обработки данных».
А вот теперь — давайте сравним это с определением из советского еще учебника:
Кушниренко А. Г., Лебедев Г. В., Сворень Р. А. Основы информатики и вычислительной техники: Пробный учебник для средних учебных заведений.
Все! Дальше рассматриваются примеры — и кроме «очевидных» персоналок с монитором и клавиатурой в следующем же параграфе упоминаются «встроенные ЭВМ», и подробно разбирается, что микропроцессорная система зажигания в автомобиле — это тоже электронно-вычислительная машина, только со специфическими устройствами ввода и вывода.
Пример, конечно, почти идиотский — но очень важный в том смысле, что «компьютер» — это не «ящик, к которому подключены монитор и клавиатура». И что еще важнее — учебник писался в конце 80-х. Не сказать, что МПСЗ была каким-то невероятным «хайтеком» (даже на ВАЗ-2108 их ставили с 1985 года), но в целом «бытовые» встраиваемые компьютеры тогда были редкостью (в том же учебнике Кушниренко число «встраиваемых, игровых, домашних компьютеров» в мире оценивалось в «десятки миллионов»). Сегодня же, по некоторым подсчетам, на одного жителя достаточно развитой страны приходится примерно 50 микропроцессоров — читай, «компьютеров», в основном — внутри всякой бытовой техники. Разница — на три порядка! Но почему-то ни один из «современных» учебников этого не замечает, фактически, обманывая учащихся. Я, конечно, не призываю рассказывать пятиклассникам об устройстве МПСЗ «восьмерки» — упаси Господи! — но такие «определения» сродни попыткам рассказать в младших классах о том, что Земля плоская и стоит на трех китах и черепахе.
Приехала на днях демоплата от Texas Instruments. С микроконтроллером СС3200 я балуюсь достаточно давно, и узнав о появлении его новой версии CC3220 — практически при первой же возможности решил заказать отладочный набор. Но в апреле-мае это у меня не вышло — TI отказывался слать набор из своего магазина в Россию, ссылаясь на проблемы с таможенными органами, а в Чип-и-Дипе и Терраэлектронике эта же платка стоила неприлично дорого. Настолько неприлично, что я даже стал рассматривать варианты заказа в каком-нибудь Farnell или Mouser — по срокам то же, а по деньгам выходило дешевле. Останавливало одно — даже на коробке написаны слова WiFi и 256-bit encryption, на которые, по слухам, любят возбуждаться таможенники.
Но вот буквально на прошлой неделе я просматривал нотификации ФСБ и обнаружил многообещающий документ. Теперь можно было не пугаться надписей на коробке — так как согласно этому документу, этот отладочный набор средством шифрования не является. В общем, от «таможенных» проблем я был избавлен и со спокойной совестью заказал игрушку непосредственно у TI.
Кстати, обратите внимание на интернет-магазин Texas Instruments. Понятно, что заказывать оттуда отдельные детали — не совсем правильный путь, велик шанс, что посылку признают «коммерческой партией», а вот отладочные наборы — почему бы и нет? Тот же CC3220SF-LAUNCHXL стоит у TI 49,99$ + 6,99$ доставка (а при заказе от 150$ — доставка бесплатна) — итого что-то около 3300 рублей. Для сравнения — в Терраэлектронике этот же набор предлагается за 5684 рубля со сроком поставки три недели, в Чип-и-Дипе — был примерно за 6000 с аналогичным сроком поставки (по-моему, раздел «Позиции на заказ» у них повторяет каталог Farnell). При этом TI store доставляет экспресс-почтой FedEx, у меня от момента заказа до вручения посылки прошла всего лишь неделя (пять рабочих дней — по идее, заказав в понедельник, теоретически можно получить свой заказ уже в пятницу).
Комплект поставки — сама плата в антистатическом пакетике, шнурочек с MicroUSB и пара бумажек с адресами сайтов TI и Terms and Conditions. В общем, ничего особенного. Что же мы получаем за 3300 рублей? На демоплате имеется:
— микроконтроллер CC3200SF со всей необходимой «обвязкой»;
— подключенные по I2C датчик температуры и акселерометр;
— повторитель на ОУ для аналоговых входов;
— две кнопки, три светодиода;
— «гребенки», соединенные со свободными пинами МК;
— отладчик типа XDS110.
Разрабатывая демо-платы линейки LaunchPad, в TI явно посматривали в сторону ардуины. Во всяком случае, идея, что надо сделать универсальный разъем для дочерних плат с любой периферией (у TI они называются BoosterPack) — явно оттуда. В фирменном интернет-магазине встречаются такие платы со слотом для SD-карты, например, или с маленьким дисплейчиком, кнопками и джойстиком. Не знаю, кем надо быть, чтобы покупать BoosterPack со слотом для SD-карты, а затем героически дорабатывать его напильником, когда примерно то же самое можно сделать, имея в хозяйстве адаптер для MicroSD и разъем типа BLD-20 — но давайте не будем смеяться.
Главное здесь, конечно — это микроконтролер CC3220SF. Заявленные характеристики звучат весьма многообещающе:
— ядро Cortex-M4 с тактовой частотой 80 МГц;
— 256 кБ SRAM (в версиях без встроенной флеш-памяти пользователю доступно около 240 Кб);
— 1 МБ флеш-памяти процессора (в версии SF);
— 2xUART;
— SPI;
— I2C;
— SD-host;
— 4 таймера с ШИМ;
— watchdog;
— 4 канала АЦП с разрядностью 12 бит;
— McASP;
— интерфейс камеры (parallel camera interface module);
— до 27 линий ввода-вывода.
Короче говоря, засунули буквально все, что можно — хотя нахрена здесь, скажем, интерфейс камеры — я понять затрудняюсь. Возможно, исключительно для того, чтобы была возможность соорудить хреновенькую веб-камеру в демонстрашках, больше ничего осмысленного сделать все равно не получится.
Естественно, нельзя забывать и об основной фишке серии CC32xx — встроенном отдельном процессорном ядре, отвечающем за работу с WiFi. Это вам не ESP8266 с китайской прошивкой, управляемой AT-командами, а полноценный сетевой процессор (еще одно ядро ARM Cortex-M, судя по тому, что встречаетсчя в других микроконтролерах этой серии — M0, под управлением специальной прошивки в ПЗУ). Он отвечает за подключение к WiFi, сетевые соединения (интерфейс в стиле BSD socket — так что никаких особых сложностей в программировании не возникает), а для полного счастья в нем реализованы еще и несколько сетевых приложений — HTTP-сервер, DHCP-сервер, ping и DNS-клиент. В новом семействе увеличено количество ресурсов, доступных сетевому процессору — теперь в режиме точки доступа к устройству может быть подключен не 1, а 4 клиента, а количество одновременно доступных сокетов увеличилось с 8 до 16.
Впрочем, все это можно почерпнуть и из даташита, отличия от предыдущей серии носят далеко не революционный характер. Более того, стоят они недешево — вот табличка с розничными и оптовыми ценами на микроконтролеры и модули этой серии:
Описание
Цена розничная в TI Store, $
Цена оптовая (1 ku) в TI Store, $
Цена в Терраэлектронике, р
CC3200
Микроконтролер
9,07
4,90
923-727
CC3200MOD
Модуль
13,50
7,99
1491-1258
CC3220R
Микроконтролер
11,08
5,14
CC3220S
Микроконтролер с защитой данных
12,41
5,76
1021-736
CC3220SF
Микроконтролер с защитой данных и 1 Мб флеш-памяти
12,66
6,79
1204-868
CC3220MODS
Модуль, МК с защитой данных
17,52
9,39
1498-1262
CC3220MODSF
Модуль, МК с защитой данных и 1 Мб флеш-памяти
19,76
10,59
CC3220MODAS
Модуль, МК с защитой данных, встроенная антенна
19,57
10,49
CC3220MODASF
Модуль, МК с защитой данных и 1 Мб флеш-памяти, встроенная антенна
21,81
11,69
Сравнивать эти модули с какими-нибудь ESP стоимостью три копейки за пучок, конечно, в целом бессмысленно — но не стоит забывать, что тут у нас имеется вполне неплохой микропроцессор на ядре Cortex-M4 c офигенным объемом памяти, сравнимый с теми же STM32 F1 и F3.
Но… В случае с CC3200 поджидает довольно неприятная засада — ядро Cortex-M4 не очень эффективно работает, когда исполняемый код находится в SRAM, каждая команда выполняется не за один, а за два такта. Скажу сразу, что я возлагал довольно большие надежды на CC3220SF, увидев в даташите слова про «1-Mb XIP Flash» — так что первым делом, скачав SDK, я решил… нет, не поморгать светодиодиком, а прогнать парочку бенчмарков.
Для встраиваемых микропроцессоров принято использовать писькомерки Dhrystone и CoreMark. Первая — довольно древняя, но по ее поводу имеется Application Note от ARM, регламентирующий использование оптимизаций компилятора (если коротко — запрещено все). Второй бенчмарк местами превращается в соревнование «кто круче расставит флаги оптимизаций», и его результаты крайне желательно приводить вместе с параметрами компилятора. Итак, первая табличка — Dhrystone и CoreMark на СС3200 и CC3220SF (код выполняется из флеш-памяти), компилятор IAR 8.10.1, параметры оптимизации для CoreMark приведены в заголовке.
Dhrystone, DMIPS
CoreMark, -Ol
CoreMark, -Om
CoreMark, -Ohs
CC3200
46,8
71,05
87,95
135,69
CC3220SF, код в флеш-памяти
27,4
47,14
57,50
86,88
Ничего себе! — сказал я и офигел от результатов. Спрашивается, за что платили? Зачем мне огромная, по меркам младших Cortex, память, когда производительность процессора падает в три раза относительно «номинальной»? Cortex-M4 теоретически должен выдавать около 1,25 DMIPS/MHz и около 3 CoreMark/MHz (в зависимости от компилятора). Результаты CC3200 предсказуемые, но еще более-менее терпимые. Что же касается CC3220SF — то освободив SRAM для данных, мы получаем проигрыш в производительности в полтора раза. Зачем такая радость?
Я прогнал еще один вариант бенчмарка — на этот раз без использования флешки. Результат оказался аналогичен CC3200 — вот еще одна строчка в таблицу выше:
Dhrystone, DMIPS
CoreMark, -Ol
CoreMark, -Om
CoreMark, -Ohs
CC3220SF, код в SRAM
46,5
71,02
87,76
135,50
В такой конфигурации, разумеется, CC3220SF теряет все преимущества перед своими «младшими» версиями без флеш-памяти. А теперь давайте вернемся к табличке с ценами и зададим себе вопрос — «А если нет разницы, зачем платить больше»? Мегабайт медленной флеш-памяти, в целом не особо нужной, стоит 1,5$.
Короче говоря, я ожидал большего.
UPD На данный момент придерживаюсь мнения, что флеш-память в CC3220SF неправильно сконфигурирована — так как в микроконтролерах серии MSP432 она устроена похожим образом, и буферизацию чтения необходимо включать «вручную».