FRDM-K64Fの修復(bootloader update)


はじめに

勉強用にFRDM-K64Fを買って触り始めたのですが、あらかじめ搭載されているはずのデモ(以下Web画像)が動きませんでした。

開発環境MCUXporesso IDEを用意してHello Worldを試そうとしても、Arm Mbed Compilerで作ったバイナリを試そうとしても、動きません(何がどうエラーになったのかは忘れてしまいました…)。

調べてみると、FRDM-K64FのようなMbed対応ボードで古いブートローダが搭載されたものをWindows 8やWindows 10に接続すると、ROMのアプリケーション領域が破損して動かなくなるらしい(ROMはROMではない?)。

こちらのページを見つけられなかったらお手上げでした。本稿は、ここに書かれていることを参考にFRDM-K64Fを修復した記録です。
FRDM-K64Fで困った話

【今回の環境】

途中までWindowsで進めたのですが上手くいかず、途中からUbuntuに切り替えました。

bootloader update

問題の内容や対処方法は以下のページ(MbedのBlog)に書かれています。かなり大事な問題のように思うのですが、購入時には教えてくれないものなのですね…
DAPLink bootloader update

まずページ中のこのフローチャートに沿って進めていきます。

ボードのリセットボタンを押しながらPCにUSB接続すると、BOOTLOADERという名前でマウントされました。

フロチャートを見ると、この場合はStep1から実行してUpdateせよとあります。

Step 1. Download updated DAPLink bootloader image
FRDM-K64F用のDAPLink bootloader imageをダウンロードします。

Step2 Disable storage services (only for Windows)
PC側のStorage Service (StorSvc)を停止します。
ところが、停止しても無効化しても、すぐ起動状態に戻ってしまい、その先のステップを進めても上手くいきませんでした。
なので、Windowsでの実施は諦めてStep3からUbuntuで進めました。

Step 3: Update the bootloader
Step1でダウンロードしたBootloader imageを、BOOTLOADERドライブにコピーします。

cp 0244_k20dx_bootloader_update_0x5000.bin /media/???/BOOTLOADER && SYNC

書込みが終わると再起動されて、MAINTENANCEという名前でマウントされました。

Step 4: Re-enable storage services (only for Windows)
Windows用手順なのでスキップ。

Step 5: Install an interface firmware application
手順に沿ってDAPLink interface firmwareのページからFirmwareをダウンロード。

これをMAINTENANCEドライブにコピーします。

cp 0253_k20dx_frdmk64f_0x5000.bin /media/???/MAINTENANCE && SYNC

書込みが終わると再起動されて、DAPLINKという名前でマウントされました。
Windows PCに接続してもDAPLINKドライブとして見えるようになりました。

テスト

Arm Mbed Compilerで、RGP_LED_7_Colorsというサンプルをビルドして動かしてみました(コンパイルしてダウンロードされたRGB_LED_7_Colors.K64F.binをDAPLINKドライブにコピー)。
左上のRGB 3色のLEDが、順番に7色に光ります。

これでようやく使えるようになりました。