私は ARM Cortex-M マイクロコントローラーの世界を掘り下げ始めたばかりで、既存の開発ボードや使いやすい IDE を使用するのではなく、これらのベア メタルに直接入ることにしました。私は STM32F103 をプロトタイピング ボードにはんだ付けして、Launchpad から gcc-arm-embedded Toolchain を使って動作させようとしています。リンカ スクリプトなどに関するマニュアルを読むのに苦労した後、私は独自のリンカ スクリプトとスタートアップ コードを作成しました。基本的には、.data セクションを ROM から RAM にコピーし、.bss をゼロにして SystemInit() を呼び出します。 ST の標準周辺機器ライブラリから、基本的な uC 初期化を行い、最後に main() を呼び出します。
さて、Cortex M-3 開発について見つけたいくつかのチュートリアルから、リンカに -nostartfiles フラグを使用していることがわかりましたが、今疑問に思っています: その場合、自分で newlib を初期化する必要がありますか? それとも、GCC/newlib のデフォルトの開始ファイルを使用して、-nostartfiles をドロップする必要がありますか? しかし、その場合でも、.data を RAM にコピーしてベクター テーブルを設定するなどの初期化を行う必要があり、これにはカスタム リンカー スクリプトが必要です。では、どこでそれを行うのですか?
そして、私は C++ について考え始めたくありません!
では、そのような Cortex-M3 ベースのマイクロコントローラーとその libc を初期化するための推奨される方法は何ですか (周辺機器は数えません)?
前もって感謝します!