Search
Write a publication
Pull to refresh
0
0
Василий @Phantovas

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

Send message

Генерация перемещаемого кода для процессоров ARM в компиляторе LLVM

Reading time12 min
Views5K


Процесс обновления «прошивки» для микроконтроллера – опасная вещь. Раньше при обновлении «прошивки» любой аппаратный сбой приводил к тому, что устройство превращалось в кирпич. В наше время часто имеется начальный загрузчик, который позволит произвести процесс обновления заново, но до того, весь функционал устройства будет потерян. Пока не будет завершено обновление, работать оно уже не будет. Самым красивым способом является использование двух областей для размещения «прошивки» — основной и запасной. На рисунке ниже это красная и синяя области. Исходно активная красная, а обновление будет загружаться в синюю. Сбой загрузки не страшен. Если он произойдёт, управление останется у красной области. При успехе операции, активной станет синяя область, а новое обновление будет загружаться в красную. Ну, и так далее. Каждое обновление будет приводить к рокировке.



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

Высокофункциональная депрессия — болезнь продуктивных и амбициозных

Reading time6 min
Views9.3K

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

Читать далее

ModLook — сканер регистров ModBus. Отмечаем 20-летие программы

Reading time2 min
Views25K
Сегодня я бы хотел рассказать о программе, с помощью которой я начинал изучать протокол ModBus и ПЛК. Я ей пользуюсь до сих пор, и лично видел её в использовании у нескольких наладчиков. Если кому-то интересна история её создания или исходники прошу под кат.

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

Как работает хэширование

Level of difficultyMedium
Reading time12 min
Views91K

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

Хэш-функции фундаментальны и используются повсюду.

Но что же такое хэш-функции и как они работают?

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

Приложение Getcontact светит вашими персональными данными, даже если вы им никогда не пользовались

Level of difficultyEasy
Reading time5 min
Views185K

Getcontact — мобильное приложение, позиционирующее себя как менеджер звонков и блокировщик спама. Появилось в конце 2017-го и стремительно взлетело на первые места магазинов приложений. Создатели сервиса оценивают свою аудиторию в 400+ миллионов пользователей.

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

Читать далее

Азы программирования для детей и подростков: актуальные инструменты обучения и немного личного опыта

Reading time6 min
Views14K

Привет, Хабр! Меня зовут Сергей Ребров, я работаю в команде машинного обучения в МТС. У меня две дочки, которых стараюсь знакомить с миром разработки, поэтому решил написать статью про обучение азам программирования детей и подростков. Есть личные кейсы, есть информация к размышлению, описываю и полезные, на мой взгляд, инструменты. Если для вас эта тема интересна - прошу под кат!

Читать далее

Конспект. STM32. CMSIS. LTDC

Level of difficultyEasy
Reading time25 min
Views9.5K

Данный конспект (гайд) предназначен для лиц, желающих ознакомиться с конфигурацией LTDC модуля микроконтроллеров STM на примере STM32F429ZIT6 подключенному по 16-битному RGB565 интерфейсу к дисплею TM043NBH02 с разрешением 480x272 и использованием одного слоя без внешней памяти для видеобуфера.

Читать далее

STM32 — Моделирование аналоговых сигналов и АЧХ (математическим методом)

Level of difficultyMedium
Reading time6 min
Views12K

Разработка устройства моделирования аналогового сигнала сложной формы с построением АЧХ на базе STM32F103ZET6

Перейти к статье

MacOS Monterey на Linux — быстро и просто?

Level of difficultyEasy
Reading time3 min
Views54K
Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.

image

Никакого Virtualbox, никакого Virtual Machine Manager. Из требований — только 100 Гб свободного места на диске и хотя бы 16 Гб оперативной памяти. В рунете я встречал описание похожих путей установки, вроде Docker-OSX или Sosumi. Но я бы хотел поделиться способом, который позволяет использовать актуальную версию MacOS (Sosumi — сразу минус) и не потратить уйму свободного времени на возню с конфигами и терминалом. Поехали.
Читать дальше →

Аппаратный bit banding CortexM3/M4(ARM), архитектура ядра, ассемблер, С/C++14 и капля метапрограммирования

Reading time9 min
Views25K

Введение


Внимание, это не очередная «Hello world»статья о том как помигать светодиодом или попасть в свое первое прерывание на STM32. Однако, я постарался дать исчерпывающие объяснения по всем затрагиваемым вопросам, поэтому статья будет полезна не только многим профессиональным и мечтающим стать таковыми разработчикам (как я надеюсь), но и начинающим программистам микроконтроллеров, так как тема эта почему-то обходится стороной на бесчисленных сайтах/блогах «учителей программирования МК».

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

Фантомный double в прошивках для ядер Cortex-M*

Level of difficultyMedium
Reading time8 min
Views14K

В последнее время появилось много микроконтроллеров на ядрах ARM Cortex-M*, которые поддерживают аппаратную реализацию математики плавающей запятой (FPU). В основном FPU работают с одиночной точностью (float) и её вполне достаточно для работы с сигналами, полученными с АЦП. FPU позволяет забыть о проблемах дискретизации и проблемах переполнения целочисленных вычислений. FPU быстр - все математические операции с одиночными float, кроме деления и взятия корня, занимают на Cortex-M4F один такт. Поэтому после перехода на Cortex-M4F мы вздохнули свободно и стали писать математику на float. Как же мы удивились, найдя в скомпилированном коде математические операции над double с программной, очень медленной эмуляцией.

В статье рассказывается, как обнаружить и исправить присутствие double в прошивках, где ядро аппаратно поддерживает тип float, но не поддерживает double.

Работа ведётся в среде IAR Embedded Workbench на примере реального кода на языке Си.

Читать далее

Чистый код. Часть 2

Reading time14 min
Views12K

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

Передача булевых аргументов

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

Читать далее

Инкрементальный энкодер: подключение и обработка его с помощью AVR (ATmega8/16/32/168/328)

Level of difficultyMedium
Reading time7 min
Views21K

В данной статье расскажу об энкодерах и попытаюсь объяснить, как их подключать и обрабатывать правильным способом с помощью микроконтроллера AVR (в примерах я использую ATmega8A-PU, но это должно работать на любом другом микроконтроллере, например, на ATmega32 или совместимом с Arduino ATmega168/328).

Читать далее

Работаем с Git: трудовые будни

Level of difficultyMedium
Reading time14 min
Views52K

Прошлая статья «Работаем с Git: первые шаги в GitHub» была посвящена установке, настройке Git и классическим операциям из набора для новичков GitHub. А теперь перейдём к практике и рассмотрим «горячие» сценарии, которые делают трудовые будни куда веселее. Или не очень.

Читать далее

WS2812B/WS2811 + STM32

Level of difficultyEasy
Reading time4 min
Views8.3K

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

код и видео с эффектами

Как делать прототипы печатных плат и не проклинать себя Или первый вариант прототипа печатной платы. Лайфхаки

Level of difficultyEasy
Reading time3 min
Views9.5K

Эта статья предназначена для тех, кто хочет отказаться от проектов на отладочных платах (Arduino, Nucleo, Discovery и другие) и испытать себя в разработке, программировании и отладке собственной печатной платы. У вас на это могут быть свои мотивы: размеры, устройств больше 10, эстетический вид или любые другие. В этой статье я хочу рассказать по пару лайфхаков при разработке таких схем.

Читать далее

Очередной этап сделайсама: микроконтроллеры + JS

Reading time6 min
Views3.9K

Привет, Хабр! Сегодня мы поговорим о том, как сделать систему управления отоплением в загородном доме своими руками, используя легкодоступные микроконтроллеры и свободное ПО…причем сделать её так, чтобы можно было запрограммировать работу нужных устройств при помощи моего любимого JavaScript. Под катом — разбор трех вариантов решения этой задачи (включая тот самый, который я выбрал), а также масса рассуждений о преимуществах и недостатках данного подхода. Всех любителей сделайсамов и очумелых ручек приглашаю под кат.

Читать далее

Обзор периферийной библиотеки FIL для микроконтроллеров STM32

Level of difficultyEasy
Reading time20 min
Views7.6K

Приветствую всех читателей моей первой статьи. Меня зовут Назаров Александр, я программист и резидент Ресурсного центра робототехники - структурного подразделения Донского государственного технического университета. Наши проекты направлены, в основном на мобильную робототехнику и его составляющие: изготовление механических узлов и их сборка, проектирование электрических схем и программирование микроконтроллеров.

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

Читать далее

Starting Electronics: руководство по веб-серверам на Arduino. Часть 4. Отображение состояния кнопки на веб-странице

Level of difficultyHard
Reading time5 min
Views5.4K


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

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

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

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

Information

Rating
Does not participate
Location
Ставропольский край, Россия
Date of birth
Registered
Activity