Pull to refresh
32K+
188

Embedded SW/Firmware Engineer

50,5
Rating
479
Subscribers
Send message

STM32 + GCC + CMake + Win10

Level of difficultyEasy
Reading time14 min
Reach and readers8.9K

Написать на Си проект прошивки для микроконтроллера STM32F407VE. В качестве кросс компилятора выбрать GCC. В качестве системы сборки использовать CMake. В качестве HAL использовать фирменный HAL от STM и CMSIS от ARM. Собирать в Windows 10.

В данном тексте я покажу как можно организовать CMake скрипты сборки, чтобы собрать прошивку для микроконтроллера STM32.

Читать далее

CLI через Segger J-Link RTT на ARM Cortex-M (или однопортовая лапароскопия)

Level of difficultyEasy
Reading time5 min
Reach and readers8.5K

В этом тексте я написал про то как наладить интерфейс командной строки (CLI) по двухпроводному синхронному отладочному интерфейсу SWD.

Посылать в прошивку команды и получать ответ.

Чтобы можно было работать примерно как с UART, только по SWD.

Это когда прошивка в коде асинхронно получает текстовую строку от PC и отправляет текст обратно в сторону PC.

Читать далее

Отладка программ уровнями логирования (или медицинская карта вашей программы)

Level of difficultyEasy
Reading time10 min
Reach and readers8.3K

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

Чтобы с этим бороться придумали уровни логирования Log Levels.

Суть в том, чтобы из shell консоли в run time можно было включать или отключить логи для конкретных программных компонентов. Отдельными командами вы можете увеличивать или уменьшать многословность логирования.

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

Читать далее

CLI через CAN по ISO-TP (или утилита CANshell)

Level of difficultyEasy
Reading time11 min
Reach and readers9.5K

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

В разработке электроники часто делают электронные плату без UART, но с CAN .

Как же отлаживать софт и железо в таких случаях?

Читать далее

Сборка прошивки STM32 компилятором IAR при помощи GNU Make скрипта (IAR+Make=CI/CD)

Level of difficultyEasy
Reading time9 min
Reach and readers9.3K

В этом тексте я покажу как собрать прошивку при помощи компилятора IAR и GNU Make файлов.

Собрать прошивку компилятором IAR с помощью GNU Make — это не просто возможно, это стандартный подход для автоматизации сборки, например, на CI/CD серверах, где использование IDE неудобно. IAR поставляется с набором консольных утилит, которые делают этот процесс вполне прямолинейным.

Читать далее

Пуск DWT Таймера на ARM Cortex-M (или Ядерный Таймер)

Level of difficultyEasy
Reading time6 min
Reach and readers11K

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

В ARM Cortex-M процессорах помимо SysTick есть еще один 32 битный таймер по имени DWT. Этот таймер увеличивается на 1 каждый тик ядра.

Как же воспользоваться этим ядерным таймером?

Читать далее

Способы повышения надежности встраиваемого ПО

Level of difficultyEasy
Reading time9 min
Reach and readers17K

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

Как прошивка может противостоять всяческим флуктуациям во время своей работы и обезопасить себя от зависания или повреждения исходных данных?

Читать далее

Обзор Преобразователя USB-CAN от Marathon

Level of difficultyEasy
Reading time5 min
Reach and readers11K

В этом тексте я попробовал выполнить обзор преобразователя с USB на CAN.

В этот раз у меня на столе особый экземпляр: переходник с USB на CAN от фирмы Marathon. Полное название CAN-bus-USB Версии 4.0. Он же ГКМН.468351.017-03.

Читать далее

Интеграция утилиты Artistic Style в скрипт сборки прошивки

Level of difficultyEasy
Reading time6 min
Reach and readers6.4K

Есть утилита для автоматического выравнивания отступов в исходных кодах. Называется astyle.exe.

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

Читать далее

Типовая разметка памяти STM32F4

Level of difficultyEasy
Reading time8 min
Reach and readers12K

Как Вы могли заметить, у микроконтроллеров STM32F4 секторы NOR Flash памяти обладают разным размером: 16kByte(4 шт), 64kByte (1 шт), 128kByte ( 7+ шт.).

Это накладывает определенную специфику на программирование микроконтроллеров STM32F4.

Из каких секций обычно состоит Flash память микроконтроллерной программы?

В этом тексте я предлагаю простое решение проблемы разметки памяти для случая работы с микроконтроллерами STM32F4.

Читать далее

Чтение и Запись Параметров по UDS

Level of difficultyEasy
Reading time19 min
Reach and readers7.8K

В данном тексте я произвел смысловой перевод фрагментов спецификации протокола UDS. Той его части, которая поясняет механизм чтения и записи параметров.

Как многие уже знают UDS протокол позволяет читать и писать реальные физические параметры автомобильного агрегата.

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

Вот об этом всем и поговорим.

Читать далее

Чтение и запись физической памяти по протоколу UDS

Level of difficultyEasy
Reading time12 min
Reach and readers6.8K

В данном тексте я произвел смысловой перевод UDS стандарта ISO-14229 с английского на русский. А конкретнее ту его часть, которая рассказывает про то, как читать и писать память в микроконтроллере. UDS протокол позволяет читать и писать физическую память на микроконтроллере.
Для этого в протокол заложены спец. пакеты о которых и поговорим.

Читать далее

Переходник с USB на CAN из Отладочной Платы JZ-F407VET6

Level of difficultyEasy
Reading time7 min
Reach and readers12K

В разработке электроники часто нужны переходники с USB на CAN.

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



Читать далее

Какой Может быть CLI в Микроконтроллере (или Курс Молодого Бойца)

Level of difficultyEasy
Reading time8 min
Reach and readers13K

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

Прежде всего CLI — это первичный лог загрузки прошивки. Инициализация микроконтроллера — это многостадийный процесс, в котором многое может пойти не по плану. Поэтому первое, что вы должны увидеть в консоли — это зеленый лог загрузки программы.

Читать далее

Пошаговая GDB отладка прошивки STM32 из консоли cmd

Level of difficultyEasy
Reading time5 min
Reach and readers11K

Порой бывает так, что вы скачиваете open-source репозиторий, а там нет файлов .project и .сproject для eclipse или файлы .project и .сproject есть, но они по каким-то причинам повреждены и IDE их не может открыть.

Тем не менее прошивка собирается командой make all. Ты ее прошиваешь и LED не мигает. Очевидно, что прошивка зависла. Где-то свалилась в HardFault_Handler.

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

Читать далее

Ортодоксально Каноническая Прошивка (ОКФП)

Level of difficultyEasy
Reading time4 min
Reach and readers10K

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

Читать далее

Протокол TBFP

Level of difficultyEasy
Reading time6 min
Reach and readers12K

В этом тексте я бы хотел рассказать про простой бинарный протокол, который я сам придумал для всяческих нужд при разработке приборов на микроконтроллерах. Называется он TBFP (Trivial Binary Frame Protocol)

Читать далее

Размещение глобальных констант по фиксированным адресам

Level of difficultyEasy
Reading time4 min
Reach and readers9K

В программировании микроконтроллеров порой надо сделать так, чтобы после сборки артефактов в прошивке глобальные константы оказались в строго заданных адресах NOR Flash памяти. Причем при пересборке проекта эти адреса оставались прежними.

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

Потом это требование международного стандарта программирования ISO-26262.
Делается для того, чтобы появилась возможность менять значения в этом интервале утилитой TunerPRO перед прошивкой бинаря.

Фиксированные адреса констант позволят вам всегда иметь один и тот же *.xdf файл для утилиты TunerPRO.

Читать далее

Обзор утилиты TunerPro (или const volatile)

Level of difficultyEasy
Reading time12 min
Reach and readers12K

TunerPRO это бесплатный бинарный редактор прошивок. Это аналог STM32Studio.
Эта программа позволит вам редактировать константы в готовом bin файле. Минуя стадию повторной пере сборки всего проекта прошивки. Можно сказать, что TunerPRO хакерская tool-а.

Эта утилита связывает воедино всю информацию про переменные. Это адрес ячейки памяти в бинаре, название физической величины, размерность переменной, размер параметра, формат ее хранения в памяти, имя переменной, множитель, единицу измерения, максимальное и минимальное значение. В то время как тот же *.map файл дает только сведения про имя адрес в памяти и размер.

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

Information

Rating
189-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Инженер встраиваемых систем, DevOps-инженер
Старший
Git
Bash
CI/CD
C
Встраиваемая система
Программирование микроконтроллеров
Разработка программного обеспечения
Алгоритмы и структуры данных
Системное программирование
Разработка драйверов