uVision4でNUCLEO-F303K8を使ってみたのでその方法をメモ。
免責事項
このエントリを書いている時点(2015年11月9日 01:30JST)ではまだオンラインコンパイラが対応していませんので、なんとかできないものかと思い、uVisionでなんとかしてみたときのメモです。
(2015年11月11日 22:30JST追記)
mbedライブラリを更新すればエラーでなくなりました。
他のボードと同様にエクスポートメニューから選択できます。
https://developer.mbed.org/users/mbed_official/code/mbed/issues/28
(2015年11月11日 22:30JST追記ここまで)
提供する情報の品質についてはいかなる保証も行っておらず、情報の提供の中止、欠陥およびそれらが原因で発生した損失や損害については一切責任を負いません。
こうした方がいいよ!という使い方などありましたら教えてください。よろしくお願いします。
作成したプロジェクト
GitHubに必要であろうファイル類はすべて公開しました。
とりあえず使えればいいや!って場合にはダウンロードして使用してください。
https://github.com/Tiryoh/F303K8-uVision
現在に至るまでの経緯
2015/10/23
目をつけていたボードがDigiKeyに入荷する。
NUCLEO-F303K8 STMicroelectronics | 497-15981-ND | DigiKey : https://t.co/K1ndQIezeP #miteru
— たいりょーくん (@Tiryoh) 2015, 10月 23
2015/10/28
SwitchScienceに入荷する。
[新商品] ST Nucleo Board STM32F303K8T6 ¥1,900 https://t.co/3tuQuG3vT5 #ssci_new pic.twitter.com/HjNN2FAe0X
— Switch Science (@ssci_official) 2015, 10月 28
2015/10/30
届く。
新しいNucleo届いた!!
(STM32F303とSTM32F042) pic.twitter.com/eQceT5QBxB
— たいりょーくん (@Tiryoh) 2015, 10月 30
mbed.orgに登録はされているものの、オンラインコンパイラではコンパイルはできない。
NUCLEO-F303K8 | mbed : https://t.co/M48hMDgJUQ #miteru
— たいりょーくん (@Tiryoh) 2015, 10月 31
2015/11/4
uVisonでコンパイルできるようになった。
やっとuVision4でNucleo_F303K8用にコンパイルできるようになった。 https://t.co/pRuOmCHWDT
— たいりょーくん (@Tiryoh) 2015, 11月 4
2015/11/9
オンラインコンパイラではコンパイルはできない。ブログ書いてる。
相変わらずmbedのオンラインコンパイラでF303K8用にコンパイルできない。 pic.twitter.com/VUT6TrWrS6
— たいりょーくん (@Tiryoh) 2015, 11月 8
プロジェクト作成方法
- 作成環境
- Windows7 SP1 64bit
- uVision4 (MDK-474)インストール済み
- Python2.7.10インストール済み
※MinGW64のPythonを利用しましたが、PythonとuVisionがインストールされている環境ならば問題ないようです。
GitHubにあるmbedの公式から必要なものを入手しました。
https://github.com/mbedmicro/mbed
issueをのぞいてみると、F303K8に対応させるためのコミットなどが何件かありますね。
$ git clone https://github.com/mbedmicro/mbed.git $ cd mbed $ python setup.py install
git clone
したら、 setup.py
を実行します。
PrettyTable
、 PySerial
、 IntelHex
、 colorama
、 Jinja2
を必要としますのであらかじめインストールしておくとよいでしょう。
※MinGW64ではeasy_installが失敗したため、pipで手動でインストールしました。
workspace_tools/settings.py
を編集し、自分の環境に合わせます。
uVision付属のKeilのarmccを使用したかったので、そのように変更します。
以下は C:\Keil\ARM\ARMCC\bin\armcc.exe
にインストールされている場合の設定です。
$ vim workspace_tools/settings.py
# ARM armcc = "keil" # "keil", or "standalone", or "ds-5" if armcc == "keil": ARM_PATH = "C:/Keil/ARM" ARM_BIN = join(ARM_PATH, "ARMCC", "bin") ARM_INC = join(ARM_PATH, "RV31", "INC") ARM_LIB = join(ARM_PATH, "RV31", "LIB")
ビルド後、プロジェクトを作成し、zipにまとめます。
$ python workspace_tools/build.py -m NUCLEO_F042K6 -t uARM $ python workspace_tools/project.py -m NUCLEO_F042K6 -i uvision -p 0
出力はGistに貼りました。
https://gist.github.com/Tiryoh/7108d5df818dc171b0fc
これでできたファイルを任意の場所に展開しuVisionのプロジェクト作成完了かと思われましたが、違いました。
そのままではプロジェクトのmbedディレクトリ以下のファイルすべてがビルド対象となっていて、uVisionで無料でコンパイルできるサイズを超えてしまいます。
そこで、NUCLER-F303REのプロジェクトを見ながら、.uvprojを編集しました。
<GroupName>src</GroupName>
にたくさんあったファイルを main.cpp
を除いてすべて除外し、
先ほど workspace_tools/build.py
を実行した際に build/mbed/
以下にできた TARGET_NUCLEO_F303K8
フォルダを
すべてuVisionプロジェクトの mbed/
ディレクトリにコピーします。
先に紹介したGitHubのリポジトリにはこれらのファイルがすべて入っています。
(すべてをコピーする必要はないのかもしれません。)
そして mbed/TARGET_NUCLEO_F303K8/TOOLCHAIN_ARM_MICRO/
以下にある*.oファイル一覧を.uvprojの
<MISC></MISC>
内に書き込みます。
(dirコマンドなどを利用してファイル名一覧を取得すれば楽です。)
また、ビルド後に.bin形式でビルドされたバイナリを得られるよう、77行目付近のRunUserProg1
を1にする必要があります。
<RunUserProg1>1</RunUserProg1> <RunUserProg2>0</RunUserProg2> <UserProg1Name>fromelf --bin -o build\NucleoF303K8_blinky_NUCLEO_F302R8.bin build\NucleoF303K8_blinky.axf</UserProg1Name> <UserProg2Name></UserProg2Name>
そうすると、11/4のツイートのようにuVisionでもコンパイルできるようになりました。
どうでもいいですが、書き込んだときに.binはエクスプローラー越しには見えないんですね。
デバッガーを使うためのドライバなどはこちらのページにまとめてあります。
https://developer.mbed.org/teams/ST/wiki/ST-Link-Driver
これらのファイルをまとめたリポジトリ、もう一度URL貼っておきます。
https://github.com/Tiryoh/F303K8-uVision
修正点などあればお知らせください。
オンラインコンパイラで早めに対応してくれたらもっと楽なのになぁ。
コメント