現: 2013-12-31 (火) 15:01:33 takaboo ![]() |
|||
---|---|---|---|
Line 1: | Line 1: | ||
+ | TITLE:SAM3S Bootloader | ||
+ | #norelated | ||
+ | #contents | ||
+ | **はじめに [#c605accc] | ||
+ | SAM3Sマイコンボードシリーズに対応した弊社オリジナルブートローダです。~ | ||
+ | マイコンに備わったUARTないしUSBを経由してホストからマイコンボードのフラッシュROMへユーザプログラムを転送及び書き込んだり、書き込まれたユーザプログラムを実行するといった機能を持ちます。~ | ||
+ | [[GCC Developer Lite]]にてソースプログラムからコンパイルでき、ユーザ自身による改造も可能です。~ | ||
+ | ファイルの送受信にはXMODMプロトコルを使用しますが、全てのXMODEMに対応したターミナルクライアントに対応するものではありません。 | ||
+ | **基本仕様 [#pacb5765] | ||
+ | ***適用コンパイラとコンパイル方法 [#a871c2bd] | ||
+ | 弊社提供の[[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:http://www.atmel.com/tools/atmelsam-bain-systemprogrammer.aspx]]を使用して書き込みます。 | ||
+ | |||
+ | ***ソース及びコンパイル済みバイナリのダウンロード [#DOWNLOAD] | ||
+ | #ref(SAM3_BL_1.0.ZIP) | ||
+ | バージョン: 1.0~ | ||
+ | 公開日: 2013/12/25~ | ||
+ | 更新内容: | ||
+ | |||
+ | ***メモリマップ [#naced177] | ||
+ | ブートローダはフラッシュROM上で動作するプログラムであり、一般のプログラムと何ら相違はありません。~ | ||
+ | #ref(bl_memmap.png,100%) | ||
+ | ユーザが使用できるフラッシュROMの領域は、ブートローダの後ろ0x403000からフラッシュROMの最終番地までとなります。 | ||
+ | |||
+ | ***ユーザプログラム [#e3aee48c] | ||
+ | ブートローダから実行を遷移させる事ができるユーザプログラムは、以下の条件を満たしていなければなりません。 | ||
+ | -起動アドレスが0x403000番地である | ||
+ | -0x400000~0x402FFF番地のフラッシュROMエリアに対して書き込み操作を行わない | ||
+ | |||
+ | GCCを使用している場合は、リンカスクリプトファイルにてROMとして予約しているアドレスを修正すれば大抵のプログラムは動作するはずですが、それでも動作しない場合は広範な修正が必要になる場合もあります。~ | ||
+ | |||
+ | ***注意事項 [#b43c9e15] | ||
+ | -ブートローダ自身は単純なローダに過ぎませんので、GDB等のデバッガとの接続は考慮されていません。 | ||
+ | -ブートローダの更新や、ブートローダを使用せずにSAM-BAやJTAGを利用する場合は、ハード的にマイコンの消去操作を行う必要があります。 | ||
+ | |||
+ | **使用方法 [#rcdc0e7c] | ||
+ | [[SIMPLE TERM>GDL#STERM]]からのキー入力にて各種機能を実行します。 | ||
+ | ***ブートローダの動作フロー [#BOOTFLOW] | ||
+ | #ref(SAM3BL_BOOT_FLOW.png,100%) | ||
+ | ユーザプログラムへ実行が遷移するか、ブートローダがコマンドモードになるかの2つの状態に動作が分岐します。~ | ||
+ | ユーザプログラムへ実行が遷移する前にユーザ自らの操作でコマンドモードに遷移させる場合は、ハードリセット(リセットボタンの押下)を行います。ユーザプログラムが書き込まれていなければ、常にコマンドモードとなります。~ | ||
+ | また、ハードリセット以外の条件(WDTやソフトリセット等)でリセットされた場合は、再度ユーザプログラムへ実行が遷移します。 | ||
+ | ***コマンド [#meccc260] | ||
+ | ****ヘルプ '?' [#c0e8e7fb] | ||
+ | コマンドのリストを表示します。 | ||
+ | >? | ||
+ | --< 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 | ||
+ | > | ||
+ | |||
+ | ****書き込み 'w' [#ad7e486a] | ||
+ | ホストからフラッシュROMへファイルを転送及び書き込みを行います。 | ||
+ | >w | ||
+ | START UPLOAD... | ||
+ | ARE YOU SURE? (Y/N) | ||
+ | ここでyを入力すると転送を待ち受ける状態となりますので、STERMから任意のファイルを選択しXMODEMプロトコルで転送を開始させます。~ | ||
+ | 成功すれば<SUCCESS>、失敗すると<ERROR>と表示されます。 | ||
+ | >w | ||
+ | START UPLOAD... | ||
+ | ARE YOU SURE? (Y/N) y | ||
+ | <SUCCESS> | ||
+ | > | ||
+ | 本コマンドはユーザプログラムの実行は行わず、処理が完了するとコマンドモードに戻ります。 | ||
+ | |||
+ | ****実行 'g' [#qf5a6d14] | ||
+ | フラッシュROMに書き込まれたユーザプログラムを実行します。 | ||
+ | >g | ||
+ | GO !! | ||
+ | ユーザプログラムが書き込まれていなければ、 | ||
+ | >g | ||
+ | FLASH IS EMPTY | ||
+ | > | ||
+ | というメッセージを表示してコマンドモードに戻ります。 | ||
+ | |||
+ | ****ソフトリセット 'x' [#d244db32] | ||
+ | マイコンをソフトリセットします。ユーザプログラムが既に書き込まれている場合は、リセットから復帰後ユーザプログラムが実行されます。 | ||
+ | ****メモリダンプ 'd' [#p1277ca5] | ||
+ | メモリを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)--- | ||
+ | |||
+ | ****消去 'e' [#d766a2f2] | ||
+ | フラッシュROMのユーザプログラムエリアを消去します。 | ||
+ | >e | ||
+ | ERASE ALL FLASH | ||
+ | ARE YOU SURE? (Y/N) | ||
+ | ここでyを入力すると消去を開始します。 | ||
+ | >e | ||
+ | ERASE ALL FLASH | ||
+ | ARE YOU SURE? (Y/N) y.................... | ||
+ | <SUCCESS> | ||
+ | > | ||
+ | 書き込まれているユーザプログラムのサイズやデバイスのメモリ容量によって消去時間は異なります。 | ||
+ | |||
+ | ****フラッシュステータス 'i' [#cd365f67] | ||
+ | ユーザプログラムの書き込み状況を表示します。ユーザプログラムが空の場合は、FLASH IS EMPTYと表示されます。 | ||
+ | >i | ||
+ | FLASH: Empty or Not Executable | ||
+ | ユーザプログラムが書き込まれているとEMPTYの表示はなされません。 | ||
+ | >i | ||
+ | FLASH: Not Executable |