В Eclipse есть такая возможность как дымовая завеса неиспользуемых сейчас кусков кода. Якобы то, что не используется в коде визуально становится серой зоной отчуждения.
В этом тексте я написал как активировать эту опцию даже при сборке сторонними скриптами.
В этом тексте я собрал самые странные правила и рекомендации оформления исходных кодов, которые только попадались мне на работе в разных реальных компаниях.
Вот буквально несколько настоящих примеров из жизни. Парад нелепости.
Есть такая тема, как автоматическое выравнивание отступов в исходных текстах программ на Си или С++. Притом для этого есть специальные утилиты. Например clang-format или GNU indent.
В этом тексте я написал, как встроить процесс выравнивания исходных кодов прямо в систему сборки проекта.
Цель данного текста- показать, как интегрировать clang-format в процесс сборки прошивки. Просто в одно касание и выровнять код, и собрать бинари.
Программа это реализация алгоритма. А алгоритм это упорядоченная последовательность действий. Поэтому очень большое значение имеет правильный порядок исполнения программы.
В этом тексте я написал как автоматически выявить правильную последовательность инициализации
В программировании микроконтроллеров на выходе получается довольно много артефактов. Всё это надо как-то связать и заточить в архив, чтобы всегда можно было ассоциировать *.hex с нужным для него *.map и *.elf.
Логичным шагом является архивация всех этих файликов в *.tar архив. Один архив очень удобен при транспортировке программного обеспечения.
В этом тексте я написал как это можно провернуть средствами утилиты GNU Make.
В очередной тестировочной электронной плате появилась нужда выставлять напряжения на клеммах.
Существует очень остроумный способ собрать DAC используя PWM сигнал и аналоговый RC фильтр. На выходе будет желаемое напряжение. Причем, уровнем этого напряжения можно управлять цифровым образом из программы в микроконтроллере.
В программировании микроконтроллеров приходится определять порядок инициализации прошивки. Порядок тут всегда имеет значение.
Дело в том, что прошивка состоит из набора программных компонентов. Каждый компонент вызывает функции из других программных компонентов. Так происходит пере использование кодовой базы.
Чтобы всё это работало надо соблюдать правильный порядок инициализации.
В этом тексте я представил формальный алгоритм определения этого порядка.
По сути это топологическая сортировка ориентированного графа зависимостей программных компонентов.
В программировании микроконтроллеров на Си часто приходится писать драйверы для умных и навороченных ASIC чипов с управлением по I2C/SPI/MDIO интерфейсам.
Обычно перед запуском эти чипы надо правильным образом сконфигурировать.
Такие чипы всегда оперируют с реальными физическими величинами. Одновременно с этим ячейки памяти этих ASIC чипов - дискретные, двоичные. Поэтому все производители микросхем кодируют эти переменные бинарными кодами разной разрядности.
В этом тексте я показал как можно делать интерпретаторы этих величин.
Аудио кодек по сути это цифро-аналоговое устройство, где есть пара ADC + DAC. На входе обычно есть сумматор на операционных усилителях для подмешивания аналогово сигнала с разных проводов, есть еще аналоговые усилители. Высокоскоростной многоканальный интерфейс: I2S или TDM. И интерфейс I2C для того чтобы всем этим добром управлять.
В этой заметке я написал о своём опыте работы с ASIC аудиокодеком NAU8814.
Существует такое остроумное приспособление как гидротаранный насос. Его ещё называют гидро ударный насос или hydraulic ram.
Это чисто механический прибор, который преобразует кинетическую энергию потока жидкости в потенциальную энергию жидкости. Происходит это благодаря искусственно создаваемым гидравлическим ударам.
Это, пожалуй, единственный в технике пример, когда гидроудар приносит пользу, а не вред.
В этом тексте я расскажу о своём опыте конструирования экземпляра этого прибора.
В программировании микроконтроллеров часто возникает задача найти угол между векторами.
Это всяческие встраиваемые системы, где есть подвижные, вращающиеся детали: PTZ камеры, поворотные платформы для радаров, турели, ветрогенераторы, солнечные панели, SDR обработка и прочее.
В данном тексте я приведу простое и понятное решение задачи вычисления угла между векторами на языке программирования Си.
В программировании микроконтроллеров часто используют Eclipse с плагинами. Главным образом от незнания языков скриптов сборки (Make, Cmake, Ninjia и т п).
В этом тексте я напишут почему способ сборки из Eclipse c ARM плагинами — это тупиковый путь в разработке больших промышленных командных проектов.
И как можно частично компенсировать недостатки Eclipse с плагинами.
Как известно канальные CAN пакеты могут быть размером максимум 8 байт. Одновременно с этим, с более высоких уровней модели OSI могут поступить запросы передать огромные пакеты [ jumbo frame(ы) ]. Как же разрешить это противоречие?
Эту ситуацию призван распетлять протокол ISO-15765-2 (или попросту ISO-TP ).
Как известно, в широкой продаже не существует компьютеров с интерфейсов CAN. Зато во всех настольных компьютерах и LapTop(ах) есть USB. В связи с этим для отладки оборудования с CAN нужны всяческие переходники USB-CAN.
В этом тексте я покажу как можно проверить это изделие.