У меня возникла проблема с компиляцией кода С++ на микрочип stm32f4.
Цель
Я пытаюсь добиться нескольких вещей здесь:
- скомпилировать код C++ для обнаружения stm32f4 (что было успешно выполнено в базовой программе [с реализацией конструкторов и других специфических функций C++])
- написать код, используя библиотеку периферийных устройств, предоставленную ST (в данном случае я использую функциональность USART)
- Скомпилируйте код без использования коммерческой IDE (это задача по обучению) с помощью инструментов GNU.
Проблема
У меня есть два проекта, один из которых является проектом c и будет правильно компилироваться. Я также прошивал stm32f4 с выводом этого проекта, и он работал правильно. Второй проект использует тот же код с небольшими изменениями в файле make и именах файлов для компилятора C++ (никаких различий в коде). Проект C успешно компилируется, а проект C++ выдает ошибки.
Оба проекта и их вывод на терминал можно найти здесь: https://dl.dropboxusercontent.com/u/32204435/USART.tar.gz а>
Настраивать
Я использую Ubuntu 12.04.3 LTS 64bit. Я установил набор инструментов arm-none-eabi по инструкции на этом сайте: vedder.se/2012/07/get-started-with-stm32f4-on-ubuntu-linux/
Информация и анализ
Из того, что я могу сделать, это ошибка с поддержкой newlib в компиляторе arm-none-eabi-g++. Я не понимаю, почему возникает ошибка, поскольку между двумя проектами нет различий в коде. Функции из newlib, такие как printf, также приводят к подобным ошибкам, если они используются. В примерах USART я ограничил любую возможность использования проекта newlib (исключение только для типов данных). Похоже, что ошибка вызвана не новой библиотекой, а отсутствующим аппаратным заголовком (или известным как заглушки новой библиотеки) (syscalls.h). Я безуспешно пытался применить syscalls.h.
Может ли кто-нибудь помочь с созданием этого проекта с поддержкой C++ и, возможно, даже предложить решение для использования кода в newlib без ошибок (например, printf [или, я знаю, большой вопрос, cout из iostream])?
Я все еще учусь, мне 17 лет, и у меня нет учителя (самоуправляемого), поэтому может показаться неопытным, каким я и являюсь :) Ожидайте пробелов в знаниях.
С Рождеством!