Search
Write a publication
Pull to refresh
165
20.8

Embedded SW/Firmware Engineer

Send message

ARM Cortex-M: Исполнение кода из RAM памяти

Level of difficultyEasy
Reading time6 min
Views3.7K

В программировании ARM Cortex-M микроконтроллеров обычно код исполняется из on-chip NOR Flash памяти.

Однако иной раз надо разместить Си-функции в RAM памяти.

В этом тексте я написал как запустить функцию из оперативной памяти.

Читать далее

Пуск Беспроводной CLI на Микроконтроллере

Level of difficultyEasy
Reading time6 min
Views4.7K

Иной раз возникает такая ситуация, что надо получить доступ к устройству висящему под потолком.

В этом тексте я расскажу как запустить беспроводную консоль на микроконтроллере.

Читать далее

Пуск LittleFS (NVRAM с запретом до-записи flash)

Level of difficultyEasy
Reading time16 min
Views1.6K

Надо запустить NVRAM на микроконтроллере, где нет возможности дописывать интервалы памяти.

В этом тексте я показал как организовать NVRAM на основе широко распространенного программного компонента LittleFS.

Читать далее

Утилита R

Level of difficultyEasy
Reading time4 min
Views4.6K

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

В заметке я представил простую утилиту r.exe для авто-замены токенов в файлах и названиях файлов.

Читать далее

FC7300F8MDT: Lockstep (или как МК выявляет сбои)

Level of difficultyEasy
Reading time6 min
Views1.9K

Системы Lockstep — это отказоустойчивые компьютерные системы, которые выполняют один и тот же набор операций одновременно и параллельно.

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

Читать далее

Задача о пересечении интервалов (или зачем программисту MК стабильная сортировка)

Level of difficultyEasy
Reading time7 min
Views7.2K

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

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

В этой заметка я представил свой алгоритм определения пересечений интервалов и его разбор.

Читать далее

Настройка SSH для коммитов в репозиторий

Level of difficultyEasy
Reading time4 min
Views2.7K

Итак вам надо клонировать репозиторий с компанейского репозитория и git просит какие-то непонятные пароли.
Знакома ситуация?

В этой заметке я написал как настроить ssh ключи.

Читать далее

Задача о Выборе Билетов

Level of difficultyEasy
Reading time6 min
Views1.8K

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

Я решил положить этому конец и распетлять задачу при помощи ЭВМ.

Постановка задачи

Надо доехать из города A в город C. При этом надо совершить пересадку в городе B. На сайтах есть множество билетов в направлении A->B и B->C. Надо выбрать два билета так чтобы:

1--минимальное время пересадки

2--минимизировать стоимость поездки

3--минимизировать общее время в пути

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

Читать далее

Определение Аварии по MEMS Акселерометру

Level of difficultyEasy
Reading time6 min
Views1.7K

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

В данном тексте изложена концепция распознавания аварии по данным с MEMS акселерометра.

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

Читать далее

Цитаты про программирование и разработку в общем

Level of difficultyEasy
Reading time4 min
Views4K

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

Читать далее

Настройка ToolChain-a для программирования MCU FlagChip FC7300F8MDT

Level of difficultyEasy
Reading time20 min
Views1.8K

FC7300F8MDT — это микроконтроллер компании FlagChip as FlagShip.

В этом тексте я показал, как можно запрограммировать микроконтроллер FC7300F8MDT, буквально на пустом компьютере.

Читать далее

EEPROM Загрузчик для MIK32 (K1948BK018)

Level of difficultyEasy
Reading time9 min
Views3.9K

В данном тексте я написал про то, как я написал загрузчик для российского микроконтроллера MIK32 (K1948BK018).

Это, пожалуй, первый случай, когда столько функционала мне пришлось утрамбовать всего в 8kByte ROM памяти.

Читать далее

Proxy MCAL для Микроконтроллера

Level of difficultyEasy
Reading time9 min
Views2.2K

При продолжительной разработке на одном семействе микроконтроллеров получается так, что приложение намертво привязано к конкретному семейству микроконтроллеров и его SDK, так как напрямую использует HAL от вендора.

Это особенно явно проявляется в таких случаях, когда надо срочно переносить прошивку на другой микроконтроллер.

Получается, что приходится заново писать всю прошивку, всё приложение, драйвера всех ASIC-ов. Драйвер светодиодов, драйвер кнопок, драйвер ASICов c I2C SPI управлением. В общем всё переписывать. Поменяли MCU и пришлось переписать все файлы в репозитории. Нормально так да?

В этом тексте я написал, как можно обойти эту проблему.

Читать далее

Задача про рукопожатия

Level of difficultyEasy
Reading time2 min
Views5.6K

Существует классическая задача:

«Каждый гость на встрече обменивается рукопожатием с другим. Всего было 78 рукопожатий. Сколько гостей пришло на встречу?»

Эта задача представляет интерес только лишь потому, что её нынче задают при устройстве на работу. Поэтому надо уметь её решить и объяснить решение.

Читать далее

Задача про мышей и отраву

Level of difficultyEasy
Reading time6 min
Views12K

Есть 1000 одинаковых колб с прозрачной жидкостью.

В 999 колбах вода, а в одной случайной - отрава.

Если мышь попробует отраву, то она погибнет через 1 час.

Как найти отравленную колбу за минимальное время?

Читать далее

Основы по GNU Make

Level of difficultyEasy
Reading time12 min
Views7K

GNU Make - это консольная утилита, которая запускает другие консольные утилиты в желаемой последовательности согласно скрипту. Только и всего.

В этом тексте я показал, как можно организовать самостоятельно написанные make скрипты для микроконтроллерных проектов.

Читать далее

Атрибуты Хорошего Loader-a

Level of difficultyEasy
Reading time7 min
Views3.2K

В программировании микроконтроллеров периодически приходится писать клиентские PC программы для загрузки *.hex файлов в микроконтроллер через загрузчик.

Обычно в названии этих утилит присутствует слово loader.

В этом тексте я попробовал порассуждать на тему того, каким же атрибутами должна обладать эта самая утилита FW_Loader.

Читать далее

Статический Анализ С-кода

Level of difficultyEasy
Reading time4 min
Views2.8K

Существуют бесплатные статические анализаторы для Си кода. Среди них splint и cppcheck.

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

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

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

Читать далее

Настройка ToolChain-а Cборки Прошивок для MIK32 (K1948BK018 + C + GCC + GNU Make + OpenOCD)

Level of difficultyEasy
Reading time17 min
Views3.3K

В этом тексте я написал про то, как настроить рабочее окружение для разработки на российском микроконтроллере MIK32 (K1948BK018).

Читать далее

NVRAM из EEPROM

Level of difficultyEasy
Reading time3 min
Views2.9K

Дана функция чтения и записи EEPROM dword.

Запись и стирание возможно только по выровненному адресу и пословно.

Надо поверх EEPROM API сделать функцию чтения, записи и стирания для произвольных массивов байт, по произвольному адресу (NVRAM).

Простыми словами надо состыковать Dword API с Byte API.

В этом тексте я представил простой наивный алгоритм решения данной задачи.

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

Information

Rating
1,433-rd
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Embedded Software Engineer, DevOps
Senior
Git
Bash
CI/CD
C
Embedded system
Programming microcontrollers
Software development
Algorithms and data structures
System Programming
Development of drivers