Pull to refresh
12
0
Владимир Кандалов @VLADIMIR_KANDALOV

Пользователь

Send message

Как программировать многоядерные микроконтроллеры

Reading time16 min
Views20K


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


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

Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments17

Топ-10 инструментов IoT-разработки в 2020

Reading time6 min
Views12K


Интернет вещей (IoT) оказывает многостороннее влияние на нашу жизнь, начиная с ТВ, которое вы можете контролировать со смартфона и заканчивая умными часами, которые отслеживают выполняемые вами ежедневно упражнения. Это обширная сеть, которая связана со множеством различных гаджетов, имеющих встроенные датчики. IoT обеспечивает платформу для получения с этих устройств информации, а также общий язык для их взаимодействия. Эта технология позволяет эффективнее реализовывать проекты, а также помогает сэкономить деньги. Результаты обширного исследования показали, что на 2015 год число подключенных к этой сети устройств составляло 15,41 миллиарда, в 2020 году это число возросло до 26,66, а к 2025 ожидается превышение показателя аж в 75 миллиардов. Ну а поскольку область разработки IoT-инструментов растет, в ней появляется все больше различных приложений и решений.

Проекты для интернета вещей реализуются во многих сферах, включая здравоохранение, промышленность и бизнес. Существует бесчисленное количество решений для разработки в области IoT, поэтому нередко озадачивает выбор наиболее подходящего инструмента. Вас ждет краткий обзор 10 наиболее актуальных из них на случай, если вы соберетесь нанять IoT-разработчиков для построения IoT платформы или просто интересуетесь этим вопросом в иных целях.
Читать дальше →
Total votes 21: ↑13 and ↓8+17
Comments4

Как говорить с сотрудниками. 7 аспектов, о которых забывают

Reading time7 min
Views32K
Говорить с сотрудниками — это, на самом деле, не о «говорить». И не о методе «активного слушания». Я вообще не люблю все эти искусственные «техники». И речь здесь будет идти не о техниках привлечения внимания, махания руками и положенной длительности зрительного контакта. Разговор с сотрудником — это намного шире, чем просто поговорить. И если на заре своей карьеры менеджера я это понимал слабо, то после более чем 10 лет управления осознал, что некоторые банальности совсем таковыми не являются.

image
И тогда пришло время остановиться и задуматься — какие ошибки люди допускают чаще всего. © Unsplash

Немного обо мне
Меня зовут Александр, и я руковожу уже больше 10 лет Департаментом Исследований, Разработки и Инноваций компании Qulix Systems.

Прошёл путь от тестировщика через архитектора и менеджера до руководителя, пусть небольшого, но горячо любимого и созданного с нуля, подразделения, в котором работает порядка 100 человек.

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

Это моя первая статья — потому буду крайне рад комментариям и рекомендациям. Спасибо!
Читать дальше →
Total votes 61: ↑55 and ↓6+72
Comments62

Как я, в итоге, написал новую RTOS, протестированную и стабильную

Reading time40 min
Views83K
Я работаю со встраиваемыми системами в течение нескольких лет: наша компания разрабатывает и производит бортовые компьютеры для автомобилей, зарядные устройства, и т.д.

image


Процессоры, используемые в наших продуктах — это, в основном, 16- и 32-битные микроконтроллеры Microchip, имеющие RAM от 8 до 32 кБ, и ROM от 128 до 512 кБ, без MMU. Иногда, для самых простых устройств, используются еще более скромные 8-битные чипы.

Очевидно, что у нас нет (разумных) шансов использовать ядро Linux. Так что нам нужна какая-нибудь RTOS (Real-Time Operating System). Находятся даже люди, которые не используют никаких ОС в микроконтроллерах, но я не считаю это хорошей практикой: если железо позволяет мне использовать ОС, я ее использую.

Несколько лет назад, когда мы переходили с 8-битников на более мощные 16-битные микроконтроллеры, мои коллеги, которые были гораздо более опытными, чем я, рекомендовали вытесняющюю RTOS TNKernel. Так что это — та ОС, которую я использовал в разных проектах в течение пары лет.

Не то, чтобы я был очень доволен ею: например, в ней нет таймеров. И она не позволяет потоку ждать сообщения сразу из нескольких очередей. И в ней нет программного контроля переполнения стека (это действительно напрягало). Но она работала, так что я продолжал ее использовать.
Читать дальше →
Total votes 162: ↑161 and ↓1+160
Comments61

Отечественный микроконтроллер К1986ВК025 на базе процессорного ядра RISC-V для приборов учета электроэнергии

Reading time11 min
Views45K
Добро пожаловать в эпоху RISC-V!

Решения на базе открытого стандарта системы команд RISC-V всё чаще появляются на рынке. Уже в серийном производстве микроконтроллеры от китайских коллег, интересные решения предлагает Microchip с FPGA на борту. Растет экосистема ПО и средств разработки для данной архитектуры. Кажущиеся ранее непоколебимыми лидеры все чаще встречаются в объявлениях о перепродаже, а молодые стартапы привлекают многомиллионные инвестиции. Компания Миландр так же ввязалась в эту гонку и сегодня начала поставку заинтересованным предприятиям инженерных образцов своего нового микроконтроллера К1986ВК025 на базе процессорного ядра RISC-V для приборов учета электроэнергии. В общем картинки, характеристики и прочая информация, а так же немного хайпа под катом.


Читать дальше →
Total votes 99: ↑99 and ↓0+99
Comments148

Кино под защитой. Как мы готовились к аудиту по безопасности медиаконтента

Reading time7 min
Views7.7K
Наверняка каждый читатель Хабра хотя бы раз в жизни мечтал прикоснуться к миру кино, стать его частью. В этом посте я расскажу о том, как консультантам из отдела информационной безопасности удалось сделать это.

Из текста вы узнаете:

  • зачем досматривать до конца титры в конце фильма;
  • сколько аудиторских опросников нужно заполнить, чтобы быть уверенным, что кино под защитой;
  • почему аудит безопасности медиаконтента лучше не проходить в мешковатом худи.

Источник
Читать дальше →
Total votes 49: ↑45 and ↓4+50
Comments16

PVS Studio.VS.Статический анализ GCC 10. Независимый минитест

Reading time3 min
Views5.2K
После появления переводной статьи про Статический анализ в GCC 10, и ожидаемой реакции присутствующих здесь представителей разработчика коммерческого статического анализатора PVS-Studio, у меня возник вопрос: «Почему же представители отказываются проверить свой продукт на таких простых примерах для статического анализа, и не скрывают ли они чего?»
Andrey2008 Ды, неинтересно мне это. Поймал/не поймал синтетическую ошибку, это ничего не говорит о возможностях анализатора
Должны же они как то прогонять юнит-тесты своего продукта и как, если не на таких синтетических простых примерах?!

Собственно, пришлось сделать это самому.
Читать дальше →
Total votes 22: ↑20 and ↓2+29
Comments15

Можно порешать: задача про лидарное облако от команды беспилотных автомобилей Яндекса

Reading time6 min
Views10K


Меня зовут Андрей Гладков, я разработчик в направлении беспилотных автомобилей. Сегодня я поделюсь с сообществом Хабра задачей, которая связана с важнейшим сенсором беспилотника — лидаром, и с тем, как мы обрабатываем лидарные данные. Вы можете попробовать решить задачу самостоятельно на платформе Контест. Система проверит решение с помощью автотестов и сразу сообщит результат. Разбор и код решения — в спойлерах ближе к концу поста. Тем, кто был на митапе в нашем цехе в прошлом году, задача покажется знакомой — мы предлагали ее в качестве входного билета, но публично никогда ей не делились.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments23

10 фраз на английском, которые помогут сойти за американца

Reading time5 min
Views64K


Только ленивый не знает, что школьный и университетский английский сильно отличаются от реального языка, на котором говорят в США или Британии.

В каждой англоязычной стране есть разговорные выражения, которые отличают носителя от приезжего.

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

Добавьте их в свой словарик и при разговоре сможете сами сойти если не за американца, то хотя бы за обладателя уверенного английского. Поехали.
Total votes 33: ↑29 and ↓4+33
Comments44

Автоматический запуск unit-тестов для C

Reading time3 min
Views11K
Я использую C для научных расчётов. А в этом случае, стоит крепко подумать, а надо ли вам вообще C?

Язык C нужен только в случае, если в ваших расчётах очень критична производительность или критичен доступ к железу. Во всех остальных случаях, я очень рекомендую высокоуровневые языки типа Ruby или Python (почти что стандарт языка для научных расчётов, очень много научных пакетов разного толка от математики до биологии) или, что лучше, сразу научные пакеты типа Sage (надстройка над python с возможностью использования символьных вычислений и очень много чего ещё, а также с возможностью подключения других математических пакетов, в случае, если возможностей Sage не хватает, прямо внутри Sage программы; о Sage, кстати, писали на хабре).

Для Python же, если производительность важна и вы не готовы вылизывать C-код до совершенства, есть Cython (авторы которого являются также авторами Sage), который компилирует почти питоновский код в C-код, достигая очень высоких показателей производительности.

Так что на этом этапе призываю вас ещё раз: подумайте, прежде чем использовать C для научных или иных расчётов! Иначе, поехали!

Итак, вы всё-таки решили использовать C. В этом случае надо организовать рабочую тестовую среду, а именно:

Читать дальше →
Total votes 13: ↑8 and ↓5+3
Comments5

Google testing framework (gtest)

Reading time6 min
Views182K
Когда вставал вопрос о тестировании кода, я не задумываясь использовал boost::test. Для расширения кругозора попробовал Google Test Framework. Помимо всяких имеющихся в нем плюшек, в отличии от boost::test проект бурно развивается. Хотел бы поделиться приобретенными знаниями. Всем кому интересно прошу
под кат.
Total votes 62: ↑56 and ↓6+50
Comments23

Flipper Zero — прогресс за сентябрь

Reading time5 min
Views39K

Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который я разрабатываю с друзьями. Предыдущие посты [1],[2],[3],[4],[5]

В этом выпуске: Системное API, Набор для разработчиков, Улучшения в механике и электронике, Обновления в GPIO, Новая функция в NFC, Удаленный тестовый стенд.

В сентябре мы почти ничего не писали о проекте, и сейчас пришло время объяснить, почему. Мы приостановили всю маркетинговую деятельность, чтобы сосредоточиться на разработке и других задачах: контракты на поставку и производство, юридические вопросы, поиск новых сотрудников и многое другое. Все это отнимало силы настолько, что у нас даже не было времени опубликовать обновление. Теперь мы готовы поделиться с вами новостями.
Читать дальше →
Total votes 134: ↑129 and ↓5+173
Comments94

STM32F3xx + FreeRTOS. Modbus RTU с аппаратным RS485 и CRC без таймеров и семафоров

Reading time9 min
Views27K
Всем привет! Относительно недавно, закончив ВУЗ, я попал в небольшую компанию, которая занималась разработкой электроники. Одна из первых задач с которой я столкнулся — необходимость в реализации Modbus RTU Slave протокола с использованием STM32. С грехом пополам я её тогда написал, однако этот протокол начал встречаться мне из проекта в проект и я решил зарефакторить и оптимизировать либу с использованием FreeRTOS.
Читать дальше →
Total votes 26: ↑25 and ↓1+32
Comments24

Программирование устройств на основе модуля ESP32

Reading time26 min
Views198K
Микроконтроллер — это интегральная схема, способная выполнять программы. Сегодня на рынке представлено множество таких моделей от самых разных производителей. Цены на эти устройства продолжают падать. Однокристальные чипы находят широкое применение в самых разнообразных сферах: от измерительных приборов до изделий развлечений и всевозможной домашней техники. В отличие от персональных компьютеров микроконтроллер сочетает в одном кристалле функции процессора и периферийных устройств, содержит оперативную память и постоянное запоминающее устройство в для хранения кода и данных, однако обладает значительно мешьшими вычислительными ресурсами. ESP32 — это микроконтроллер, разработанный компанией Espressif Systems. ESP32 представляет собой систему на кристалле с интегрированным Wi-Fi и Bluetooth контроллерами. В серии ESP32 используется ядро Tensilica Xtensa LX6. Платы с ESP32 обладают хорошей вычислительной способностью, развитой периферией и при этом весьма популярны ввиду низкой цены в диапазоне 7$ – 14$: Aliexpress, Amazon.

image
Читать дальше →
Total votes 25: ↑23 and ↓2+28
Comments5

Взлом ESP32 путём обхода Secure Boot и Flash Encryption (CVE-2020-13629)

Reading time13 min
Views12K
Мы провели исследование микроконтроллера Espressif ESP32 на предмет устойчивости к атакам, выполняемым методом внесения сбоев в работу чипов (Fault Injection). Мы постепенно шли к тому, чтобы найти уязвимости, которые позволят нам обойти механизмы защищённой загрузки (Secure Boot) и шифрования флеш-памяти (Flash Encryption) посредством всего одного сбоя, вызванного электромагнитным полем. Более того, мы, успешно проведя атаку, не только смогли выполнить произвольный код, но и получили данные флеш-памяти в расшифрованном виде.



Компания Espressif зарегистрировала эту уязвимость в базе данных CVE под кодом CVE-2020-13629. Знакомясь с атакой, описанной в этой статье, учитывайте то, что она применима к чипам ESP32 ревизий 0 и 1. Более новые ESP32 V3 поддерживают функционал отключения загрузчика UART, который использован в этой атаке.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments6

Как северокорейские хакеры отмывают краденую криптовалюту на миллиарды долларов

Reading time4 min
Views13K

Сама кража для хакеров из Пхеньяна – дело несложное. Другой вопрос – как потом получить реальные деньги.




Много лет династия Ким из Северной Кореи получала деньги через незаконные схемы типа торговли наркотиками и подделки валют. За последнее десятилетие Пхеньян всё чаще начал обращаться к киберпреступлениям – используя армию хакеров для осуществления ограблений банков и обменников криптовалют на миллиарды долларов. К примеру, в 2018 году была проведена атака, благодаря которой за один раз удалось увести $250 млн. ООН говорит, что в результате этих действий режим получает значительные суммы денег, которые тратит на разработку ядерного оружия, способного гарантировать его выживание в течение долгого времени.

Однако есть большая разница между взломом обменника криптовалют и получением на руки реальных денег. Нужно переслать криптовалюту, отмыть её так, чтобы никто не смог её отследить, поменять её на доллары, евро или юани, на которые уже купить оружие, предметы роскоши и первой необходимости.
Читать дальше →
Total votes 22: ↑9 and ↓13+4
Comments20

Самые необычные виды хостинга: домашний компьютер, Raspberry Pi и чужие серверы

Reading time6 min
Views25K

Веб-сервер на Raspberry Pi

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

А если мы хотим держать сайт полностью под своим контролем, то можем разместить веб-сервер на домашнем компьютере, одноплатнике Raspberry Pi или даже на мобильном телефоне. Главное, чтобы устройство всё время было в онлайне.
Читать дальше →
Total votes 29: ↑25 and ↓4+31
Comments19

Лучшие IDE для Raspberry Pi

Reading time7 min
Views44K
Raspberry Pi — это, может, и не единственный одноплатный компьютер (single-board computer, SBC) на рынке, но он, определённо, является самым популярным. Raspberry Pi пользуется огромное количество людей, он является центром экосистемы, в которую входит множество официальных и неофициальных ресурсов и изделий — от книг и дополнительного оборудования до форумов и учебных курсов. Raspberry Pi снабжён отличной, поддерживаемой в актуальном состоянии документацией. Благодаря Raspberry Pi Foundation регулярно выходят новые модели SBC, появляются и усовершенствования моделей предыдущих поколений. Raspberry Pi, учитывая его серьёзную вычислительную мощность, отлично показывает себя в роли настольного компьютера. Он подходит и тем, кто занимается программированием.


Raspberry Pi

Из этого материала вы узнаете о том, почему Raspberry Pi имеет смысл рассматривать как компьютер, подходящий для разработчика ПО. Здесь же мы поговорим о выборе интегрированной среды разработки (integrated development environment, IDE). Среди рассмотренных IDE можно найти инструменты для программирования практически на любом языке.
Читать дальше →
Total votes 31: ↑26 and ↓5+35
Comments28

История двух стандартных библиотек Си

Reading time5 min
Views25K
Сегодня мне пришел баг-репорт от пользователя Debian, который скормил какую-то ерунду в утилиту scdoc и получил SIGSEGV. Исследование проблемы позволило мне провести отличное сравнение между musl libc и glibc. Для начала посмотрим на стектрейс:

==26267==ERROR: AddressSanitizer: SEGV on unknown address 0x7f9925764184
(pc 0x0000004c5d4d bp 0x000000000002 sp 0x7ffe7f8574d0 T0)
==26267==The signal is caused by a READ memory access.
    0 0x4c5d4d in parse_text /scdoc/src/main.c:223:61
    1 0x4c476c in parse_document /scdoc/src/main.c
    2 0x4c3544 in main /scdoc/src/main.c:763:2
    3 0x7f99252ab0b2 in __libc_start_main
/build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
    4 0x41b3fd in _start (/scdoc/scdoc+0x41b3fd)

В исходниках на данной строчке написано вот что:

if (!isalnum(last) || ((p->flags & FORMAT_UNDERLINE) && !isalnum(next))) {

Подсказка: p — это корректный, ненулевой указатель. Переменные last и next имеют тип uint32_t. Сегфолт случается на втором вызове функции isalnum. И, самое важное: воспроизводится только при использовании glibc, но не musl libc. Если вам пришлось перечитать код несколько раз, вы не одиноки: тут попросту нечему вызывать сегфолт.
Читать дальше →
Total votes 52: ↑48 and ↓4+67
Comments82

STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1

Reading time14 min
Views125K

Введение


Не так давно мой отдел столкнулся с трудностями поиска новых инженеров программистов для разработки встроенного ПО. Опытным и умным не нравился уровень зарплаты, а молодых просто нет в нашем городе. Поэтому под патронажем нашей доблестной глобальной компании со штаб квартирой где-то в Сент Луисе, мы начали сначала набирать студентов в интернатуру, а потом, решили пойти другим путем и сделать целых два курса по разработке ПО, а уже там самим выбирать самых “толковых” если понадобятся вдруг новые сотрудники. Это намного дешевле и позволяет охватить максимальное количество претендентов.
Немного отступлю от темы, сам я программировал последний раз очень давно, и вообще больше на С#, а последний глобальный проект на микроконтроллере (PIC16 на зыке Си) был сделан в далеком 2007 году.
Поэтому мне предстояло разобраться с современными микроконроллерами, языком С++ и операционной системой реального времени.
Конечно все наши проекты уже сейчас используют ОСРВ и пишутся на С++, но как разработчик я в них не учувствую, а занимаюсь тунеядством управлением проектами разработки такого ПО.

Выбор


Времени у меня на все про все было дано 1 месяц. С начала июня 2015 до начала июля 2015, потому что потом я собирался в отпуск, а после отпуска обычно полно работы. Надо было делать все быстро и четко.
Немного проконсультировавшись с коллегами, выяснил, что модное направление ARM Cortex различные ядра и из доступных отладочных плат можно заказать Olimex STM32P152 которые стоили 25 долларов. Они пришли очень быстро — 6 плат по цене примерно 2000 рублей. Стоит заметить, что эти платы были закуплены нами для университета, где собственно и будет проходить этот курс.
image
Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments13

Information

Rating
Does not participate
Location
Ростов-на-Дону, Ростовская обл., Россия
Registered
Activity