STM32シリーズへの書き込み(DFU編)

綱です。

今回から、STM32シリーズへのFlash書き込みについて書いていきます。

今回は、デバッガでの書き込みが一般的になり、すっかりいらない子になっている気がする「DFU」での書き込みについてです。

なお、ここに書いた内容について、一切の責任を負いません。投稿時点での情報なので、古くなっている可能性もあります。

 

0. DFU対応マイコン

DFU書き込みに対応したマイコンは以下の通りです。

  • STM32F0シリーズ:STM32F0x2
  • STM32F1シリーズ:STM32F105, STM32F107
  • STM32F2シリーズ:全て
  • STM32F3シリーズ:STM32F30x, STM32F37x
  • STM32F4シリーズ:全て
  • STM32L1シリーズ:flash256KB以上のマイコン(STM32L1xxxxの末尾がC以上)

詳細はアプリケーション・ノートAN2606や、各マイコンデータシートの「Boot modes」項を参照してください。

USBが付いているけどDFUに対応していないマイコンを、DFU書き込み可能にする方法に関しては、今回は扱いません。

※STBee / STBee MiniはSTM32F103なのにDFU書き込み可能ですが、これはブートローダーをFlash領域に仕込んでいるからです。基本的に同様の方法で書き込めますが、注意しないとブートローダーを消してしまいます。

 

 

1. ドライバについて

ドライバのインストールは不要です。

Windowsの場合、DFUを繋ぐと公式ドライバが自動的にインストールされます。DfuSeにもドライバが付属していますが、自動インストールされるドライバのほうが新しいです。

Linux等の場合、libusbを使用します。libusbが使用可能なら問題ありません。

 

2. マイコンをDFUモードにする

BOOT0ピンをH、BOOT1ピンをLにした状態で、マイコンの電源を入れる(またはリセットする)と、マイコン内臓のブートローダーが起動します。

ブートローダー起動時にUSBが接続されていると、自動的にDFU待ち受けモードになります。

 

BOOT1ピンが存在しないマイコンもあります。その場合は、FLASH_OBRレジスタのnBOOT1ビットを操作することで、BOOT1ピンの代わりにできます。

nBOOT1 == 1ならL、nBOOT1 == 0ならHになります。nBOOT1はデフォルトで1なので、操作しなければBOOT1は常にLです。

 

3. DFUでプログラムを書き込む

DFUでプログラムを書き込むためには、専用のソフトが必要です。

通常はST公式のソフト「DfuSe」を使えばいいのですが、Windows専用でGUI操作です。Windowsを使いたくない人や、CUIで書き込みたい人が居ると思うので、いろいろ書いておきます。

書き込む前にマイコンをUSBでPCに接続し、DFUモードにしておいてください。

DfuSeを使う

Windows専用です。

URL: http://www.st.com/web/jp/catalog/tools/FM147/CL1794/SC961/SS1533/PF257916

上記URLから、STSW-STM32080をダウンロードし、インストールします。

インストール後の使い方は以下の通りです。

  1. 付属の「DfuFileMgr.exe」を使って、hex/bin/s19ファイルのいずれかをdfuファイルに変換する。(詳細は省略)
  2. 「DfuSeDemo.exe」を起動し、「Available DFU devices」から目的のデバイスを選ぶ。(目的のデバイスがない場合、認識されていません。デバイスマネージャーで確認して下さい。)
  3. 「Upgrade or Verify Action」の「Choose…」から、書き込みたいdfuファイルを選び、「Upgrade」を押す。

操作は全てGUIのため、書き込みまでに時間が掛かります。

 

DfuSeCommandを使う

Windows専用です。DfuSeDemoのコマンドラインバージョンです。

DfuSeに付属しているため、DfuSeをインストールすれば使用可能です。

コマンドラインで操作したい場合に使いますが、DfuSeではdfuファイルへの変換がGUIソフトでしかできないため、Hex2DFU.exeや、後述のDfuConvert.exeを使って変換を行います。

Hex2DFU.exeは、こちらのURLからダウンロードできます。ダウンロードして、Hex2DFU.exeをDfuSeと同じ場所に置いてください。

http://www.geocities.jp/altshibabou/win/cqstarm_dl.html

使い方は以下の通りです。

  1. Hex2DFU.exe hoge.hex hoge.dfu
  2. DfuSeCommand.exe -c -d --fn hoge.dfu

これは最小限必要なオプションです。1ではhexファイルをdfuファイルに変換しています。2では書き込みを行っています。

オプションの詳細は、それぞれ引数なしで実行すればヘルプが表示されるので、それを参考にしてください。

 

DFU Command Line Tools from KSKを使う

Windows専用です。マイコン徹底入門の環境に付属しています。一時期はWindows8.1で動作しませんでしたが、Windows8.1のアップデートにより動作するようになりました。

単体でのダウンロードはこちらのURLからできます。ダウンロードしてインストールしてください。

http://miqn.net/node/185

使い方は以下の通りです。

  1. DfuConvert.exe -n DFU_NAME -v 0483 -p DF11 -b 0 -ReadFileName hoge.hex -CreateFileName hoge.dfu
  2. DfuUpgrade.exe -DownFileName hoge.dfu -TargetIdSel 0
  3. DfuVerify.exe -DownFileName hoge.dfu -TargetIdSel 0

全てのオプションを書いています。省略した場合、para.txtから読み込まれます。ファイル名以外は基本的にこのままでいいはずです。

1ではhexファイルをdfuファルに変換しています。2では書き込みを行っています。3ではチェックを行っています。

オプションの詳細は、付属しているpdfの説明を読んでください。

 

DFUWを使う

Windows専用です。ストロベリー・リナックスの「STBee」「STBee Mini」にDFUで書き込むためのソフトですが、これら以外でも使えます。

こちらのURLからダウンロードし、解凍します。C:\cygwin\binにコピーすると指示がありますが、ここに置かなくても問題なさそうです。

http://strawberry-linux.com/stbee/dfuw

使い方は以下の通りです。

  1. dfuw.exe hoge.hex

これだけで書き込めます。引数はhexファイルのみです。

紹介しているソフトの中で、最も簡単に使えます。

 

dfu-utilを使う

Windows/Linux/Macで使用可能です。Unix向けですが、Windows用のバイナリも配布されています。

ドライバにlibusbを使います。Windowsで使う場合、zadigを使ってドライバをwinusb(libusb)に変更する必要があります。

バイナリが欲しい場合は、こちらのURLから最新版のバイナリ(dfu-util-0.7-binaries.7z)をダウンロードし、解凍してください。

http://dfu-util.gnumonks.org/releases/

自分でビルドしたい場合は、こちらのURLを参考にしてください。

http://dfu-util.gnumonks.org/build.html

使い方は以下の通りです。

  1. dfu-util -a0 -d 0x0483:0xdf11 -s 0x08000000 -D hoge.bin

オプションの詳細は、-hオプションを付ければヘルプが表示されるので、それを参考にしてください。

 

終わりに

こういうの書くのは苦手なのでかなり読みづらいと思います。ごめんなさい。

面倒なので図とか一切用意していません。ごめんなさい。

こういうのって、普通は図とか実際にやってる画像とか用意して説明するものだと思うけど、そこまでする気が起きませんでした。。

 

昔と違い、DFUでの書き込み環境が充実しているのにびっくりしました。

次はUARTでの書き込みに関してですかね。

STLink等のデバッガでの書き込みもそのうち書きますが、これはいろんな人が書いているので後回しで。

最近はCANとかI2Cとかでも書き込めるようですが、わざわざ使うことは無さそうなので書きません。

マイコンをCANやI2Cバス上に多数並べることがあるなら考えます。部内ではまさにそういう状況になっていますが、まだ個別に書き込める程度なのでやりません。

“STM32シリーズへの書き込み(DFU編)” への3,073件の返信

  1. I am extremely impressed with your writing skills and also with
    the layout on your blog. Is this a paid theme or did you modify it yourself?

    Either way keep up the excellent quality writing, it is rare to see a nice blog like this one these days.

  2. We are a group of volunteers and starting
    a new scheme in our community. Your site provided us with valuable information to work
    on. You have done an impressive job and our entire community will be grateful to
    you.

  3. Hi my loved one! I want to say that this article is awesome, great written and include
    almost all significant infos. I would like to see extra posts like
    this .

  4. Attractive section of content. I just stumbled upon your web site
    and in accession capital to say that I get actually enjoyed account your weblog posts.
    Anyway I’ll be subscribing on your augment or even I achievement
    you get right of entry to persistently fast.

  5. Its like you read my mind! You seem to know so much about
    this, like you wrote the book in it or something. I think that
    you can do with a few pics to drive the message home a bit, but other than that,
    this is wonderful blog. An excellent read. I will definitely
    be back.

  6. I was more than happy to discover this web site. I need to to thank you for your time due
    to this fantastic read!! I definitely appreciated every part of it and I have you book marked
    to check out new things on your web site.

  7. I am really impressed along with your writing abilities and also with the structure for
    your weblog. Is this a paid theme or did you customize it yourself?

    Either way stay up the nice quality writing, it’s rare to look a nice weblog like
    this one nowadays..

  8. Разрешение на строительство — это государственный акт, предоставляемый уполномоченными учреждениями государственной власти или муниципального самоуправления, который дает возможность начать возведение или выполнение строительного процесса.
    Разрешение на строительство формулирует юридические принципы и регламенты к стройке, включая предусмотренные типы работ, дозволенные материалы и способы, а также включает строительные нормативные акты и пакеты безопасности. Получение разрешения на стройку является обязательным документов для строительной сферы.

  9. Быстромонтируемые строения – это прогрессивные здания, которые отличаются великолепной скоростью возведения и мобильностью. Они представляют собой постройки, образующиеся из эскизно созданных компонентов либо модулей, которые могут быть быстрыми темпами установлены на месте строительства.
    Быстровозводимые производственные здания владеют гибкостью и адаптируемостью, что дозволяет просто менять и модифицировать их в соответствии с интересами покупателя. Это экономически продуктивное а также экологически надежное решение, которое в крайние лета заполучило маштабное распространение.

  10. köpa körkort, ta körkort i polen, köpa körkort utomlands, köpa svenskt körkort ,ta körkort utomlands, fake körkort, köpa falskt körkort, köpa körkort rumänien, utländskt körkort, körkort online, körkort bild
    körkort sverige ,svensk körkort ,köpa körkort i sverige ,falskt körkort ,köpa ett körkort, köp svenskt körkort ,kan man köpa körkort
    fejk körkort köra med utländskt körkort i sverige
    https://kopa-giltigtkorkort.com/