chakokuのブログ(rev4)

日々のごった煮ブログです

ARM用開発環境を構築してみる(適当に。。ビルドまで)

STM32用のビルド環境を構築するにあたり、必要なツール類がすべて入ったお任せパッケージを使うと何がどうなっているのか全く分からないので、、適当にGCCのツールを集めてコマンドラインベースの開発環境を作ってみることにした。最終的には、Interface誌で特集していたドローンキット(STEVAL-DRONE01)をベースに姿勢制御ソフトを開発したい(そもそも制御工学よく分かっておらず。さらにクオータニオンなんてさらに意味不明)。
ARMのビルド環境の詳細がよくわかっていないが、、以下のドキュメントを見ながら入れるようである。
The xPack GNU Arm Embedded GCC | The xPack Project

十分に調べてないけど、、どうやらDocker環境を作ってその中でビルド環境を構築するようである。うーん、Dockerか。。素のCygwinに入れるようなものではないということか。。
もう少し調べると、win32用にビルドされた、gcc-arm-none-eabiパッケージもあるようだ。
以下からgcc-arm-none-eabiを落とせという記事もある。
4.8-2013-q4-major : Series 4.8 : GNU Arm Embedded Toolchain

Windows版のgccパッケージを落としてみる
gcc-arm-none-eabi-4_8-2013q4-20131204-win32.exe (md5)

Cygwinの/usr/local/配下に展開してみた

$ ls /usr/local/GNUToolsARMEmbedded/4.8_2013q4/bin/
arm-none-eabi-addr2line.exe   arm-none-eabi-gdb.exe
arm-none-eabi-ar.exe          arm-none-eabi-gprof.exe
arm-none-eabi-as.exe          arm-none-eabi-ld.bfd.exe
arm-none-eabi-c++.exe         arm-none-eabi-ld.exe
arm-none-eabi-c++filt.exe     arm-none-eabi-nm.exe
arm-none-eabi-cpp.exe         arm-none-eabi-objcopy.exe
arm-none-eabi-elfedit.exe     arm-none-eabi-objdump.exe
arm-none-eabi-g++.exe         arm-none-eabi-ranlib.exe
arm-none-eabi-gcc.exe         arm-none-eabi-readelf.exe
arm-none-eabi-gcc-4.8.3.exe   arm-none-eabi-size.exe
arm-none-eabi-gcc-ar.exe      arm-none-eabi-strings.exe
arm-none-eabi-gcc-nm.exe      arm-none-eabi-strip.exe
arm-none-eabi-gcc-ranlib.exe  gccvar.bat
arm-none-eabi-gcov.exe

vオプションで詳細を確認。デフォルトのパスは、/home/build/work/GCC-4-8-buildなのか。。? まぁそれはなんとかなるとして。。

$ /usr/local/GNUToolsARMEmbedded/4.8_2013q4/bin/arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=C:\cygwin64\usr\local\GNUToolsARMEmbedded\4.8_2013q4\bin\arm-none-ea
bi-gcc.exe
COLLECT_LTO_WRAPPER=c:/cygwin64/usr/local/gnutoolsarmembedded/4.8_2013q4/bin/../
lib/gcc/arm-none-eabi/4.8.3/lto-wrapper.exe
Target: arm-none-eabi
Configured with: /home/build/work/GCC-4-8-build/src/gcc/configure --build=i686-l
inux-gnu --host=i586-mingw32 --target=arm-none-eabi --prefix=/home/build/work/GC
C-4-8-build/install-mingw 

STM32用にLチカ作るとして、startupルーチンとか、メモリマップに基づくビルド情報も必要なのだが、、それはどこから手に入れればいいのやら。。
ディレクトリを掘ると、startupルーチンはサンプルに置かれていた。
GNUToolsARMEmbedded/4.8_2013q4/share/gcc-arm-none-eabi/samples/startup/startup_ARMCM4.S
cygwin環境にmakeを入れてから、、以下でお試しソースのビルドはできた。

export PATH=/usr/local/GNUToolsARMEmbedded/4.8_2013q4/bin/:$PATH
make clean
make CORTEX_M=4

サンプルソースコンパイルできたので、、次はST Link経由でのバイナリ転送とデバッグか。。
安いST Link互換品をHiLetgo様に注文済みなので、ST Link互換品が届いたら繋いでみる予定

ご参考URL
マイコン徹底入門 | STM32で組み込みシステム開発
マイコン徹底入門:導入編:オープンソースでCortex-M3/STM32の開発環境を無償構築
OpenOCD + ST-LinkでFirmware書き込み - ryochack.blog
ST-Link v2 を Windows10 上の OpenOCD で利用できるようにする
買ってみたSTM32解説本(安い)
Getting Started With STM32 Nucleo Development (English Edition)

ST LINKを使っておられる記事
YES! STM32 einchip mikrokontroller!