Как стать автором
Обновить
46
0
Константин @jakushev

embedded разработчик (bare-metal)

Отправить сообщение

Микроконтроллеры Megawin серии MG32F02: начало освоения

Время на прочтение22 мин
Количество просмотров6.6K

Мы продолжаем цикл статей по 32-разрядным микроконтроллерам компании Megawin на ядре Cortex-M0. В этой статье будут рассмотрены средства разработки и программирования МК на gcc-arm, контроллер flash-памяти МК, пакет OpenOCD для взаимодействия с программатором ST-LINK, модуль GPIO и простейшая программа управления светодиодом.

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии1

Про буферные конденсаторы

Время на прочтение3 мин
Количество просмотров12K

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

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

Читать далее
Всего голосов 50: ↑47 и ↓3+44
Комментарии31

Создаём простейший проект для ПЛИС Lattice в среде Litex

Время на прочтение16 мин
Количество просмотров6.1K

В предыдущей паре статей я рассуждал про ПЛИС Lattice. Давайте сегодня поговорим об эффективной разработке под них. Один наш крупный руководитель уверяет, что из разговоров с иностранными Заказчиками, он выяснил, что российских разработчиков считают пишущими классные вещи, но делающими это крайне медленно. Ну, разумеется, по сравнению с разработчиками из других стран. И разумеется, «классные» идёт на первом месте.

Один из методов обхода проблемы скорости разработки – использование готовой инфраструктуры для проектов. Я делал цикл статей про комплекс Redd, где продвигал использование готовой шинной инфраструктуры в среде разработки Quartus. Сначала это была честная процессорная система, потом – процессор мы изъяли, а шины – оставили.

Затем я делал пару циклов, где активно использовал данный подход. Мне приходилось дописывать только проблемно-ориентированные модули, остальное — среда разработки создавала за меня.

Есть ли что-то подобное для Lattice в частности и сцепки Yosys/NextPNR в целом? Вы не поверите! Решение не просто есть, но оно ещё и настолько кроссплатформенное, что подойдёт и для Yosys/NextPNR, и для Quartus, и для Vivado! И называется оно Litex. Итак, давайте попробуем поэкспериментировать с ним для подхода, который я уже давно продвигаю: «делаем штатную основу, а на неё нанизываем свои целевые блоки».

Читать далее
Всего голосов 16: ↑12 и ↓4+8
Комментарии5

Экспериментируем с ПЛИС семейства ECP5 фирмы Lattice

Время на прочтение10 мин
Количество просмотров8.5K

Когда я видел на Хабре упоминание о ПЛИС Lattice, у меня всегда возникал простой вопрос: «А зачем ещё одна ПЛИС?». Вроде всю жизнь хватало пары базовых. Но полгода назад случилось то, что сняло этот вопрос для меня. Пришёл Заказчик и сказал: «Мы делаем проект на ECP5». Против требований Заказчика не попрёшь!

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

Итого, вчера делать ознакомительную статью про Lattice было рано, завтра – может быть поздно.

Сегодня я расскажу, где купить более-менее дешёвые платы для опытов, как быстро освоить Open Source среду разработки и какие готовые проекты осмотреть в первую очередь.

Читать далее
Всего голосов 38: ↑37 и ↓1+36
Комментарии30

U-boot. Процедура инициализации по шагам

Время на прочтение6 мин
Количество просмотров23K

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

Читать далее
Всего голосов 15: ↑14 и ↓1+13
Комментарии8

Настройка VSCode для программирования stm32 в Linux и не только в Linux

Время на прочтение7 мин
Количество просмотров26K

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

Всё ниже описанное является следствием моего личного опыта, и ни на какую истинность не претендует. Все советы рассчитаны не людей только решившихся на переход с AVR на STM32

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

Пожалуй начнём!

Читать далее
Всего голосов 32: ↑30 и ↓2+28
Комментарии35

Трансформаторные датчики тока

Время на прочтение19 мин
Количество просмотров17K
Представьте себе, что у вас встала задача измерения тока потребления в бытовой сети 220 В, 50 Гц. Причем главное ваше требование — невмешательство в существующую проводку. Мое непоколебимое мнение — в питающей ваш дом линии должно быть как можно меньше всякого, потому что каждый лишний агрегат есть потенциальная точка отказа. Если не сам по себе (как УЗО в старых загородных домах, где трудно избежать утечек), то как минимум из-за дополнительных контактных соединений, и хорошо, если эти соединения сделаны по стандартам, а не из оцинкованной стали в контакте с медью.

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

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

Остаются трансформаторы тока. Вот их сейчас и рассмотрим с упором на самостоятельное изготовление: коли мы не вмешиваемся в проводку, ничего потенциально опасного мы соорудить не можем. Но сможем ли сделать удобнее и дешевле покупных?
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии30

Балансирующий робот на Arduino Nano и шаговых моторах

Время на прочтение5 мин
Количество просмотров22K

Моя версия популярного балансирующего робота. Для тех, кто хочет разобраться в математике, железе и алгоритме стабилизации.

Читать далее
Всего голосов 64: ↑64 и ↓0+64
Комментарии23

Работа с кучей в Rust

Время на прочтение4 мин
Количество просмотров7.7K

Продолжаем изучать Rust нетрадиционным способом. В этом раз будем разбираться в нюансах работы с кучей, для их понимания понадобятся: сырые указатели, выделение памяти в куче, размер экземпляра типа, запись значений в кучу и чтение из нее, const и static, unit-like структуры, переопределение глобального аллокатора.


Это, определенно, overkill для одной статьи, а вот половину списка вполне можно освоить.


Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии9

Ассемблер RISC-V для начинающих

Время на прочтение12 мин
Количество просмотров36K

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

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

Если вам необходим хороший старт, и вы не знаете ничего о микропроцессорах, вы можете прочесть мою статью "Как работает современный микропроцессор?" (How Does a Modern Microprocessor Work?).

Если вы хотите чего-нибудь простого и весёлого, можете начать с различных игр, в основе которых лежит программирование на ассемблере: Learn Assembly Programming the Fun Way.

Другим может понравиться ретропроцессор, такой, как 6502, использовавшийся в Commodore 64. Но проблема в том, что он окончательно устарел. При его разработке не учитывались реалии сегодняшнего дня.

Большой плюс RISC-V состоит в том, что он обладает современным и простым набором команд, спроектированным с учётом современных требований, таких как медленный доступ к памяти, использование предсказателя переходов, суперскалярного out-of-order выполнения команд и т.д.

Если вам интересно всё это, прочтите: Why Is Apple’s M1 Chip So Fast?

Перед тем, как мы начнём, можете распечатать это: James Zhu RISC-V Reference.

Читать далее
Всего голосов 52: ↑51 и ↓1+50
Комментарии31

Собираем и устанавливаем свою Linux-систему на микроконтроллер STM32MP1

Время на прочтение12 мин
Количество просмотров15K

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

В этой статье мы автоматизируем процесс сборки и установки Linux-системы на микроконтроллер STM32MP157-DK2. ОС будет обладать минимальной функциональностью, но зато мы соберём из исходников собственную систему. А поможет нам в этом Buildroot — система сборки Linux-дистрибутивов. 

Что такое Buildroot?


Сначала вспомним, что Linux-система состоит из достаточно большого количества разных компонентов. Так как мы здесь говорим про embedded-платформы, выделим следующие компоненты:
Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии1

Floppinux — Linux, умещенный на дискету

Время на прочтение7 мин
Количество просмотров16K

Новость по этому поводу уже была, время подавать и сам перевод. В своем руководстве Кристиан подробно излагает каждый шаг процесса создания дистрибутива и его записи на дискету формата 3.5". В конечном итоге работает такой дистрибутив даже на старых ПК с i486DX и вполне может выполнять скомпилированные приложения.
Всего голосов 67: ↑61 и ↓6+55
Комментарии40

Превращаем одноплатник Cubietruck в Wi-Fi Hotspot с Captive portal, VPN-шлюзом и Ad block

Время на прочтение18 мин
Количество просмотров18K
raspap

Для построения Wi-Fi сети обычно используют готовые маршрутизаторы, функциональность которых всегда ограничен прошивкой. А если необходимо добавить блокировщик рекламы, VPN шлюз и красивый Captive portal, покупать новую железку? Стоимость устройства с такими возможностями будет уже весьма высока. Можно взять Linux с Hostapd и сделать точку доступа с Wi-Fi, но в отличие от готовых маршрутизаторов не будет наглядного Web-интерфейса. И для решения этой задачи был создан проект RaspAP, который на базе устройств с ОС Debian создает Wi-Fi Hotspot с Captive portal, VPN-шлюзом, Ad block. Для RaspAP в отличие от OpenWrt не требуется непосредственная поддержка устройства, достаточно поддержки последней версии Debian. RaspAP работает поверх уже установленных ОС: Raspberry Pi OS, Armbian, Debian, Ubuntu. Как сделать Wi-Fi Hotspot на RaspAP прошу под кат.
Всего голосов 35: ↑33 и ↓2+31
Комментарии19

Embedded Linux в двух словах. Второе

Время на прочтение25 мин
Количество просмотров30K

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

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

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

Читать далее
Всего голосов 33: ↑32 и ↓1+31
Комментарии19

Embedded Linux в двух словах. Первое

Время на прочтение9 мин
Количество просмотров54K

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

Платформой послужит плата BeagleBone Black с процессором производства Техасских Инструментов AM3358 и ядром Arm Cortex-A8, и, чтобы не плодить мигающие светодиодами мануалы, основной задачей устройства будет отправка смайлов в топовый чат, широко известного в узких кругах, сайта,  в соответствии с командами от смайл-пульта. Впрочем, без мигания светодиодами тоже не обошлось.

Читать далее
Всего голосов 47: ↑45 и ↓2+43
Комментарии15

Использование бюджетных JTAG-отладчиков в PlatformIO

Время на прочтение4 мин
Количество просмотров9.1K

В этом туториале я хотел бы рассказать о том, как использовать ультрабюджетные JTAG-отладчики CJMCU FT232H и RV-Degugger-Lite в PlatformIO для прошивки и отладки устройств на платформах ESP32 и GD32. Полноценной инструкции на просторах интернета я не нашел, и в процессе настройки столкнулся со многими проблемами, поэтому этот туториал появляется здесь для вашего удобства. Оговорюсь сразу, что настройка прописана для Linux, но для Windows принципиальной разницы нет за исключением танцев с Zadig.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии3

Программирование беспроводных модулей на MicroPython с Thonny

Время на прочтение4 мин
Количество просмотров9.9K

Я неоднократно разрабатывал проекты на MicroPython для различных embedded-решений, включая парочку ESP32 WiFi модулей. Для таких проектов есть несколько инструментов:

  • Использование последовательного терминала и ampy, который не поддерживается Adafruit с 2018 года.
  • Для плат Pycom или прошивки WiFy есть плагины pymakr под Atom и Visual Studio.
  • Если же вы предпочитаете командную строку, как и я, то стоит использовать rshell от одного из самых активных представителей команды MicroPython.
Всего голосов 38: ↑38 и ↓0+38
Комментарии2

Произвольное число аргументов любых типов на C11 и выше с помощью _Generic и variadic макросов

Время на прочтение15 мин
Количество просмотров13K

В Си стандарта 2011 года добавили небольшую возможность "перегрузки" функций с помощью макроса. (Generic selection) Мне, очень интересно стало написать какую-нибудь функцию, которая максимально использовала бы эту возможность

Задумка: написать (макро) функцию print, которая выводит через пробел все переданные в нее аргументы. Звучит невероятно для Си, где обычно указывают тип принимаемого аргумента одной буквой в имени, и явно указывают число переданных аргументов. Но с джейнериками из C11 это возможно

Читать далее
Всего голосов 19: ↑15 и ↓4+11
Комментарии37

Подключаем дисплей SPI LCD  ILI9341 к одноплатному компьютеру Banana Pi BPI-M64 или любому другому на ОС Armbian

Время на прочтение12 мин
Количество просмотров37K
LCD SPI ILI9341 Banana Pi BPI-M64

Пост содержит инструкцию как подключить TFT-LCD дисплей на популярном контроллере ILI9341 к одноплатному компьютеру на ОС Armbian с помощью дерева устройств (Device Tree overlays) без танцев с бубном. В сети Интернет много материала как подключать различные LCD экраны к Raspberry Pi. Но что если у вас нет Raspberry Pi, а хочется подключить недорогой LCD экран на SPI интерфейсе? Все что вам необходимо, это любая плата с поддержкой ОС Armbian. В каталог поддерживаемых плат ОС Armbian входят платы: Asus, Pine64, Hardkernel, Orange Pi, Banana Pi, и т.д. На данный момент в каталоге более 114 моделей плат, объявлена поддержка различного оборудования из коробки. Доступны для подключения: 4G/LTE модемы, USB Wi-Fi, USB Bluetooth, USB Ethernet, сканеры DVB-тюнеры и т.д. К всем этим платам можно легко подключить  SPI LCD дисплей ILI9341, как это реализовать прошу под кат.
Всего голосов 16: ↑16 и ↓0+16
Комментарии1

Buildroot — часть 1. Общие сведения, сборка минимальной системы, настройка через меню

Время на прочтение7 мин
Количество просмотров65K

Введение


В данной серии статей я хочу рассмотреть систему сборки дистрибутива buildroot и поделиться опытом её кастомизации. Здесь будет практический опыт создания небольшой ОС с графическим интерфейсом и минимальным функционалом.


Прежде всего, не следует путать систему сборки и дистрибутив. Buildroot может собрать систему из набора пакетов, которые ему предложили. Buildroot построен на make-файлах и поэтому имеет огромные возможности по кастомизации. Заменить пакет на другую версию, добавить свой пакет, поменять правила сборки пакета, кастомизировать файловую систему после установки всех пакетов? Всё это умеет buildroot.


В России buildroot используется, но на мой взгляд мало русскоязычной информации для новичков.


Цель работы — собрать дистрибутив с live-загрузкой, интерфейсом icewm и браузером. Целевая платформа — virtualbox.


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


Buildroot система очень мощная, но она ничего не сделает за вас. Она может лишь дать возможности и автоматизировать процесс сборки.


Альтернативные системы сборки (yocto, open build system и прочие) не рассматриваются и не сравниваются.

Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии14

Информация

В рейтинге
Не участвует
Откуда
Минск, Минская обл., Беларусь
Дата рождения
Зарегистрирован
Активность