teruノート

ROSでロボットとか。Ubuntuで困ったこととか。

Ubuntu 16.04でeclipseが異常にCPUを占有する

Ubuntu 16.04にeclipseベースのSystem workbench for STM32をインストールしたところ、異常に重くてほとんど使えませんでした。

topコマンドで調べるとjavaプロセスがCPUをほぼ100%使っている状態でした。


解決策はここで見つかりました。GTK3に起因するバグらしいです。

askubuntu.com

eclipse.iniを開き、--launcher.appendVmargsの行より上に次の2行を追加します。

--launcher.GTK_version
2


これでようやくPCもおとなしくなりました…

Nucleo-F303 mbedプロジェクトのローカルビルド

Nucleo-F303はmbed開発環境が利用できてブレボに刺さるSTM32マイコンボードという優れモノです。

ひとついただけないのは、mbed環境というのがオンラインIDEであることです…。

そこでローカルビルド環境を模索してみました。



いくつか試しましたが、結局EmBitz(https://www.embitz.org/)に落ち着きました。

mbedからEmBlocks(EmBitzの前身)向けにエクスポートし、EmBitzでインポートします。

そのままビルドすると、こんな警告がでてelfファイルが生成されません。
linker input file unused because linking not done

リンカオプションをいじる必要があります。

Build optionsのLinker settingsタブのLinker Flags - Othersのボックスの1行目にある-cを削除します。

また、Nucleo-F303の場合は、Serialクラスを使うとなぜかWWDG_IRQHandlerにハマるので、RawSerialクラスを使用します。



mbedのオンラインコンパイラは時々応答しなくなることがあったので、これでようやく安心して開発できるようになりました!

SW4STM32でF3のSPLがロードできない問題

System Workbench for STM32(以下SW4STM32)でSTM32F3のプロジェクトを作成する際、Standard Peripheral Library(以下SPL)が利用できないという問題があります。

具体的にはこんなエラーです。

Internal Error: 
http://www.st.com/resource/en/firmware/stm32f30x_dsp_stdperiph_lib_v123%2ezip

f:id:ub2_memo:20161220134618p:plain

いわゆるリンク切れです。

このウィザードを使わなくとも、SPLをダウンロードして然るべき場所に置けばSW4STM32が読み込んでくれるはずです。

SPLを手動でダウンロードします。

www.st.com

"en.stm32f30x_dsp_stdperiph_lib.zip"というファイルがダウンロードできると思います。

このzipファイルを"stm32f30x_dsp_stdperiph_lib_v123.zip"にリネームし次の場所に配置します。

C:\Users\(ユーザ名)\AppData\Roaming\Ac6\SW4STM32\firmwares

さらにその場で展開し、"STM32F30x_DSP_StdPeriph_Lib_V1.2.3"フォルダが作成されるのを確認します。

あとはSW4STM32が認識してくれるようになります。

f:id:ub2_memo:20161220141006p:plain