ページへ戻る

− Links

 印刷 

SAM3S Bootloader :: Besttechnology

knowledge:SAM3S Bootloader

ページ内コンテンツ
    • はじめに
    • 基本仕様
      • 適用コンパイラとコンパイル方法
      • ソース及びコンパイル済みバイナリのダウンロード
      • メモリマップ
      • ユーザプログラム
      • 注意事項
    • 使用方法
      • ブートローダの動作フロー
      • コマンド
        • ヘルプ '?'
        • 書き込み 'w'
        • 実行 'g'
        • ソフトリセット 'x'
        • メモリダンプ 'd'
        • 消去 'e'
        • フラッシュステータス 'i'

はじめに anchor.png[1]

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

Page Top

基本仕様 anchor.png[3]

Page Top

適用コンパイラとコンパイル方法 anchor.png[4]

弊社提供のGCC Developer Lite[2]最新版のインストール先に「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[5]を使用して書き込みます。

Page Top

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

バージョン: 1.0
公開日: 2013/12/25
更新内容:

Page Top

メモリマップ anchor.png[8]

ブートローダはフラッシュROM上で動作するプログラムであり、一般のプログラムと何ら相違はありません。

bl_memmap.png

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

Page Top

ユーザプログラム anchor.png[9]

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

  • 起動アドレスが0x403000番地である
  • 0x400000~0x402FFF番地のフラッシュROMエリアに対して書き込み操作を行わない

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

Page Top

注意事項 anchor.png[10]

  • ブートローダ自身は単純なローダに過ぎませんので、GDB等のデバッガとの接続は考慮されていません。
  • ブートローダの更新や、ブートローダを使用せずにSAM-BAやJTAGを利用する場合は、ハード的にマイコンの消去操作を行う必要があります。
Page Top

使用方法 anchor.png[11]

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

Page Top

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

SAM3BL_BOOT_FLOW.png

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

Page Top

コマンド anchor.png[14]

Page Top
ヘルプ '?' anchor.png[15]

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

>?
--< 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
>
Page Top
書き込み 'w' anchor.png[16]

ホストからフラッシュ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[17]

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

>g
 GO !!

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

>g
 FLASH IS EMPTY
>

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

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

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

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

メモリを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)---
Page Top
消去 'e' anchor.png[20]

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

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

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

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

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

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

ユーザプログラムの書き込み状況を表示します。ユーザプログラムが空の場合は、FLASH IS EMPTYと表示されます。

>i
 FLASH: Empty or Not Executable

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

>i
 FLASH: Not Executable

Last-modified: 2013-12-31 (火) 15:01:33 (JST) (3761d) by takaboo