gombeのブログ

マイコンの電子工作系PIC32/KiCad/C/C++/3D/

HALの開発環境(2)

今回はmake,arm-none-eabi-gcc(長い),debugger, gitを入れましょう。Linux系には大抵makeは入ってますが、(gitも)でもコンパイラはないでしょうねでは入れていきましょう。

[shell] $ sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded $ sudo apt-get update

Version確認

$ sudo apt-cache policy gcc-arm-none-eabi $ sudo apt-get install gcc-arm-none-eabi=<ここにVersionを入れる> gdb-arm-none-eabi git make

必要なパッケージを入れてください。

あとデフォで古いパッケージが選択されている時、インスコはできますがmakeに失敗します。

必ず新しいパッケージを入れてください。

[/shell]

$ sudo apt-cache policy gcc-arm-none-eabi gcc-arm-none-eabi: インストールされているバージョン: 4.9.3.2015q3-1trusty1 候補: 4.9.3.2015q3-1trusty1 バージョンテーブル: *** 4.9.3.2015q3-1trusty1 0 500 http://ppa.launchpad.net/terry.guo/gcc-arm-embedded/ubuntu/ trusty/main i386 Packages 100 /var/lib/dpkg/status 4.8.2-14ubuntu1+6 0 500 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe i386 Packages この時、うえのほうが最新版です。元々が入っている方が古いやつで、これでは実際のコンパイルできません。通りません。。。

makeはコンパイル用のソフトだと思ってればいいと思います。これは-jで並列コンパイルも出来るのでいいですね。 Makefileは書かないとならないですが。なんとかなるでしょ。で、

[shell]

Makefileのあるディレクトリで

$ make -j [/shell]

コンパイルできます。

gitはヴァージョン管理用のシステムで、共同管理するときにも使います。使い方は調べてね。

あとはコンパイラとデバッガです。デバッガはgdbなのでいいですね。エディターと連携取れるし。デバッガはクライアントとホストでいいのかな?両方必要です。 STMの場合は二通りのクライアントがあります。OpenOCDとst-utilがあります。私はもともと前者使ってましたが今は後者を使ってます。好きな方でどうぞ。

st-utilは https://github.com/texane/stlink を参考にしてください。2016/06/30現在Readmeがバグってるので適当に他のブランチを覗くといいでしょう。(爆確認したところ、iPhone5sから見るとなんかうまく行かない?READMEのなかみがReadmeって出るだけだったけどとりあえずPC番だと大丈夫そう?まあ何とかなりそうです。

無事にインストールできたらデバイスを接続し、st-utilを実行します。(実行の仕方は。これはいいよな)。ポート4242を使います。

[shell] $ arm-none-eabi-gdb <実行ファイル.elf>

起動したら

(gdb) tar ext:4242 [/shell]

あとはloadで書き込みのほかはgdbと全く同様です。また、emacsで実行するとかなり良いでしょう。これによって連携も取れるようになり、多分使いやすいです。(個人的にはTUIでもいいかなと思ってるところだけど)

  • n...next line?(次の行に進む(関数は実行するが、止まらない
  • s...step into(関数内に入るように(関数内で止まる)進む。)
  • c...continue (続ける)
  • b...break point(止まる箇所)の設定。間数名や行数指定
  • load...ファイルの読み出し+書き込み
  • info breakpoints...ブレイクポイントの確認
  • d...break pointの削除 番号指定する
  • fin...関数の終了まで実行
  • p ...print変数の表示(関数の実行も可能)
  • p/x ...16進数版
  • set...変数のセット(代入文で良さそう)