Как перестать писать на Asm и начать использовать C++ для STM32?

Суть проблемы в том, что мне в наследство достался достаточно большой архив ПО на Asm для микроконтроллеров семейства AVR8. В дальнейшем борьба за микросекунды привела нас к миграции на STM32 с использованием всё того же ассемблера. Во-первых, специфика работы подразумевает сокращение времени исполнения основного кода до минимума, во-вторых, ассемблер субъективно мне понятней и ближе. В данный момент задач становится всё больше, логика запутывается всё сильнее, обслуживать разросшийся код становится всё сложнее.

Хотелось бы надеяться, что плавный переход на C, C++ и дальнейшее использование RTOS и кусков ассемблерного кода изменят ситуацию, но тут-то и возникает основная проблема. В данный момент ST предлагает использовать для разработки CubeIDE с применением HAL. Помимо этого существуют StdPeriph, CMSIS и, подозреваю, целая куча других библиотек (QnA два года назад предлагали LibOpenCM3, например). Что же всё-таки выбрать в данной ситуации? Хочется и быстрого кода, и удобного управления кучей событий и прерываний, и читаемости.
  • Вопрос задан
  • 705 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fox_Alex
@Fox_Alex
Инженер электронщик
Если слишком много "узких" мест - возможно надо не тратить время на оптимизации и счет тактов, а взять FPGA или SoC и сделать специальную периферию под задачу? А в ядре или внешнем контроллере уже крутить алгоритмы, не требующие такой жесткой привязки к реальному времени. Опишите подробнее задачу, может подскажу как это можно решить.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Выберите профайлер и внутрисхемную отладку.
На основе этих метрик и будете переписывать проблемные участки кода на ASM

И кстати С++ для микроконтроллера, особенно с критичными по времени участкам кода, это излишнее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы