Ошибка: зарегистрируйте 'sp', неподходящий для глобальных переменных регистра на этой цели - PullRequest
0 голосов
/ 19 апреля 2020

Я играю с проектом для STM32 µ C. Я использую SW4STM32 верстак и CubeMX в системе Ma c OSX. Сам мой проект в порядке, все соответственно компилируется и ведет себя на устройстве, как и ожидалось.

Для дальнейшего изучения я хотел бы реализовать модульные тесты с использованием фреймворка CppuUTest . Я настроил все, получил мои тестовые каталоги и make-файл для настройки переменных MakefileWorker.

Однако при выполнении Makefile я получаю сообщение об ошибке:

error: 
  register 'sp' unsuitable for global register variables on this target

Эта ошибка возникает из-за системных вызовов. c (это файл, созданный CubeMX). Строка, вызывающая ошибку, выглядит следующим образом:

register char * stack_ptr asm("sp");

После моих исследований мне кажется, что для решения проблемы не существует простого обходного пути. Исходный код генерируется Cube и отлично работает при компиляции с помощью цепочки инструментов sw4stm32 (которая использует компилятор mcu g cc). Однако в цепочке инструментов CppUTest используется clang, который не может справиться с глобальными переменными регистра (как об ошибке говорит также).

Мой вопрос здесь:

У кого-нибудь из вас уже была такая же ошибка или больше опыта в настройке CppUTest для проекта sw4stm32 в системе OSx? У кого-нибудь есть идеи, как решить эту проблему?

Если вам нужна дополнительная информация / фрагменты кода от меня, я с удовольствием поделюсь этим.

Большое спасибо, ребята! Любая помощь будет высоко ценится: -)

Ура, Тоби

...