はじめに anchor.png

STM32F373に対応した弊社オリジナルブートローダです。
マイコンに備わったUSBを経由してホストからマイコンボードのフラッシュROMへユーザプログラムを転送及び書き込んだり、書き込まれたユーザプログラムを実行するといった機能を持ちます。
GCC Developer Liteにてソースプログラムからコンパイルでき、ユーザ自身による改造も可能です。
ファイルの送受信にはXMODMプロトコルを使用しますが、全てのXMODEMに対応したターミナルクライアントに対応するものではありません。

Page Top

基本仕様 anchor.png

Page Top

コンパイル方法 anchor.png

弊社提供のGCC Developer Lite最新版のインストールコンポーネントとして「STM32F373でのみ使用」、もしくは「フルインストール」が選択されている必要があります。

ソースをダウンロードし適宜解凍し、GCC Developer Liteでソースを開き、コンパイルオプションにて「STM32F373 (Flash)」の設定リストを選択し、さらに最適化レベルを「-Os」にしてコンパイルします。コンパイル後に生成される.binファイルをJTAG I/F等を介してフラッシュROMに書き込んだら準備完了です。

JTAGで接続する環境が無い場合は、まずバイナリ(.bin)ファイルではなくヘキサ(.hex)ファイルを生成させておきます。次に、STから提供されるDfuSeを使用します。DFU File Managerを起動してHEXファイルからDFU変換を選択します。

dfu_filemanage1.png

「S19 or Hex...」でコンパイル済み.hexファイルを読み込み、「Generate...」で.dfuファイルが生成されます。

dfu_filemanage2.png

最後に書き込みですが、ターゲットのブートモードをSystem memory(BOOT0を3.3Vに接続)にした後、USBケーブルでPCと接続します。本モードに対応したUSBのデバイスドライバ(STM Device in DFU Mode)はDfuSeをインストールした際にコピーされている筈なので、自動的に認識されると思います。
DfuSe Demonstrationを起動し、「Verify after download」にチェックをし、「Choose...」で先ほど生成した.dfuファイルを指定したら「Upgrade」を押して書き込みを行います。successfulが表示されたら作業完了です。

DfuSe.png
Page Top

ソース及びコンパイル済みバイナリのダウンロード anchor.png

バージョン: 1.0
公開日: 2014/08/20 更新内容:一般向けリリース

Page Top

メモリマップ anchor.png

本ブートローダはフラッシュROM上で動作するプログラムであり、一般のプログラムと何ら相違はありません。そのため、ブートローダ自身のサイズが大きいと、ユーザが使用できる領域が圧迫されてしまいます。
現在リリースしているバージョンでは占有フラッシュROM領域が16kbyte以下である前提とします。

bl_memmap.png

ユーザが使用できるフラッシュROMの領域は、ブートローダの後ろ0x08004000からフラッシュROMの最終アドレスまでとなります。

Page Top

ユーザプログラム anchor.png

ブートローダから実行を遷移させる事ができるユーザプログラムは、以下の条件を満たしていなければなりません。

  • 先頭アドレスが0x08004000にオフセットしており、ベクタテーブルがその先頭アドレスより配置されている
  • 0x08000000~0x08003FFFのフラッシュROM領域に対して書き込み操作を行わない

GCCを使用している場合は、リンカスクリプトファイルにてROMとして予約しているアドレスを修正すれば大抵のプログラムは動作するはずですが、それでも動作しない場合は広範な修正が必要になる場合もあります。

Page Top

注意事項 anchor.png

  • ブートローダ自身は単純なローダに過ぎませんので、GDB等のデバッガとの接続は考慮されていません。
Page Top

使用方法 anchor.png

Page Top

デバイスドライバ anchor.png

USBを仮想シリアルポートとして認識させるためのWindows用デバイスドライバは、GCC Developer Liteをインストールした際にWindowsのシステムフォルダにコピーされます。USBケーブルでマイコンボードとPCを接続するとデバイスドライバを要求されますが、自動検索させる事で自動的にインストールが行われます。
インストール後、新しいCOMポートがWindowsのデバイスとして追加され、SIMPLE TERMから該当するCOMポートを選択(COMポート番号はPCの環境によって変わるが、デバイス名に「STMicroelectronics Virtual COM Port (COMxxx)」が表示されたポートを選択)しオープンするとブートローダの各種コマンドが使用可能となります。

Page Top

ブートローダの動作フロー anchor.png

SAM7BL_BOOT_FLOW.png

ユーザプログラムへ実行が遷移するか、ブートローダがコマンドモードになるかの2つの状態に動作が分岐します。
ユーザプログラムへ実行が遷移する前にユーザ自らの操作でコマンドモードに遷移させる場合は、ハードリセット(リセットボタンの押下)を行います。ユーザプログラムが書き込まれていなければ、常にコマンドモードとなります。
また、ハードリセット以外の条件(WDTやソフトリセット等)でリセットされた場合は、再度ユーザプログラムへ実行が遷移します。

Page Top

コマンド anchor.png

SIMPLE TERMからのキー入力にて各種機能を実行します。

Page Top
ヘルプ '?' anchor.png

コマンドのリストを表示します。

>?
--< TIMSTM32F3 USB Ver.1.0 by BestTechnology >--
 [w]UPLOAD [r]DOWNLOAD [g]BOOT [d]DUMP [i]FLASH INFO [e]ERASE
>
Page Top
書き込み 'w' anchor.png

ホストからフラッシュROMへファイルを転送及び書き込みを行います。

>w
 START UPLOAD...
 ARE YOU SURE? (Y/N)

ここでyを入力すると転送を待ち受ける状態となりますので、STERMから任意のファイルを選択しXMODEMプロトコルで転送を開始させます。
成功すれば<SUCCESS>、失敗すると<ERROR>と表示されます。

>w
 START UPLOAD...
 ARE YOU SURE? (Y/N) y
 <SUCCESS>
>

本コマンドはユーザプログラムの実行は行わず、処理が完了するとコマンドモードに戻ります。

なお、既にユーザプログラムが書き込まれていると書き込みに失敗しますので、書き込む前には消去コマンドでユーザプログラム領域を消去する必要があります。

Page Top
実行 'g' anchor.png

フラッシュROMに書き込まれたユーザプログラムを実行します。

>g
 GO !!

ユーザプログラムが書き込まれていなければ、

>g
 FLASH IS EMPTY
>

というメッセージを表示してコマンドモードに戻ります。

Page Top
ソフトリセット 'x' anchor.png

マイコンをソフトリセットします。ユーザプログラムが既に書き込まれている場合は、リセットから復帰後ユーザプログラムが実行されます。

Page Top
メモリダンプ 'd' anchor.png

メモリを16進数でダンプ表示します。スタートアドレスを入力せずにエンターキーのみを押すと、ブートローダ内で想定しているユーザープログラムが保存されているアドレスの先頭を指定したと見なします。

>d
 START ADDRESS:$08004000
 08004000:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 08004010:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 08004020:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 08004030:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 08004040:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 08004050:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 08004060:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 08004070:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 08004080:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 08004090:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 080040A0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 080040B0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 080040C0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 080040D0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 080040E0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
 080040F0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
---([u]up [d]down [ESC]exit)---
Page Top
消去 'e' anchor.png

フラッシュROMのユーザプログラム領域を消去します。

>e
 ERASE ALL FLASH
 ARE YOU SURE? (Y/N)

ここでyを入力すると消去を開始します。

>e
 ERASE ALL FLASH
 ARE YOU SURE? (Y/N) y..........................................
 COMPLETED.
>

書き込まれているユーザプログラムのサイズやデバイスのメモリ容量によって消去時間は異なります。

Page Top
フラッシュステータス 'i' anchor.png

FSRレジスタ及びユーザプログラムの書き込み状況を表示します。ユーザプログラムが実行不可の場合は、Empty or Not Executableと表示されます。

>i
 FLASH: Empty or Not Executable
 OPTION BYTE: $00FF55AA $00FF00FF $00FF00FF $00FF00FF

ユーザプログラムが書き込まれているとEMPTYの表示はなされません。

>i
 FLASH: Not Empty
 OPTION BYTE: $00FF55AA $00FF00FF $00FF00FF $00FF00FF

Front page   Diff ReloadPrint View   Page list Search Recent changes   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Last-modified: 2014-08-20 (Wed) 13:26:06 (JST) (1765d)