Обновить
172.38

Программирование микроконтроллеров *

Учимся программировать микроконтроллеры

Сначала показывать
Порог рейтинга
Уровень сложности

Исследование мелодий на МК Padauk

Уровень сложностиСредний
Время на прочтение42 мин
Охват и читатели6.8K

К микроконтроллерам Padauk я давно присматривался. Острой необходимости в их использовании у меня нет, но очень интересовали. В какой-то момент этот интерес взял верх, и я решил попробовать что-нибудь сделать на них. Если посмотреть репозитории с примерами Free PDK, то все делают простенькое проигрывание мелодий. Я не стал долго размышлять и тоже решил сделать проигрывание мелодий, но с одним условием — чтобы небольшая мелодия проигрывалась на самом дешевом и простеньком МК, таком как PMS150C или PMS150G.

Я постараюсь вспомнить всё, с чем столкнулся: от программатора Free PDK, обновления поддержки PlatformIO, создания отладочной платы под PFS154 и PMS150C (с адаптерами), музыкального брелока с PMS150G и платы с ATtiny13 — до разбора алгоритма для написания мелодий, которые можно ужать в 1 КБ памяти, а напоследок попробуем снимать значения c АЦП PFS122 и регулировать громкость музыки средствами PWM.

Читать далее

Новости

Чтение и Запись Параметров по UDS

Уровень сложностиПростой
Время на прочтение19 мин
Охват и читатели6.3K

В данном тексте я произвел смысловой перевод фрагментов спецификации протокола UDS. Той его части, которая поясняет механизм чтения и записи параметров.

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

UDS протокол реализует динамическую типизацию. То есть вся информация про типы данных поступает во время исполнения программы .

Вот об этом всем и поговорим.

Читать далее

Чтение и запись физической памяти по протоколу UDS

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели5.5K

В данном тексте я произвел смысловой перевод UDS стандарта ISO-14229 с английского на русский. А конкретнее ту его часть, которая рассказывает про то, как читать и писать память в микроконтроллере. UDS протокол позволяет читать и писать физическую память на микроконтроллере.
Для этого в протокол заложены спец. пакеты о которых и поговорим.

Читать далее

Обзор робота Xiaozhi

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.8K

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

Читать далее

Я отреверсил процессор, чтобы улучшить детскую фотокамеру

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели15K

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

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

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

Поэтому я задумался: наверняка ведь есть способ пропустить меню и сразу перейти в режим камеры? Должно быть, внутри камеры находится какой-нибудь процессор ARM, и я не думаю, что разработчики заморочились с защитой кода. Достаточно считать его через JTAG, загрузить в Ghidra, найти нужный бит, изменить его, снова записать код во флэш-память, и всё.

Читать далее

Небольшой подарок моддерскому коммьюнити от меня

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели14K

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

Читать далее

Переходник с USB на CAN из Отладочной Платы JZ-F407VET6

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели11K

В разработке электроники часто нужны переходники с USB на CAN.

В этом тексте я написал про то каким может быть такой переходник, если в распоряжении только учебная отладочная плата.



Читать далее

Структуры данных на практике. Глава 3: Бенчмаркинг и профилирование

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели5.5K

Проблема измерений

Узнав из Главы 2 об иерархии памяти, вы, возможно, захотите оптимизировать свой код. Но есть одна проблема: как понять, что оптимизация на самом деле сработала?

Этот урок дорого мне обошёлся.

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

Я запустил код. Мне показалось, что он быстрее. Я закоммитил изменения.

Неделю спустя коллега провёл бенчмарки и выяснил, что моя «оптимизация» замедлила код на 15%. Я оптимизировал не то, но у меня не было данных, чтобы подтвердить мои предположения.

Вывод: никогда не доверяйте своей интуиции, всегда проводите замеры.

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

Читать далее

Как изменялась Raspberry Pi: тесты производительности

Время на прочтение8 мин
Охват и читатели13K

Сегодня мы рассмотрим на практике 13 летнюю историю разработки Raspberry Pi. У меня есть экземпляры каждого поколения Pi, от оригинальной модели из 2012 года, до Pi 5, которая вышла чуть больше года назад.

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

Читать далее

Структуры данных на практике. Глава 2: Иерархия памяти

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.5K

«Память — это современный диск, диск — это современная лента», — Джим Грей

Проблема ста тактов

В Главе 1 мы говорили о том, что промахи кэша стоят 100-200 тактов, а попадания в кэш — всего 1-4 такта. И это не какая-то мелкая деталь, а самый важный фактор современной производительности.

Ниже я расскажу, почему это так.

Однажды я оптимизировал драйвер устройства для встраиваемой системы на RISC-V. Драйвер должен был обрабатывать пакеты от сетевого интерфейса, но при большой нагрузке мы теряли пакеты. CPU работал с частотой 1 ГГц, а для обработки каждого пакета требовалось около 500 команд. Простая математика:

500 команд ÷ 1 ГГц = 500 наносекунд на пакет

При скорости 500 нс на пакет мы могли бы обрабатывать 2 миллиона пакетов в секунду. Однако мы справлялись всего с 200 тысячами пакетов в секунду, то есть в десять раз меньше, чем ожидалось.

Профилировщик показан следующее:

$ perf stat -e cycles,instructions,cache-misses ./driver_test Performance counter stats:

5,000,000 cycles

500,000 instructions

45,000 cache-misses

Постойте-ка: 500000 команд должны занимать 500000 тактов (при 1 IPC). Но мы видим 5 миллионов тактов. Куда подевались лишние 4,5 миллиона тактов?

Читать далее

Революционный подход в школьной образовательной робототехнике

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели12K

Mirte — это недорогая полностью open-source платформа учебного мобильного робота, где ученик проходит путь «от телеуправления и Blockly до Python, SSH и полноценного ROS», задуманная как единый «трек» обучения от начальной школы до университета, оставаясь на одном и том же роботе и в одной и той же среде. Идея Mirte в образовании — не прятать «настоящую» робототехнику за игрушечными абстракциями, а сделать к ней удобный, поэтапный вход.

Читать далее

BareMetal CI Part 3: Ansible-коллекция для установки инструментов разработчика

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели9.5K

Автоматизируете настройку Linux для embedded-разработки? Я собрал Ansible-коллекцию, которая за пару минут установит arm-none-eabi-gcc, J-Link, can-utils и драйверы PEAK CAN на любую машину. Больше никаких ручных команд и забытых зависимостей — всё одной кнопкой, с поддержкой CI/CD.

Читать далее

Самодельная опторазвязка для прошивки Zelio Logic

Время на прочтение2 мин
Охват и читатели11K

Закупили, как то,на нашем предприятии интеллектуальные реле Zelio Logic. Распределили по подразделениям, снабдили инструкциями, программным обеспечением. На всю партию купили всего один кабель для прошивки через COM-порт.

Читать далее

Ближайшие события

Умный дом, у каждого он свой

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели16K

Привет, Хабр!

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

Дисклеймер: я просто описываю личный опыт, все совпадения случайны!

Читать далее

Ящик пAMDоры — изучаем AMD PSP

Уровень сложностиСложный
Время на прочтение21 мин
Охват и читатели16K

Помните переполох с Intel ME, что устроили наши коллеги из PT SWARM? Тот, где в проприетарной прошивке, которая имеет максимальный доступ к вашей системе, обнаружили уязвимость, вследствие чего можно запустить свой код, включить отладку и, вообще, сделать с чипсетом практически всё, что заблагорассудится? Теперь такое же можно проделать и с AMD! Мы в Positive Labs решили разобраться в ситуации и исследовать ту самую плату, на которой недавно нашли уязвимость.

Читать далее

Что дает участие в соревновании ROS2 роботов?

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.8K

🔥 ROS2 соревнование — твой билет в мир робототехники, где тебя ждут работа, университет и настоящий робот!

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

Читать далее

Передача JPEG-видео по RTP/UDP на ESP32 (RFC 2435)

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели20K

В этой статье я разберу, как реализовать передачу JPEG-видео по RTP поверх UDP напрямую с ESP32 - так, чтобы поток открывался в VLC и ffplay, без RTSP, FFmpeg и промежуточных серверов.

Читать далее

Полевое испытание диапазона модуля LoRa2021 и PDR (FLRC против LoRa) — LR2021

Время на прочтение12 мин
Охват и читатели7.6K

LoRa2021 — это модуль беспроводного приемопередатчика, разработанный компанией G-NiceRF на базе новейшего чипа Semtech LoRa® LR2021. Он не только сохраняет преимущества дальней связи LoRa, но и реализует переход от «низкоскоростных датчиков» к «высокоскоростной передаче».

Типичное значение чувствительности приема LoRa2021 составляет -143 дБм (SF12/62,5 кГц). В диапазоне частот Sub-GHz чип LR2021 добавляет поддержку FLRC, при этом скорость передачи данных может достигать 2,6 Мбит/с (в стандартном режиме LoRa она составляет до 125 кбит/с).

Значительное увеличение пропускной способности позволяет LoRa2021 поддерживать передачу изображений, отправку голосовых или аудиофрагментов, а также обновление пакетов данных большего объема.

Кроме того, данный модуль охватывает широкий спектр частот. Он поддерживает популярные диапазоны Sub-GHz (стандартные 433/470/868/915 МГц, с возможностью настройки 150–960 МГц) и диапазон 2,4 ГГц ISM. Также он поддерживает высокие частоты 1,5–2,5 ГГц (включая спутниковую связь S-диапазона), обеспечивая покрытие от земли до спутников.

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

При сохранении низкого энергопотребления с током в спящем режиме ≤2 мкА, LoRa2021 интегрирует технологию скачкообразной перестройки частоты LR-FHSS для работы в условиях сильных помех. Он также поддерживает измерение дальности RTToF и полностью совместим с основными протоколами Интернета вещей, такими как LoRaWAN, BLE 5.0 и Wi-SUN.

Читать далее

ИИ лажает там где должен был сиять

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели21K

У меня недавно приняли статью на крутую конференцию, где я описываю, как ИИ лажает в микроархитектурных задачках на SystemVerilog, которые я даю студентам на интервью. Дошло до того, что стартаперы больше не берут от меня задачек, а с честными глазами говорят: мы пока не умеем решать ваши задачки, но научимся как только большая компания инвестирует в нас деньги, объявит нас своим партнером и даст нам доступ к миллионам строк на верилоге в своих закромах, на которых мы научимся и будем сиять. А пока смотрите наши слайдики.

Ну ладно, хорошо, допустим. А где же ИИ сияет сейчас? Мне говорили, что пусть ИИ не сияет на языках описания аппаратуры, но он уже дошел до продакшн в языках программирования, где заменил джуна и скоро заменит миддла. Так что во всех компаниях останется только несколько ИИ-гуру, а все остальные программисты будут отправлены собирать клубнику на плантациях города Ватсонвилл, Калифорния, где они заменят нелегальных мексиканцев, которых Трамп собирается отправить на родину.

Программирование, говорите? Ну хорошо, вот три мои попытки оправдать ИИ на задачах из программирования.

Читать далее

Пуск bxCAN-Трансивера на STM32

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели11K

Многие STM32 микроконтроллеры обладают CAN трансивером. Даже не одним.
В этом тексте я расскажу про особенности работы CAN-трансивера на STM32 (bxCAN).

Вы узнаете как работает CAN буквально под капотом.

Читать далее
1
23 ...