Project

General

Profile

Wiki » History » Revision 3

Revision 2 (mole lord, 08/23/2020 08:22 AM) → Revision 3/26 (mole lord, 08/23/2020 08:51 AM)

# Wiki 

 {{>toc}} 

 STM32の機能や開発環境についてのまとめです。 

 ### 評価ボードの選定 

 展示会のSTMicroブースでタダで配っていたボードでもよいのですが、機能てんこ盛りで2千円台で買えるNUCLEO-F429ZIを選びました。 
 Ethernet機能とUSBターゲット機能を使うのが目標です。 

 ### エラッタの確認 

 本当はボードを選ぶ前にすべきなのですが、マイコンに深刻なエラッタがあるかどうか確認します。 
 エラッタシートを読むのにかかる時間は、おかしな挙動に散々悩んだあとエラッタシートで問題を知るまでの時間よりずっと短く済むはずです。 

 [STMicroのF429ZIのページ](https://www.st.com/ja/microcontrollers-microprocessors/stm32f429zi.html) の リソース のところに [エラッタシート]() があるので、それを見ます。 
 Standby Modeに関する制限、PA12はGPIO OutputでLowに固定しておくほうがよい、EtherはStore-and-Forward modeで使うべき、などが分かります。 

 ## 開発環境 

 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フォルダを作ります の手順でC:/Devzフォルダを作ります 
 1. 他のPCにインストールするとき手間を省くために、C:/Devzをzip圧縮して保存しておきます 
 1. あとでeclipseやCubeMXをインストールするための、中身がカラのC:/Dev0フォルダを作ります 
 1. [GNU (CubeIDE内蔵でなく単体の)STM32CubeMXを動かすために、 

 --- 

 基本的に、 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 をダウンロードします Eclipse のサイト https://gnu-mcu-eclipse.github.io/ の右側にある DownloadsやInstallのリンク先の記事に従って環境を構築してみる。 
 1. 上記zipを C:/Dev0 に展開します ただし、xPack Managerでコンパイラまで入れるとコンパイラのバージョン管理がしづらくなるので、コンパイラなどはねむいさんのやり方を参考にして、ニコイチする。 

 まず、ねむいさんとこ http://nemuisan.blog.bai.ne.jp/?eid=188089 と同じディレクトリ構成にする。 

 そのあと、 https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads から、2020-07-15時点で最新の 9-2020-q2-update をインストールしてみる。 

 eclipseは https://github.com/gnu-mcu-eclipse/org.eclipse.epp.packages/releases を使う。 
 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ランタイムが見つからないという趣旨のダイアログが出ます 20200127-1311-gnumcueclipse-4.7.2-2019-12-R-win32.win32.x86_64.zip を C:/Devz/ARM へ展開。 

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

 eclipseに javaがインストールされていない場合、eclipse.exeを起動しようとするとjavaランタイムが見つからないという趣旨のダイアログが出るだけなので、 
 https://jdk.java.net/14/ からOPENJDK14をダウンロードして、 
 C:/Devz/ARM/eclipse/jre/bin/javaw.exe の位置にjavaw.exeがくるように展開する。 

 --- ここまでで、eclipse自体は起動するようになる。 

 https://yukblog.net/gnu-mcu-eclipse-install/ を参考にNode.jsとかも入れる。 

 Node.jsのインストーラでは、 □Automatically install the necessary ~のチェックはつけなくても大丈夫。 

 ~~~ {{{ 
 npm install --global xpm 
 xpm install -–global @gnu-mcu-eclipse/openocd 
 xpm install --global @gnu-mcu-eclipse/qemu 
 ~~~ }}} 

 https://yukblog.net/gnu-mcu-eclipse-project/ を参考にして、Eclipse上でCMSIS Packs Managerを初期化する。 

 ### === CubeMXを使えるようにする設定 === 

 STM32CubeMXを動かすためにOPENJDK8を入れる 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 

 https://adoptopenjdk.net/ 

 ~~~ {{{ 
 C:\Devz 
 +-ARM 
  |    +-launchpad 
  |    +-eclipse 
  +-Coreutils 
  +-openjdk8 
 ~~~ }}} 

 https://mergedoc.osdn.jp/ プレアデスはあとまわし 

 STM32CubeMX 
 Help - Updater Settings の Firmware Repository を C:/Devz/ARM/CubeRepo に修正。 

 CubeMXで作ったMakefileプロジェクトをeclipseで取り込んでみる。 

 ARM Cross GCC を選ぶ 

 そのままだと プロジェクトをBuildしようとしたときに「Cannot run program "": Launching failed」と出て失敗する。 

 https://yukblog.net/gnu-mcu-eclipse-project/ にあるように、Settings - Devicesをマイコンに合わせて選ぶとBuildに成功するようになる。