SAM3Sマイコンボードシリーズに対応した弊社オリジナルブートローダです。
マイコンに備わったUARTないしUSBを経由してホストからマイコンボードのフラッシュROMへユーザプログラムを転送及び書き込んだり、書き込まれたユーザプログラムを実行するといった機能を持ちます。
GCC Developer Liteにてソースプログラムからコンパイルでき、ユーザ自身による改造も可能です。
ファイルの送受信にはXMODMプロトコルを使用しますが、全てのXMODEMに対応したターミナルクライアントに対応するものではありません。
弊社提供のGCC Developer Lite最新版のインストール先に「C:\Program Files\BestTech」フォルダを指定し、インストールコンポーネントとして「SAM3S4シリーズでのみ使用」または「SAM3Sシリーズでのみ使用」、もしくは「フルインストール」が選択されている必要があります。
ソースをダウンロードし解凍したらMAKE_ALL.BATを実行し、コンパイルします。使用ポートが異なる場合は SAM3TARGETLIST.txt を適宜編集します。
コンパイル済みのファイルは、SAM3S_[選択ポート]_[RS485対応]_BOOTLOADER.bin という名称で作られ、例えばUSART1をRS485 I/Fで使用する場合は SAM3S4_USART1_RS485_BOOTLOADER.bin となります。
JTAGで接続する環境が無い場合は、SAM-BAを使用して書き込みます。
ブートローダはフラッシュROM上で動作するプログラムであり、一般のプログラムと何ら相違はありません。
ユーザが使用できるフラッシュROMの領域は、ブートローダの後ろ0x403000からフラッシュROMの最終番地までとなります。
ブートローダから実行を遷移させる事ができるユーザプログラムは、以下の条件を満たしていなければなりません。
GCCを使用している場合は、リンカスクリプトファイルにてROMとして予約しているアドレスを修正すれば大抵のプログラムは動作するはずですが、それでも動作しない場合は広範な修正が必要になる場合もあります。
SIMPLE TERMからのキー入力にて各種機能を実行します。
ユーザプログラムへ実行が遷移するか、ブートローダがコマンドモードになるかの2つの状態に動作が分岐します。
ユーザプログラムへ実行が遷移する前にユーザ自らの操作でコマンドモードに遷移させる場合は、ハードリセット(リセットボタンの押下)を行います。ユーザプログラムが書き込まれていなければ、常にコマンドモードとなります。
また、ハードリセット以外の条件(WDTやソフトリセット等)でリセットされた場合は、再度ユーザプログラムへ実行が遷移します。
コマンドのリストを表示します。
>? --< TIMSAM3S4 USB Ver.1.0 by BestTechnology >-- 19:24:01 Dec 30 2013 [w]UPLOAD [r]DOWNLOAD [g]BOOT [x]REBOOT [d]DUMP [e]ERASE [l]SET LOCK BIT [u]CLEAR LOCK BIT >
ホストからフラッシュROMへファイルを転送及び書き込みを行います。
>w START UPLOAD... ARE YOU SURE? (Y/N)
ここでyを入力すると転送を待ち受ける状態となりますので、STERMから任意のファイルを選択しXMODEMプロトコルで転送を開始させます。
成功すれば<SUCCESS>、失敗すると<ERROR>と表示されます。
>w START UPLOAD... ARE YOU SURE? (Y/N) y <SUCCESS> >
本コマンドはユーザプログラムの実行は行わず、処理が完了するとコマンドモードに戻ります。
フラッシュROMに書き込まれたユーザプログラムを実行します。
>g GO !!
ユーザプログラムが書き込まれていなければ、
>g FLASH IS EMPTY >
というメッセージを表示してコマンドモードに戻ります。
メモリを16進数でダンプ表示します。スタートアドレスを入力せずにエンターキーのみを押すと、ブートローダ内で想定しているユーザープログラムが保存されているアドレスの先頭を指定したと見なします。
>d START ADDRESS:$00403000 00403000:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00403010:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00403020:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00403030:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00403040:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00403050:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00403060:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00403070:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00403080:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 00403090:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 004030A0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 004030B0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 004030C0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 004030D0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 004030E0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ 004030F0:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................ ---([u]up [d]down [ESC]exit)---