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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
Chenii Санкт-Петербург
от 1 500 до 3 500 $
VMS Software Санкт-Петербург
от 110 000 до 130 000 ₽
22 февр. 2020, в 03:24
10000 руб./за проект
21 февр. 2020, в 21:48
12000 руб./за проект
21 февр. 2020, в 21:45
12000 руб./за проект