Project

General

Profile

DevEnv » History » Revision 4

Revision 3 (mole lord, 08/23/2020 12:47 PM) → Revision 4/23 (mole lord, 08/23/2020 12:59 PM)

# 開発環境 

 {{>toc}} 

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

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

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

 * IDEとして [GNU MCU Eclipse](https://gnu-mcu-eclipse.github.io/) を使う 
 * コンパイラとして [GNU Arm Embedded Toolchain](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm) を使う 

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

 ## インストール 

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

 ### まずtoolchainとeclipse 

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

 この時点で以下のようなフォルダ構成になります。 
 ~~~ 
 C:/ 
 +-Dev0 
 | +-eclipse/ 
 |     +-jre/ 
 +-Devz/ 
   +-ARM/ 
   |    +-launchpad/ 
   +-Coreutils/ 
 ~~~ 

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

 1. [ゆっきぶろぐ-【丁寧解説】GNU MCU Eclipseのインストール](https://yukblog.net/gnu-mcu-eclipse-install/) に倣い、XPackのインストールまで終わらせます 
  * Node.jsのインストーラでは、 □Automatically install the necessary ~のチェックはつけなくても大丈夫です 
 1. コマンドプロンプトで `xpm install --global @gnu-mcu-eclipse/openocd` します 
 1. コマンドプロンプトで `xpm install --global @gnu-mcu-eclipse/qemu` します 
 1. [ゆっきぶろぐ-【丁寧解説】GNU MCU Eclipseのプロジェクト作成手順【画像多め】](https://yukblog.net/gnu-mcu-eclipse-project/) に倣い、CMSIS Packs managerの初期化まで終わらせます 

 ### eclipse起動のためのバッチファイルを作る 

 以下の2つのファイルを、C:/Dev0に作ります。 

 armgcc.cmd 

 ~~~ 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 

 ~~~ cmd 
 @echo off 
 call armgcc.cmd 
 start C:\Dev0\eclipse\eclipse.exe 
 ~~~ 

 armeclipse.cmdをダブルクリックすると、arm用のgccにパスが通った状態でeclipseを起動できるようになります。 

 ### CubeMXを使えるようにする 

 STM32CubeMXを動かすために、OPENJDK8を入れます。 
 ただし、レジストリへの設定も必要なようでSunオフィシャルな?OpenJDKだとうまくいかないので、 [adoptopenjdk](https://adoptopenjdk.net/) で配布されているものを使います。 
 参考 [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://community.st.com/s/question/0D50X0000B8hXhZ/with-windows-10-i-installed-openjdk-version-180222-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/ へアクセスします 
 1. ●OpenJDK 8(LTS) と ●HotSpot が選択された状態で、Latest Releaseをクリックしてダウンロードします 
 1. AdoptOpenJDKのインストーラでは、 `Set JAVA_HOME variable` と `JavaSoft(Oracle) registry keys` を「ローカルハードドライブにインストール」します 
  * インストールパスはあまり気にする必要ありません。デフォルトでも、 C:/Dev0/jdk8でもよいです 
 1. [STM32CubeMX](https://www.st.com/en/development-tools/stm32cubemx.html) をダウンロードし、インストールします 
 1. スタートメニューからSTM32CubeMXを起動します 
 1. メニューバーのHelp-Updater Settingsを選びます 
 1. Repository Folderを `C:\\Dev0\\CubeRepo` に直します 
  * デフォルトのままだと、他人の環境でeclipseプロジェクトを再現するとき困るので、変えています 
 1. STM32CubeMXを閉じます 

 ## ボード毎にやること 

 OpenOCDではST-Linkは扱えない?ようなので、Nucleo上のST-Link部分をJ-Linkに書き換えます。 
 なお、STM32G系のNucleoボードはST-Link/V3なので、J-Link化は非対応のようです。 参考: [STLink conversion utility for STLink v3](https://forum.segger.com/index.php/Thread/6397-SOLVED-STLink-conversion-utility-for-STLink-v3/) 

 [Converting ST-LINK On-Board Into a J-Link](https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/) に従ってください。 

 1.  

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

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

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

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

 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 が見つからなければ英語表記になるので、文字化けは解消します