Search
Write a publication
Pull to refresh
2
0
Send message

Локальный запуск юнит-тестов в STM32CubeIDE под Windows

Reading time7 min
Views14K

Введение


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


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


Существует три способа запуска юнит-тестов для встраиваемых платформ:

Читать дальше →

Дозиметр для Серёжи. Часть I. Polimaster — Охотники за нуклидом

Reading time39 min
Views35K
В связи с участившимися вопросами от друзей и знакомых с ключевой фразой «какой дозиметр купить? а у тебя самого что?» решил я собрать воедино разбросанную в разных местах информацию и рассказать о своем приборном парке и всем, что с этим парком связано. Хронологию рассказа я решил выстроить от самых новых к самым старым дозиметрам. Я не физик и не метролог ионизирующих излучений, поэтому все что могу — просто описать свои приборы и рассказать по какой причине они у меня появились. Все это, традиционно, приправлено соусом из множества смежных областей и направлений.

Как сказал мне однажды, хабрачитатель в комментарии к моей первой статье — «пиши, когда душа требует». Душа потребовала. Сегодня под катом не только мой рассказ о своем повседневном портативном дозиметре, но и история жизни человека, благодаря которому этот дозиметр появился на свет. Про то, что будет, если туристы начнут собирать приборы...Внимание! long read :)


Читать дальше →

Превосходный набор вопросов и ответов о квантовом превосходстве

Reading time12 min
Views3.6K
Из блога Скотта Джоэла Аронсона, специалиста в области теории вычислительных машин и систем, преподавателя факультета компьютерных наук Техасского университета в Остине

Вы читали эти истории – в Financial Times, Technology Review, CNET, Facebook, Reddit, Twitter, [на Хабре / прим. перев.] или где-то ещё – о том, что группа исследователей в Google достигла квантового вычислительного превосходства со своим сверхпроводящим устройством из 53 кубитов. Их легко найти, но ссылок на них я давать не буду – просто потому, что они пока не должны существовать.

Миру известно, что Google действительно готовит большой анонс квантового превосходства, который должен выйти одновременно с публикацией исследовательской работы в одном из уважаемых научных журналов. И это, скорее всего, произойдёт в течение месяца.

Тем временем НАСА, участвовавшее в этой разработке, случайно выложило старую версию работы Google на общедоступном сайте. Она пробыла там недолгое время, но достаточное для т ого, чтобы попасть в Financial Times, мою папку «входящие» и миллионы других мест. Рассуждения об этой работе, лишённые фактов, предсказуемо распространились повсюду.

Криптографический АРМ на базе стандартов с открытым ключом. Выпуск SSL-сертификатов. Эпилог

Reading time4 min
Views6.7K
Вот мы и добрались до создания самоподписанных сертификатов.
Где применяются самоподписанные сертификаты? Конечно, с самоподписанным сертификатом вы не сможете зарегистрироваться на сайте Госуслуг или подать подписанную декларацию в ФНС. Но для внутрикорпоративного документооборота их вполне можно использовать. Можно также использовать их для защиты личной почтовой переписки, в VPN-сетях и т.п. Но наиболее часто используют самоподписанные SSL-сертификаты для обеспечения защищенного доступа по https-протоколу к Web-приложениям. Самым популярным средством для создания самоподписанных сертификатов остается OpenSSL. Процедура получения SSL-сертификатов с помощью того же OpenSSL хороша описана здесь. Но там вы не найдете упоминая о ГОСТ-овых сертификатах, о токенах PKCS#11 и т.п. Здесь мы рассмотрим простой графический интерфейс, который позволяет получать сертификаты на базе ГОСТ Р 34.10-2012 и без всякого использования OpenSSL.
Читать дальше →

10-гигабитный Ethernet: советы новичку

Reading time5 min
Views179K


Вдохновившись интернет-запросами в стиле «как сделать спиннер из картонки», я решил рассказать о том, что близко мне: как самому построить 10-гигабитную сеть. Гигабитный Ethernet вопросов уже не вызывает – справится даже школьник: потребуется коммутатор, медная витая пара и привычные RJ-45 разъемы.

А если хочется больше? Например, 10-гигабитное соединение для небольшого офиса или серверной. Какое оборудование понадобится и как его подключать – просто и по шагам в моей сегодняшней статье.
Читать дальше →

С хорошим микроконтроллером и время летит быстро или осциллограф выходного дня

Reading time4 min
Views20K

Некоторое время назад автор этих строк взялся разрабатывать компактный регистратор одно-полярного аналогового сигнала в пределах 3 вольт с максимально возможной скоростью считывания и минимально возможными затратами и размерами. В список минимально возможных затрат я вписал также и свою головную боль и выбрал хорошо знакомый мне STM32F303. Это, напомню, Cortex-M4 на 72 мегагерца от известной компании, со встроенными 12 разрядными, довольно шустрыми, аналого-цифровыми преобразователями (АЦП или ADC, кому как нравится) и с CAN интерфейсом на борту.


Таких небольших регистраторов требовалось несколько десятков. А наличие у микроконтроллера корпуса о 48-ми ногах вселяло надежду на то, что получится назвать этот считыватель компактным. Интерфейс CAN, с которым у меня уже тогда были хорошие отношения, давал мне возможность объединить весь этот джаз в достаточно удобной манере.


Скорость, с которой, в конце концов, все это заработало, оказалась вполне подходящей, чтобы заявить о работоспособности выбранного подхода. Удалось добиться пол микросекундного шага дискретизации. Головной боли и ассемблера избежать не удалось, но кто об этом сейчас вспоминает?


Однако, некоторый осадок остался. Осталась мысль, что, в отношении быстродействия, выжато было не все.


И вот, совсем недавно появляется серия STM32G4 с тактовой частотой до 170 мегагерц с вариантом в маленьком корпусе, и с почти такими же шустрыми АЦП на борту в количестве пяти штук. Надо было что-то делать.

Читать дальше →

Синтез регулятора методом обратной задачи динамики

Reading time12 min
Views10K
В задачах управления бывают случаи, когда закон движения управляемого объекта известен и необходимо разработать регулятор с определенными характеристиками. Порой задача осложняется тем, что уравнения, описывающие управляемый объект, оказываются нелинейными, что осложняет построение регулятора. В связи с этим были разработаны несколько методов, позволяющих учесть нелинейные особенности строения объекта управления, одним из которых и является метод обратной задачи динамики.

Читать дальше →

Android Camera2 API от чайника

Reading time32 min
Views58K


Не так давно я возился со своей роботележкой, пытаясь водрузить на нее ANDROID смартфон. Моей, то есть его задачей, было сделать тележку эволюционно продвинутой. Чтобы она, так сказать, чувствовала мир его сенсорами, смотрела его глазом (камерой), слышала микрофоном и ругалась по громкой связи. Ресурсов AVR, понятное дело, на это уже не хватало и поэтому бывший на телеге микроконтроллер переехал на уровень ниже, куда-то в район спинного мозга управлять моторчиками и разными безусловными рефлексами.

Но странное дело, когда я начал писать приложение для смартфона, нехорошая IDE ANDROID STUDIO стала постоянно зачеркивать мой код и называть его устаревшим.

camera = Camera.open();

Особенно, как вы видите, в тех частях, где я пытался работать с камерой. Это было очень обидно, потому что я прочитал в интернете и усвоил множество уроков работы с андроидом и камерой здесь, здесь, здесь и даже здесь. Там ничего не зачеркивалось. И называлось заурядно Camera API. Все там было просто и логично. Но Google упрямо толкал меня к какому-то Сamera2 API.

Я туда посмотрел и просто опупел от количества разных коллбэков, билдеров, хэндлеров и луперов на каждую строчку демонстрационного кода. Было совершенно непонятно с какой стороны к этому подступиться, если ты обычный любитель, а не android developer. Причем в сети даже на сегодня статей на тему Сamera2 API чуть, хотя вышло это обновление вроде как, аж четыре года назад. Но всё что я нашел, это статью в Хакере в 2016, пост в трех частях от украинских братьев того же года, двойной пост на Хабре в 2017 и статью Understanding Camera2 от японского мегагика Томоаки Имаи. И это я ещё имею в виду какую-то структурированную и оформленную информацию, а не раскиданные в интернете обрывки кода типа, «смотрите, как я могу» и простыни в стиле, «посмотрите код плиз, у меня ничего не работает».

А теперь, если вам всё ещё интересно зачем мне потребовалось пилить свой пост на эту тему
уже в 2019, то добро пожаловать под кат.
Читать дальше →

Как я не стал программистом в 35 лет

Reading time15 min
Views155K

С самого начала сентября широким потоком хлынули на Хабр публикации об успешном успехе на тему «Детство программиста», «Как стать программистом после N лет», «Как я ушёл в IT из другой профессии», «Путь в программирование» и так далее. Подобные статьи пишут постоянно, но вот сейчас они пошли как-то особенно кучно. Каждый день пишут то психологи, то студенты, то ещё кто-нибудь.

И в каждой статье звучит знакомая песня: главное, что советуют авторы — «стараться», «не сдаваться», «не бояться» и «идти к своей мечте»; а в комментариях очень часто можно встретить мнение, что ежели ты с самого детства любил компьютеры, то работа с ними в итоге неудивительна. Я хотел бы на примере своей биографии подвести читателей к мысли о том, что начальные условия могут быть важнее, чем приложенные усилия. Вера в справедливый мир способствует психологическому комфорту, но не очень-то корректно отражает реальность.
Читать дальше →

Непрерывный мониторинг глюкозы (НМГ) с помпой Medtronic 640g

Reading time4 min
Views20K

Так случилось, что чуть меньше года назад, моя дочь заболела сахарным диабетом 1 типа (инсулинозависимый). После месяца использования «ручек», мы перешли на помпу Medtronic 640g с поддержкой НМГ. Под катом расскажу, как я делал мониторинг глюкозы, используя данные с помпы. Осторожно, траффик.
Читать дальше →

Нетипичный «ls» или как развлекаются линуксоиды

Reading time2 min
Views34K
Однажды в телеграм чат питерского сообщества линуксоидов SPbLUG я кинул забавную задачку:
Выведите список файлов в домашней директории максимально возможным количеством способов, без использования ls или его алиасов(1 способ — 1 балл)

Такое же задание чуть позже прилетело в ещё один чат, и вот что из этого получилось:
Читать дальше →

Как дурак C# учил. Часть 1

Reading time7 min
Views122K

Запись 1


Я решил записывать. Главным образом потому, что я люблю записывать. Хотя нет. На самом деле мне хочется рассказать историю. Историю о том, что программирование это интересно. О том, что программирование может быть не только, профессией, но и отличным хобби, как фотография, шахматы, живопись или игра на гитаре. О том, что не обязательно иметь врожденный талант, суперсилу или годы специального образования чтобы добиться маленьких, но больших побед в любом деле.

Это дневник человека, изучающего программирование для удовольствия. Не для профессии, не для заработка. Я не живу в Нигерии с кнопочным телефоном и не нахожусь в отчаянном положении. Я просто учусь и программирую для развлечения в свободное от работы и семейных дел время. Шоу в реальном времени. Публикуется пачками по 5 записей.
Читать дальше →

Тренинг Cisco 200-125 CCNA v3.0. День 37. STP: выбор Root Bridge, функции PortFast и BPDU guard. Часть 2

Reading time10 min
Views10K
Предположим, что STP находится в состоянии сходимости. Что произойдет, если я возьму кабель и соединю свитч Н напрямую с корневым свитчем А? Root Bridge «увидит», что у него появился новый задействованный порт, и отошлет по нему BPDU.



Свитч Н, получив этот фрейм с нулевой стоимостью, определит стоимость маршрута через новый порт как 0+19 =19 при том, что стоимость его корневого порта равна 76. После этого порт свитча Н, который ранее пребывал в состоянии disabled, пройдёт все стадии transition и переключится в режим передачи только через 50 секунд. Если к данному свитчу подключены другие устройства, то все они на 50 секунд потеряют соединение с корневым свитчем и с сетью в целом.

Создаём портативную платформенную игру на микроконтроллере Cortex M0+

Reading time21 min
Views12K

Введение


(Ссылки на исходный код и проект KiCAD приведены в конце статьи.)

Хотя мы родились в 8-битную эпоху, нашим первым компьютером был Amiga 500. Это великолепная 16-битная машина, обладавшая потрясающими графикой и звуком, благодаря чему она отлично подходила для игр. Очень популярным игровым жанром на этом компьютере стали платформеры. Многие из них были очень цветастыми и обладали очень плавным параллаксным скроллингом. Это стало возможно благодаря талантливым программистам, гениально использовавшим сопроцессоры Amiga для увеличения количества экранных цветов. Взгляните, например на LionHeart!


Lionheart на Amiga. Это статичное изображение не передаёт всю красоту графики.

С 90-х электроника сильно поменялась, и теперь есть множество маленьких микроконтроллеров, позволяющих создавать удивительные вещи.

Мы всегда любили платформенные игры, а сегодня всего за несколько долларов можно купить Raspberry Zero, установить Linux и «довольно легко» написать красочный платформер.

Но это задача не по нам — мы не хотим палить из пушки по воробьям!

Мы хотим использовать микроконтроллеры с ограниченной памятью, а не мощную систему на чипе со встроенным GPU! Другими словами, мы хотим трудностей!

C for Metal — драгоценный металл для вычислений на графических картах Intel

Reading time10 min
Views11K
Сколько процессорных ядер Intel в вашем компьютере? Если вы пользуетесь системой на базе Intel, то в абсолютном большинстве случаев к вашему ответу надо будет прибавить единицу. В состав почти всех процессоров Intel — от Atom и до Xeon E3, естественно, не пропуская Core, уже много лет входит интегрированное графическое ядро Intel Graphics, являющееся по сути полноценным процессором, и соответственно, способное не только показывать на экране картинки и ускорять видео, но и выполнять «обычные» вычисления общего назначения. Как это можно эффективно использовать? Смотрите под катом.


Читать дальше →

Выходные на электромопеде с бензогенератором

Reading time6 min
Views45K


В конце 2016 года я собрал свой первый электровелосипед. Тогда я использовал его только для поездок на работу, а скромного аккумулятора емкостью 0,5 кВт*ч на элементах с химией LiFePO4 едва хватало на дистанцию около 20 километров в условиях Москвы. Но окрыляющее чувство «Оно едет! Само! И это я сам собрал!» захватило меня всерьез и надолго: за два года я прошел путь от переднеприводного ригида (велосипеда без амортизации) через полноприводный ригид к заднеприводному хардтейлу (велосипед с амортизационной вилкой спереди и без амортизации сзади), который уже мог с достаточным комфортом перемещать меня по грунтовым дорогам и лесным тропинкам. Росла и емкость аккумуляторных батарей — 0,5 кВт*ч, 1,5 кВт*ч, 3 кВт*ч. Совершенствуя характеристики дальности и комфорта я перестал использовать электровелосипед только как транспортное средство для поездок на работу и начал традицию еженедельных поездок для удовольствия, без явной конечной цели. Новые условия использования техники поставили очередные задачи по ее совершенствованию — и вот весной 2019 года я уже выезжаю на вполне серьезном аппарате на основе пространственной рамы с запасом электроэнергии в 6 кВт*ч в батарейном отсеке и мощным мотор-колесом в подрессоренной задней маятниковой вилке. Запас дальности поездки увеличился до гарантированных в любых разумных условиях 150 километров. Но что делать, когда мало и этого? Увеличивать батарею — дорого и тяжело, заряжаться в пути — потери времени и риск «обсохнуть» из-за отсутствия гарантированных точек зарядки. Пришлось превращать свой электротранспорт в гибридный при помощи бензогенератора! Вдохновившись рассказом sith о поездке на электромобиле по Канаде я решил написать эту статью про испытательную поездку на электромопеде-гибриде.
Под катом много фотографий!
Читать дальше →

10++ способов работать с аппаратными регистрами на С++ (на примере IAR и Cortex M)

Reading time13 min
Views20K
Choosing the safest path
Рис. И. Кийко

Всем доброго здравия!

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

Примерно в том же ключе я хочу продолжить обсуждение использования С++ для микроконтроллеров и рассмотреть способы как можно работать с регистрами используя С++. И хочу заметить, что для достижения безопасного обращения к регистрам простого пути не будет. Попытаюсь показать все плюсы и минусы способов. Если вы знаете еще способы, кидайте их в комментарии. Итак начнем:
Читать дальше →

Чего нельзя требовать и за что нельзя хвалить сотрудников, если вы хотите, чтобы они хорошо работали

Reading time3 min
Views84K
Уже давно сформулировал для себя этот подход. Возможно, он очевиден, но хуже от этого не становится.

Сначала сами пункты.

Никогда не требуйте и не хвалите сотрудников за:

  • вовремя приходят на работу или с обеда
  • ходят в соответствии с дресс-кодом
  • задерживаются на работе, работают на выходных

Это не все и примеры специально выбраны простые и очевидные, но для объяснения хорошо подходят.

Обратите внимание, что речь не только про «не хвалите», но и про «не требуйте».

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

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

А теперь почему так? Ведь хорошо, когда сотрудник не опаздывает и ходит в офис не в рваных джинсах?
Читать дальше →

Простые эксперименты с микроконтроллером STM32F103 («Голубая таблетка»)

Reading time4 min
Views82K


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

Будем считать, что «лучшие времена» — наступили.
Читать дальше →

Скрипт настройки Windows 10

Reading time2 min
Views173K

image
Давно хотел поделиться своим скриптом по автоматизации настройки Windows 10 (на данный момент актуальная версия 19041), да все руки не доходили. Возможно, он будет кому-то полезен целиком или только его части. Конечно, будет проблематично описать все пункты настройки, но постараюсь выделить самое важное.

Если кому-то интересно, то добро пожаловать под кат.

Читать дальше →

Information

Rating
Does not participate
Registered
Activity