uVision4でNUCLEO-F303K8を使ってみた

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に入荷する。

2015/10/28

SwitchScienceに入荷する。

2015/10/30

届く。

mbed.orgに登録はされているものの、オンラインコンパイラではコンパイルはできない。

2015/11/4

uVisonでコンパイルできるようになった。

2015/11/9

オンラインコンパイラではコンパイルはできない。ブログ書いてる。

プロジェクト作成方法

  • 作成環境
    • 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 を実行します。
PrettyTablePySerialIntelHexcoloramaJinja2 を必要としますのであらかじめインストールしておくとよいでしょう。
※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で無料でコンパイルできるサイズを超えてしまいます。
uVision_F303K8_builderror

そこで、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でもコンパイルできるようになりました。
ScreenShot2015-11-04_18.50.13

もちろん、書き込みも無事にできました。
PIC_20151109_024050

どうでもいいですが、書き込んだときに.binはエクスプローラー越しには見えないんですね。
スクリーンショット 2015-11-09 02.33.53

デバッガーを使うためのドライバなどはこちらのページにまとめてあります。
https://developer.mbed.org/teams/ST/wiki/ST-Link-Driver

これらのファイルをまとめたリポジトリ、もう一度URL貼っておきます。
https://github.com/Tiryoh/F303K8-uVision

修正点などあればお知らせください。

オンラインコンパイラで早めに対応してくれたらもっと楽なのになぁ。

コメント