c++ コードを stm32f4 マイクロチップにコンパイルする際に問題が発生しています。
標的
ここでいくつかのことを達成しようとしています:
- C++ コードを stm32f4-discovery にコンパイルします (これは、必要最小限のプログラムで [コンストラクターとその他の c++ 固有の機能を実装して] 正常に実行されています)。
- ST が提供するペリフェラル ライブラリを使用してコードを記述します (この場合、USART 機能を使用しています)。
- GNU ツールを使用して、商用 IDE を使用せずにコードをコンパイルします (これは学習タスクです)。
問題
私は 2 つのプロジェクトをセットアップしています。1 つは ac プロジェクトで、正しくコンパイルされます。このプロジェクトの出力で stm32f4 もフラッシュしましたが、正しく実行されました。2 番目のプロジェクトでは、C++ コンパイラの make ファイルとファイル名に小さな変更を加えた同じコードを使用します (コードに違いはありません)。C プロジェクトは正常にコンパイルされ、C++ プロジェクトはエラーをスローします。
両方のプロジェクトとターミナルでの出力は、https : //dl.dropboxusercontent.com/u/32204435/USART.tar.gz にあります。
設定
Ubuntu 12.04.3 LTS 64 ビットを使用しています。この Web サイトの指示に従って arm-none-eabi ツールチェーンをインストールしました: vedder.se/2012/07/get-started-with-stm32f4-on-ubuntu-linux/
情報と分析
私ができることから、arm-none-eabi-g++ コンパイラでの newlib のサポートにエラーがあります。2 つのプロジェクトにコードの違いがないため、エラーが発生する理由がわかりません。printf などの newlib の関数を使用すると、同様のエラーが発生します。USART の例では、newlib を使用するプロジェクトの可能性を制限しました (唯一の例外はデータ型です)。このエラーは、newlib が原因ではなく、欠落しているハードウェア ヘッダー (または newlib スタブとして知られている) が原因のようです (syscalls.h)。syscalls.h を適用しようとしても失敗しました。
C++ サポートを使用してこのプロジェクトを構築するのを手伝ってくれる人はいますか? エラーなしで newlib のコードを使用するための解決策を提供してくれませんか?
私はまだ学んでいます。私は 17 歳で、教師がいない (自己主導型) ので、経験が浅いように見えるかもしれませんが、私は :) 知識のギャップが予想されます。
メリークリスマス!