Windows10対応軽量シンプルなARMマイコンのGCCビルド環境を構築する(2020年度版)
OpenOCD for Windows is HERE!
↑ねむいさんは自前ビルドのOpenOCDバイナリ公開してます。
解説はこのバイナリを基にすすめますので4649!
当記事はWindows環境下におけるARMマイコンの開発環境構築を目指してはおりますが
私が公開しているプロジェクトをビルド/デバッグするために必要な最小限の手順の
指南という位置づけです。
はっきり言いますが初学者向きの解説ではありません。専門的な語句の意味や
GNUMakeを駆使したコマンドラインビルドの方法を熟知している前提で話を進めます。
2019年現在は無料のEclipseベースの開発環境GNUARMECLIPSE、
STM32限定でフル機能が使えるAtollic TrueStudioとMDK-ARMの2品種、
そしてオンラインコンパイラ+ライブラリ等の強力なサポートがあるmbedとかが
充実しており、一般的な事柄を学びたい初学者の方にはそちらを強くお勧めいたします。
ちなみにねむいさんはメーカサポートが無い素のEclipseを使うと「あわびゅ!」と
叫びながら全身から血を吹き出して死ぬ奇病に罹っていて、且つCygwinを使うと
バストサイズが強制的に20cm減のマイナス補正を喰らい(=フラットなB(Breasts)特性
を持ついないさんと同レベルに堕ちてしまい)虹裏メイドねむいさんとしての
あいでんてぃてぃを完全に失ってしまうため、当ぶろぐでは絶対に扱いません。
※要注意※
ツール群の盛衰や時勢により時々刻々と本記事の内容は変化していきます!
●必要なもの
1.ARM用GCCコンパイラ
とにもかくにもまずはこれです。
現在はLaunchpad.netが提供し、ARM本家から配布されている
GNU Tools for ARM Embedded Processors
を強くお勧めします。表向きCortex-Mx向けとなっておりますが、LPC2388等の
ARM7TDMIもしっかりサポートしており古い品種でも問題なくビルドが可能です。
今回の手順ではダウンロードした上記コンパイラをC:/Devz/ARM/launchpad
直下に解凍するものとします。解凍後launchpadフォルダには
arm-none-eabi,bin,share,libの4つのフォルダがあるのが正解です。
Windows環境下で動くARM用GCCコンパイラとして、Bleeding Edge Toolchain
なんかもあります。いずれもABIはEABIで2015年以降流通している
最新のGCCコンパイラはもはやすべてEABIとなっています。
2.サポートツール群
ねむいさんが公開しているプログラムはコマンドラインビルドを想定しています。
IDE全盛の昨今は古臭いものとなってしまいましたがmakeコマンドでビルドする
というベタベタなクラシックな手法を敢えてとっています。
makeの他にunixコマンドのechoやrmなどを用いているので、これらのunix
ライクなコマンドをネイティブなWindows環境下で動かすことができる
Coreutilsを使用します。
a.Coreutils本体
有志の方々が作成されたCoreutilsの"Binaries"のリンク先をダウンロードし、
2バイト文字やスペースを含まない任意のフォルダに解凍してください。
b.GNUMake3.81
次にGNUMakeを同様にダウンロードしたあと解凍しCoreutilsを解凍した
場所と同じフォルダに置いてください。
c.サポートDLL群
最後にmakeをダウンロードしたページの下にある"dependencies zip file
(中身はlibintl3とlibiconv2)"をダウンロードしGNUMakeと同様の処置を
してください。
今回の手順では上記3点がすべてC:/Devz/Coreutils/bin内にあるものとします。
このbinフォルダ内にmake,echo,rm等のunixライクコマンドとdepedenciesの
libintl3.dll,libiconv2.dllが存在していることを必ず確認して進めてください。
ここで間違ってると下述のPN2からmakeを呼び出す段階でコケて失敗します。
よくやる間違いが、最初のCoreutilsを解凍して出てくるbinフォルダの中に
さらにmakeやdepedenciesの入ったbinフォルダを置いてしまうことです。
C:/Devz↑ねむいさんは上記のディレクトリ構造にしています。
├ARM
|└launchpad
| └bin (←GCCコンパイラのバイナリがある場所)
|└ocd(←openocd.exeのある場所)
└Coreutils
└bin (←make他unixライクコマンド群のある場所)
以下この構成で話を進めます。
ちなみにAVRToolChainでもARMと同じような感じのディレクトリ構成にすると、
同じ感じでコマンドラインビルドが出来ますのでおすすめです。
※以前はWinAVRのutils配下にあった同様のファイル群の使用を推奨していましたが、
WinAVRは開発が停止し数年経ち、フリーで利用できるAVRToolchainに主流が移行
したのでもう一切使用しませんし使ってはいけません。
2.5.sh.exeが見つかりません対策(必ずしも必要ではない)
ネット上で手に入るARMマイコンのGCCプロジェクトの中ではWinAVRのmakefileを
ベースにしたものがいくつか存在し、そこにはshell関数などのbashに依存した記述が
数か所あります。この記述が含まれているとまともにビルドができません。
当ぶろぐで公開してるプロジェクトはmakefileからbash(/bin/sh)に依存して
いる記述はすべて排しておりますが、他の方のプロジェクトをビルドする際の
回避措置として紹介します。
こちらからwin-bash.zipをダウンロードし、解凍して出てきたwin-bash.exeを
Coreutilsのbinフォルダに突っ込んでください。次にmakefile ファイル中に
記載されているはずのSHELLの設定を以下のように書き換えてください。
SHELL = sh
↓
SHELL = win-bash.exe
bash.exeは自身のファイル名によって特殊な動きをするので横着してwin-bash.exeの
方をsh.exeとリネームしてしまうと逆にビルドが通らなくなります。ご注意ください。
3.エディタ
メモ帳でセコセコ編集してコマンドプロンプトからmakeを実行してもいいですけど
makeを引数つきで呼び出せられるエディタを使えばIDEのように使えます!
ねむいさんのお勧めはProgrammers Notepad2(PN2)です。素のEclipseは(ry
ビルド時の解説はこのPN2を使用して解説します。
注:必ずStable2.3以降を使用してください。
また、日本語入力に対応するために下記の要領で多バイト文字の設定を
”Shift-JIS”に変更しておいてください。
それとPN2のインストール先は無用なトラブルを避けるためスペースや2バイト
文字が混ざるディレクトリは避けてください。
4.デバッガソフトウエア&ハードウエア
ARM用のデバッガはホビーユーザーご用達のGDBサーバであるOpenOCDを
使用します。次回の記事で使用法を紹介します。
また、MCUとJTAG/SWDで通信するハードウエアはFTDIのFT2232系JTAG-I/Fを
使用するのが私の中でスタンダードになっています。
これらに関しても次回詳しく紹介します。
●下準備とビルド
※以後はエディタとしてPN2をインストールして使うことを想定して解説します。
1.ソースコードの展開
今回の凡例として、STM32F4向けの液晶表示プログラムをダウンロードして
ローカルに落としたzipファイルをローカルフォルダに展開します。
このときディレクトリパス(アドレス)にスペースや2バイト文字が絶対に
入らないようにしてください。
2.makeファイルの編集
PN2がインストールされている場合、拡張子pnprojのアイコンをダブルクリック
すると下のような画面になると思います。"makefile"をクリックしてmakefileの
編集画面を出しましょう。
OpenOCDとarm-none-eabiのファイル名は特殊なことをやらない限りは
もう変えないようにしてください。
下画像の要領でそれぞれの環境に合わせてARM用GCCコンパイラ、サポートツール
群、デバッガのディレクトリパスを設定していきます。パスの区切りは"¥"
ではなく"/"を使用してください。
ディレクトリパスはスペースや2バイト文字が絶対に入らないように
してください。大事なことなので二度言います!!
makefileの書き方の作法は此処では解説しないので
各自詳細は調べて下さい。
3.PN2の設定
PN2をインストールしたての人は、makeコマンドをPN2の"TOOL"から
呼び出すことが出来るように以下の要領でmakeコマンドを引数"all"
つきで登録してください。
その後、"build","clean"の引数についても同様に登録してください。
重要:Windows環境変数のPATHは設定する必要はありません!
下手に設定しているとビルドが通らなくなることがあるのでご注意ください。
4.ビルド開始
デフォルトでは評価ボードの設定はSTM32F4Discovery向けになっています。
また、各評価ボード設定時の各ピン配置を知りたい場合は同梱のdoc/Boards.txtを
参照してください。
設定が終わったら"Tool"から"make all"を呼び出しビルド開始です。
ビルドが完了したらメモリ使用量などの情報がコンソール上に現れます。
もしコンパイルエラーなどが発生しビルドが止まったら赤色で強調表示されるので
エラー箇所の特定も簡単です。
上記の液晶表示プログラムはデフォで下記のライブラリ/ドライバを
有効にしてます。
-libjpeg
-libpng
-giflib
-FONTX2ドライバ
-抵抗膜式/容量性タッチパネルドライバ(特定のボード限定)
-HelixMP3デコーダ(特定のボード限定)
-HelixHE-AACデコーダ(特定のボード限定)
数分ほど時間がかかります。Warningが出ますがビルド時の設定喚起の
ためにソースコード中に"#warning"プリプロセッサを敢えて入れてる箇所が
いくつかありますので気にしないでください。
エラーが出てビルドが止まった場合は各種設定を見直しましょう。殆どの場合、
makefile中でPATHの設定を誤っています。
ちなみに"make all"はコンパイルしたオブジェクトを全部消してまっさらに
してからビルド、"make build"はすでにオブジェクト吐かれたソースはスルー
してビルド(ソースコードを一部書き換えてカット&トライしたいときに最適)です。
"make clean"はその名のとおり生成されたelfやhexファイル含めてアセンブラ
リストファイルやオブジェクトをまるっと消去してしまいます。
お次はターゲットCPUへの書き込み&デバッグですが…次回に続きます。
-
免責・連絡先は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (116)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (13)
- FPGA (4)
- GPS/GNSS (19)
- MISC (81)
- STM8 (2)
- Wirelessなアレ (16)
- おきぱ (1)
- ブラウザベンチマーク (28)
- 日本の自然歩道 (25)
- STM32U0はぢめました
⇒ ねむい (08/07) - STM32U0はぢめました
⇒ ひかわ (07/28) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (05/17) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - いろいろ試す61(と今年の反省会)
⇒ ねむい (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/01) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (12/31) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ひかわ (12/31)
- October 2024 (1)
- September 2024 (1)
- August 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (1)
- April 2024 (1)
- March 2024 (1)
- February 2024 (2)
- January 2024 (1)
- December 2023 (4)
- November 2023 (2)
- October 2023 (2)
- September 2023 (1)
- August 2023 (2)
- July 2023 (1)
- June 2023 (2)
- May 2023 (3)
- April 2023 (1)
- March 2023 (1)
- February 2023 (1)
- January 2023 (1)
- December 2022 (2)
- November 2022 (1)
- October 2022 (1)
- September 2022 (1)
- August 2022 (1)
- July 2022 (1)
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- December 2021 (2)
- November 2021 (2)
- October 2021 (1)
- September 2021 (1)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- April 2021 (1)
- March 2021 (1)
- February 2021 (1)
- January 2021 (1)
- December 2020 (3)
- November 2020 (1)
- October 2020 (1)
- September 2020 (1)
- August 2020 (1)
- July 2020 (1)
- June 2020 (2)
- May 2020 (1)
- April 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- December 2019 (3)
- November 2019 (1)
- October 2019 (1)
- September 2019 (2)
- August 2019 (1)
- July 2019 (1)
- June 2019 (1)
- May 2019 (1)
- April 2019 (1)
- March 2019 (1)
- February 2019 (1)
- January 2019 (1)
- December 2018 (3)
- November 2018 (2)
- October 2018 (1)
- September 2018 (1)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (1)
- February 2018 (1)
- January 2018 (1)
- December 2017 (2)
- November 2017 (2)
- October 2017 (1)
- September 2017 (1)
- August 2017 (1)
- July 2017 (1)
- June 2017 (1)
- May 2017 (1)
- April 2017 (1)
- March 2017 (2)
- February 2017 (2)
- January 2017 (2)
- December 2016 (7)
- November 2016 (2)
- October 2016 (2)
- September 2016 (1)
- August 2016 (1)
- July 2016 (1)
- June 2016 (1)
- May 2016 (2)
- April 2016 (1)
- March 2016 (2)
- February 2016 (1)
- January 2016 (1)
- December 2015 (3)
- November 2015 (1)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (3)
- June 2015 (3)
- May 2015 (4)
- April 2015 (2)
- March 2015 (4)
- February 2015 (1)
- January 2015 (3)
- December 2014 (3)
- November 2014 (2)
- October 2014 (1)
- September 2014 (2)
- August 2014 (2)
- July 2014 (3)
- June 2014 (2)
- May 2014 (1)
- April 2014 (1)
- March 2014 (4)
- February 2014 (4)
- January 2014 (3)
- December 2013 (5)
- November 2013 (4)
- October 2013 (3)
- September 2013 (2)
- August 2013 (2)
- July 2013 (2)
- June 2013 (3)
- May 2013 (2)
- April 2013 (2)
- March 2013 (2)
- February 2013 (2)
- January 2013 (3)
- December 2012 (4)
- November 2012 (2)
- October 2012 (2)
- September 2012 (4)
- August 2012 (1)
- July 2012 (3)
- June 2012 (2)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (3)
- January 2012 (3)
- December 2011 (5)
- November 2011 (3)
- October 2011 (2)
- September 2011 (2)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (3)
- December 2010 (7)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (3)
- July 2010 (4)
- May 2010 (1)
- April 2010 (2)
- March 2010 (2)
- February 2010 (2)
- January 2010 (3)
- December 2009 (3)
- November 2009 (8)
- October 2009 (7)
- September 2009 (5)
- August 2009 (4)
- July 2009 (6)
- June 2009 (6)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.
Comments
いつもこちらを参考に勉強させていただいております。
ねむいさんお薦めのPN2ですが、Stable 2.2 だと Add Tool で追加したものがメニューに現れないバグがあるようです。
キーボードショートカットを登録するとそれで起動はできました。
2.3RC では問題なくメニューに追加されます。
masato様、ねむいです。こんばんは。
ご連絡いただいた件、WindowsXP上で現象確認しました(64bit版Windows7では
不具合出ず)。記事に注意事項として加えておきますね。
いつもブログを拝見させて頂いています。
ねむいさんの記事に触発されて、MacOSXでOpenOCDを動作するようにできました。
感謝申し上げます。
竹本様
ねむいです。はじめまして。
うまく行かれたようでなによりです。
私がVersaloonを扱い始めた当初は、改造の母体となる
STM8S-Discoveryが安価で入手できてFT2232系のモジュ
ールを使った場合と比べて安くデバッグ環境が構
築できるとにらみ、ある程度の知識をつけた学生さん
向けに記事を書いたつもりだったのですが・・・
逆に東海自然歩道関連の記事並みに不評を買ってしまい
ました・・・理由は言わずもがな(泣)
ねむいさま、コメントを頂きましてありがとうございます。
OpenOCDに続き、STM8SのVersaloon化もうまく行きました。
ねむいさんの様なハンダ技術がないので、ST32L-DiscoveryのST-LINKとST-Link UtilityでSTM8SのRead DisabledのFlushに書き込みVersaloon化に成功しました。
ねむいさんのコンフィグファイルを使ってOpenOCDのmt_flushでLPC1343への書き込みも上手くいきました。
以上、ご報告まで
ねむいです。こんばんは。
STM32F4シリーズもF2扱いでVersaloonのvsprog6OpenOCD
から書き込めることを確認しました。
またこの記事を書いてからOpenOCD用のcfgファイルの
指定方法を若干変更しましたので近いうちに修正する
つもりです。
どうもはじまして
STM32F4 Discoveryボードを最近触り始めました。
コンパイラも、GCC,Arm純正など複数あるのですね。
詳しい解説でとても参考になりました。
ちょくちょく見に来るかもしれませんが、よろしくお願いします。
あるHPを参考にして、CoIDEとSourceryのGCCを導入してます。同じGCCでもLaunchpadとは別物なのか気になって調べておりました。
ttp://www.coocox.org/CoIDE/Compiler_Settings.html
newbee様はじめまして、ねむいです。
2014年現在ではほぼすべての面でLaunchpadが性能的に勝り、
SourceryCodebenchのフリー版をわざわざ導入する理由がありません。
詳細は私のエントリをご参照ください。
nemuisan.blog.bai.ne.jp/?eid=207616
一昔前はMentorに買収される前のCodeSourcery以外に選択肢は
なかったのですが時代は変わるものですね〜
newbeeです。
コメント有難うございます。
また、ブログを参考にさせていただきます。
どちらもGCCなので、ほぼ同じものかと思ったのですが、かなり違いがありますね。
GCCならLanchpadで間違いないですか。
MDK,DS5についてる純正っぽいのも気になります。
高くて縁がなさそうですが。
Post a Comment