Project

General

Profile

Actions

DevEnv » History » Revision 4

« Previous | Revision 4/23 (diff) | Next »
mole lord, 08/23/2020 12:59 PM


開発環境

STM32CubeIDEは全部入りで楽なのですが、以下の問題があります。

  • ファームウェアライブラリとして最新版しか使えない(CubeMX上で古いファームウェアライブラリを選択できない)
  • ファームウェアライブラリのパスがWindowsのログイン名によって異なり、IDEプロジェクトを他人の環境で再現するのが困難

STMicroのファームウェアライブラリはバージョンが上がると新しいバグが入ることが多く、ライブラリのバージョンが固定できないのは「完成したソフトを半年後にリビルドすると動作しない」原因になります。
そこで、CubeIDEは避け、バージョンの固定ができる下記のような開発環境を考えました。

注:開発PCのOSがWindows10であることを前提としています。

インストール

基本的に、 GNU MCU Eclipse のサイト の右側にある DownloadsやInstallのリンク先の記事に従っています。
ただし、xPack Managerでコンパイラまで入れるとコンパイラのバージョン管理がしづらくなる欠点があるので、コンパイラに関してはねむいさんの公開している手順を参考にしています。

まずtoolchainとeclipse

  1. ねむいさんのぶろぐ-Windows10対応軽量シンプルなARMマイコンのGCCビルド環境を構築する(2020年度版) の手順に沿ってC:/Devzフォルダを作ります
  2. 他のPCにインストールするとき手間を省くために、C:/Devzをzip圧縮して保存しておきます
  3. あとでeclipseやCubeMXをインストールするための、中身がカラのC:/Dev0フォルダを作ります
  4. GNU MCU Eclipseのリリース物 から、 20200127-1311-gnumcueclipse-4.7.2-2019-12-R-win32.win32.x86_64.zip をダウンロードします
  5. 上記zipを C:/Dev0 に展開します
  6. eclipseを動かすために、https://jdk.java.net/14/ からOPENJDK14をダウンロードして展開し、jdk-14.0.2をjreにリネームして、C:/Dev0/eclipse/ に移動します(C:/Dev0/eclipse/jre/bin/javaw.exeとなるように)
  7. C:/Dev0/eclipse/eclipse.exe をダブルクリックして、起動するか確かめます
    • 起動できたら、この時点では何もする必要はないので、終了させます
    • javaがインストールされていない場合、eclipse.exeを起動しようとするとjavaランタイムが見つからないという趣旨のダイアログが出ます

この時点で以下のようなフォルダ構成になります。

C:/
+-Dev0
| +-eclipse/
|   +-jre/
+-Devz/
  +-ARM/
  |  +-launchpad/
  +-Coreutils/

eclipse上でJTAG(SerialWire)デバッガを使えるようにする

  1. ゆっきぶろぐ-【丁寧解説】GNU MCU Eclipseのインストール に倣い、XPackのインストールまで終わらせます
    • Node.jsのインストーラでは、 □Automatically install the necessary ~のチェックはつけなくても大丈夫です
  2. コマンドプロンプトで xpm install --global @gnu-mcu-eclipse/openocd します
  3. コマンドプロンプトで xpm install --global @gnu-mcu-eclipse/qemu します
  4. ゆっきぶろぐ-【丁寧解説】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.

  1. https://adoptopenjdk.net/ へアクセスします
  2. ●OpenJDK 8(LTS) と ●HotSpot が選択された状態で、Latest Releaseをクリックしてダウンロードします
  3. AdoptOpenJDKのインストーラでは、 Set JAVA_HOME variableJavaSoft(Oracle) registry keys を「ローカルハードドライブにインストール」します
    • インストールパスはあまり気にする必要ありません。デフォルトでも、 C:/Dev0/jdk8でもよいです
  4. STM32CubeMX をダウンロードし、インストールします
  5. スタートメニューからSTM32CubeMXを起動します
  6. メニューバーのHelp-Updater Settingsを選びます
  7. Repository Folderを C:\\Dev0\\CubeRepo に直します
    • デフォルトのままだと、他人の環境でeclipseプロジェクトを再現するとき困るので、変えています
  8. STM32CubeMXを閉じます

ボード毎にやること

OpenOCDではST-Linkは扱えない?ようなので、Nucleo上のST-Link部分をJ-Linkに書き換えます。
なお、STM32G系のNucleoボードはST-Link/V3なので、J-Link化は非対応のようです。 参考: STLink conversion utility for STLink v3

Converting ST-LINK On-Board Into a J-Link に従ってください。

  • J-Link化されたものと元のST-Link/V2-1の見分け方
    • デバイスマネージャでも識別できますが面倒です
    • ST-Linkの場合は、PCに挿すとUSBメモリ風にドライブとして認識されます
    • J-Link化後は、PCに挿してもストレージデバイスとして認識されなくなります
    • TeraTermを起動して、COMポートの名前を見ることでも識別できます

プロジェクト毎にやること

CubeMXでピン設定し、Eclipseでそれを扱えるよう設定し、ビルド、デバッグしてLEDチカチカまでする例です。

  1. CubeMXを起動します
  2. あああ

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」と出て失敗する
  • Eclipse上のmakeの出力が文字化けする
    • C:/Devz/Coreutils/share/locale/ja/LC_MESSAGES/make.mo を適当にリネームします
    • ja/LC_MESSAGES/make.mo が見つからなければ英語表記になるので、文字化けは解消します


累計表示回数:199

Updated by mole lord 3 months ago · 4 revisions