DevEnv » History » Revision 3
« Previous |
Revision 3/23
(diff)
| Next »
mole lord, 08/23/2020 12:47 PM
開発環境¶
- Table of contents
- 開発環境
STM32CubeIDEは全部入りで楽なのですが、以下の問題があります。
- ファームウェアライブラリとして最新版しか使えない(CubeMX上で古いファームウェアライブラリを選択できない)
- ファームウェアライブラリのパスがWindowsのログイン名によって異なり、IDEプロジェクトを他人の環境で再現するのが困難
STMicroのファームウェアライブラリはバージョンが上がると新しいバグが入ることが多く、ライブラリのバージョンが固定できないのは「完成したソフトを半年後にリビルドすると動作しない」原因になります。
そこで、CubeIDEは避け、バージョンの固定ができる下記のような開発環境を考えました。
- IDEとして GNU MCU Eclipse を使う
- コンパイラとして GNU Arm Embedded Toolchain を使う
注:開発PCのOSがWindows10であることを前提としています。
インストール¶
基本的に、 GNU MCU Eclipse のサイト の右側にある DownloadsやInstallのリンク先の記事に従っています。
ただし、xPack Managerでコンパイラまで入れるとコンパイラのバージョン管理がしづらくなる欠点があるので、コンパイラに関してはねむいさんの公開している手順を参考にしています。
まずtoolchainとeclipse¶
- ねむいさんのぶろぐ-Windows10対応軽量シンプルなARMマイコンのGCCビルド環境を構築する(2020年度版) の手順に沿ってC:/Devzフォルダを作ります
- 他のPCにインストールするとき手間を省くために、C:/Devzをzip圧縮して保存しておきます
- あとでeclipseやCubeMXをインストールするための、中身がカラのC:/Dev0フォルダを作ります
- GNU MCU Eclipseのリリース物 から、 20200127-1311-gnumcueclipse-4.7.2-2019-12-R-win32.win32.x86_64.zip をダウンロードします
- 上記zipを C:/Dev0 に展開します
- eclipseを動かすために、https://jdk.java.net/14/ からOPENJDK14をダウンロードして展開し、jdk-14.0.2をjreにリネームして、C:/Dev0/eclipse/ に移動します(C:/Dev0/eclipse/jre/bin/javaw.exeとなるように)
- C:/Dev0/eclipse/eclipse.exe をダブルクリックして、起動するか確かめます
- 起動できたら、この時点では何もする必要はないので、終了させます
- javaがインストールされていない場合、eclipse.exeを起動しようとするとjavaランタイムが見つからないという趣旨のダイアログが出ます
この時点で以下のようなフォルダ構成になります。
C:/ +-Dev0 | +-eclipse/ | +-jre/ +-Devz/ +-ARM/ | +-launchpad/ +-Coreutils/
eclipse上でJTAG(SerialWire)デバッガを使えるようにする¶
- ゆっきぶろぐ-【丁寧解説】GNU MCU Eclipseのインストール に倣い、XPackのインストールまで終わらせます
- Node.jsのインストーラでは、 □Automatically install the necessary ~のチェックはつけなくても大丈夫です
- コマンドプロンプトで
xpm install --global @gnu-mcu-eclipse/openocd
します - コマンドプロンプトで
xpm install --global @gnu-mcu-eclipse/qemu
します - ゆっきぶろぐ-【丁寧解説】GNU MCU Eclipseのプロジェクト作成手順【画像多め】 に倣い、CMSIS Packs managerの初期化まで終わらせます
eclipse起動のためのバッチファイルを作る¶
以下の2つのファイルを、C:/Dev0に作ります。
armgcc.cmd
@echo off set tooldir=C:\Devz set gccdir=%tooldir%\ARM\launchpad rem set PATH=%gccdir%\bin;%gccdir%\arm-none-eabi\bin;%tooldir%\Coreutils\bin;%PATH% set PATH=%gccdir%\bin;%tooldir%\Coreutils\bin;%PATH% set tooldir= set gccdir=
armeclipse.cmd
@echo off call armgcc.cmd start C:\Dev0\eclipse\eclipse.exe
armeclipse.cmdをダブルクリックすると、arm用のgccにパスが通った状態でeclipseを起動できるようになります。
CubeMXを使えるようにする¶
STM32CubeMXを動かすために、OPENJDK8を入れます。
ただし、レジストリへの設定も必要なようでSunオフィシャルな?OpenJDKだとうまくいかないので、 adoptopenjdk で配布されているものを使います。
参考 ST Community - With Windows 10 I installed openjdk version 1.8.0_222 but STM32CubeMX does not see that openjdk is there. Says it can not find java runtime environment. The readme with STM32CubeMX said openjdk would work.
- https://adoptopenjdk.net/ へアクセスします
- ●OpenJDK 8(LTS) と ●HotSpot が選択された状態で、Latest Releaseをクリックしてダウンロードします
- AdoptOpenJDKのインストーラでは、
Set JAVA_HOME variable
とJavaSoft(Oracle) registry keys
を「ローカルハードドライブにインストール」します- インストールパスはあまり気にする必要ありません。デフォルトでも、 C:/Dev0/jdk8でもよいです
- STM32CubeMX をダウンロードし、インストールします
- スタートメニューからSTM32CubeMXを起動します
- メニューバーのHelp-Updater Settingsを選びます
- Repository Folderを
C:\\Dev0\\CubeRepo
に直します- デフォルトのままだと、他人の環境でeclipseプロジェクトを再現するとき困るので、変えています
- STM32CubeMXを閉じます
ボード毎にやること¶
OpenOCDではST-Linkは扱えない?ようなので、Nucleo上のST-Link部分をJ-Linkに書き換えます。
なお、STM32G系のNucleoボードはST-Link/V3なので、J-Link化は非対応のようです。 参考: STLink conversion utility for STLink v3
- J-Link化されたものと元のST-Linkの見分け方
- デバイスマネージャで見るのが普通ですが、面倒です
- ST-Linkの場合は、PCに挿すとUSBメモリ風にドライブとして認識されます
- J-Link化後は、PCに挿してもストレージデバイスとして認識されなくなります
- TeraTermを起動して、COMポートの名前を見ることでも識別できます
プロジェクト毎にやること¶
CubeMXでピン設定し、Eclipseでそれを扱えるよう設定し、ビルド、デバッグしてLEDチカチカまでする例です。
- CubeMXを起動します
- あああ
ARM Cross GCC を選ぶ
そのままだと プロジェクトをBuildしようとしたときに「Cannot run program "": Launching failed」と出て失敗する。
https://yukblog.net/gnu-mcu-eclipse-project/ にあるように、Settings - Devicesをマイコンに合わせて選ぶとBuildに成功するようになる。
トラブルシューティング¶
- CubeMXが起動しない
- AdoptOpenJDKのインストールが済んでいるか確認します
- プロジェクトをBuildしようとしたときに「Cannot run program "": Launching failed」と出て失敗する
- https://yukblog.net/gnu-mcu-eclipse-project/ にあるように、Settings - Devicesをマイコンに合わせて選ぶとBuildに成功するようになります
- Eclipse上のmakeの出力が文字化けする
C:/Devz/Coreutils/share/locale/ja/LC_MESSAGES/make.mo
を適当にリネームします- ja/LC_MESSAGES/make.mo が見つからなければ英語表記になるので、文字化けは解消します
累計表示回数:338
Updated by mole lord 8 months ago · 3 revisions