
В программировании ARM Cortex-M микроконтроллеров обычно код исполняется из on-chip NOR Flash памяти.
Однако иной раз надо разместить Си-функции в RAM памяти.
В этом тексте я написал как запустить функцию из оперативной памяти.
Embedded SW/Firmware Engineer
В программировании ARM Cortex-M микроконтроллеров обычно код исполняется из on-chip NOR Flash памяти.
Однако иной раз надо разместить Си-функции в RAM памяти.
В этом тексте я написал как запустить функцию из оперативной памяти.
Иной раз возникает такая ситуация, что надо получить доступ к устройству висящему под потолком.
В этом тексте я расскажу как запустить беспроводную консоль на микроконтроллере.
Надо запустить NVRAM на микроконтроллере, где нет возможности дописывать интервалы памяти.
В этом тексте я показал как организовать NVRAM на основе широко распространенного программного компонента LittleFS.
В программировании часто приходится писать программные компоненты, которые, в общем очень похожи друг на друга по своей структуре и API.
В заметке я представил простую утилиту r.exe для авто-замены токенов в файлах и названиях файлов.
Системы Lockstep — это отказоустойчивые компьютерные системы, которые выполняют один и тот же набор операций одновременно и параллельно.
Происходит избыточность (дублирование), которое позволяет обнаруживать и исправлять ошибки: выходные данные операций Lockstep можно сравнить, чтобы определить, произошла ли ошибка.
В программировании микроконтроллеров эпизодически приходится решать задачу о выявлении пересечения интервалов.
На первый взгляд простая задачка, однако, как оказалось, реализовать такое в коде - это вовсе нетривиальная задачка. Но обо всём по порядку...
В этой заметка я представил свой алгоритм определения пересечений интервалов и его разбор.
Итак вам надо клонировать репозиторий с компанейского репозитория и git просит какие-то непонятные пароли.
Знакома ситуация?
В этой заметке я написал как настроить ssh ключи.
Периодически сталкиваюсь со сложностью выбора билетов на региональные автобусные рейсы. Прямых рейсов нет, перевозчиков несколько, стоимость разная, время прибытия тоже разное. Порой ручной выбор двух подходящих билетов затягивается на несколько часов.
Я решил положить этому конец и распетлять задачу при помощи ЭВМ.
Постановка задачи
Надо доехать из города A в город C. При этом надо совершить пересадку в городе B. На сайтах есть множество билетов в направлении A->B и B->C. Надо выбрать два билета так чтобы:
1--минимальное время пересадки
2--минимизировать стоимость поездки
3--минимизировать общее время в пути
Надо написать программу. Буквально загружаешь все доступные в продаже билеты, запускаешь программу и получаешь целеуказание на самый оптимальный комплект билетов.
В настоящее время акселерометры встраивают куда только можно: в часы, автомобили, самокаты, LapTop-ы и прочее.
В данном тексте изложена концепция распознавания аварии по данным с MEMS акселерометра.
В этом тексте Вы узнаете зачем программисту микроконтроллеров надо знать дифференциальную геометрию.
В работе на планерках и от коллег порой такое услышишь, что это становится либо цитатой или мемом. Вот небольшая подборка того, что мне понравилось за 12 лет работы программистом МК. Некоторые цитаты имеют автора другие, просто безымянные афоризмы сродни народному творчеству. Итак обо всём по порядку...
FC7300F8MDT — это микроконтроллер компании FlagChip as FlagShip.
В этом тексте я показал, как можно запрограммировать микроконтроллер FC7300F8MDT, буквально на пустом компьютере.
В данном тексте я написал про то, как я написал загрузчик для российского микроконтроллера MIK32 (K1948BK018).
Это, пожалуй, первый случай, когда столько функционала мне пришлось утрамбовать всего в 8kByte ROM памяти.
При продолжительной разработке на одном семействе микроконтроллеров получается так, что приложение намертво привязано к конкретному семейству микроконтроллеров и его SDK, так как напрямую использует HAL от вендора.
Это особенно явно проявляется в таких случаях, когда надо срочно переносить прошивку на другой микроконтроллер.
Получается, что приходится заново писать всю прошивку, всё приложение, драйвера всех ASIC-ов. Драйвер светодиодов, драйвер кнопок, драйвер ASICов c I2C SPI управлением. В общем всё переписывать. Поменяли MCU и пришлось переписать все файлы в репозитории. Нормально так да?
В этом тексте я написал, как можно обойти эту проблему.
Существует классическая задача:
«Каждый гость на встрече обменивается рукопожатием с другим. Всего было 78 рукопожатий. Сколько гостей пришло на встречу?»
Эта задача представляет интерес только лишь потому, что её нынче задают при устройстве на работу. Поэтому надо уметь её решить и объяснить решение.
Есть 1000 одинаковых колб с прозрачной жидкостью.
В 999 колбах вода, а в одной случайной - отрава.
Если мышь попробует отраву, то она погибнет через 1 час.
Как найти отравленную колбу за минимальное время?
GNU Make - это консольная утилита, которая запускает другие консольные утилиты в желаемой последовательности согласно скрипту. Только и всего.
В этом тексте я показал, как можно организовать самостоятельно написанные make скрипты для микроконтроллерных проектов.
В программировании микроконтроллеров периодически приходится писать клиентские PC программы для загрузки *.hex файлов в микроконтроллер через загрузчик.
Обычно в названии этих утилит присутствует слово loader.
В этом тексте я попробовал порассуждать на тему того, каким же атрибутами должна обладать эта самая утилита FW_Loader.
Существуют бесплатные статические анализаторы для Си кода. Среди них splint и cppcheck.
Статический анализатор - это такая консольная программа, которая проверяет исходные коды до компиляции. Своего рода автоматическая инспекция программ.
В этом тексте я представил инструкцию про то, как интегрировать статический анализ кода в общий скрипт сборки проекта.
Суть этой короткой заметки в том, чтобы показать, как просто и лаконично происходит подключение разнообразных статических анализаторов к проекту, который собран скриптами сборки GNU Make.
В этом тексте я написал про то, как настроить рабочее окружение для разработки на российском микроконтроллере MIK32 (K1948BK018).
Дана функция чтения и записи EEPROM dword.
Запись и стирание возможно только по выровненному адресу и пословно.
Надо поверх EEPROM API сделать функцию чтения, записи и стирания для произвольных массивов байт, по произвольному адресу (NVRAM).
Простыми словами надо состыковать Dword API с Byte API.
В этом тексте я представил простой наивный алгоритм решения данной задачи.