ページへ戻る

− Links

 印刷 

BTC092 AT91SAM7S32マイコンボード :: Besttechnology

knowledge:BTC092 AT91SAM7S32マイコンボード

ページ内コンテンツ
    • 概要
    • 基本仕様
      • 外観
      • 回路図
      • 端子配置・外形
      • コネクタ・端子・スイッチ等
        • CN1
        • CN2
        • CN3
        • JP1
        • D1(LED)
        • SW1(スライドスイッチ)
        • PB1(プッシュスイッチ)
    • 各機能の詳細
      • 電源
      • RS232C
      • スライドスイッチ(SW1)
      • プッシュスイッチ(PB1)
    • 開発環境
      • GCC Developer Lite
        • ターゲットファイル
        • SIMPLE TERMとブートローダ
        • FLASH WRITER
          • FLASH WRITERとSAM-BA
          • FLASH WRITERとOpenOCD
    • JTAG I/F
    • LOCKEビット
    • SAM7S用ライブラリ
    • サンプルプログラム
    • その他

ショップページへ[1]

概要 anchor.png[2]

ARM7TDMIコアを内蔵したAtmel社製AT91SAM7S32を搭載したマイコンボードです。ボード上にはRS232Cポート、SAM-BA(SAM Boot Assistant)切替スイッチ等を装備し、外部端子にはマイコンのほぼ全ての端子が割り当てられています。

Page Top

基本仕様 anchor.png[3]

商品番号BTC092
PCBリビジョンE040 (2層)
CPUMicrochip AT91SAM7S32[4]
メモリフラッシュROM: 32kbyte
SRAM: 8kbyte
クロック外部オシレータ:16MHz (内部はCKGR・PMCによりプログラマブル)
通信機能RS232Cレベル変換装備 (DBGUのみ)
動作温度0~+50℃
動作電圧DC3.3V, DC1.8V(CORE)
消費電流35mA (MAX)
寸法W29.5×D26.5mm (参考)
コネクタ等20ピン端子×2, 通信用ピンヘッダ×1, SAM-BAモード切り替えスイッチ×1, リセットボタン×1, 電源モニタLED
付属品2列ピンヘッダ
環境配慮RoHS準拠, 鉛フリー半田
Page Top

外観 anchor.png[5]

topbottom
Page Top

回路図 anchor.png[8]

Page Top

端子配置・外形 anchor.png[10]

AT91SAM7S32_1.png
Page Top

コネクタ・端子・スイッチ等 anchor.png[11]

Page Top
CN1 anchor.png[12]
  • 2.54mmピッチ2列 20ピン
  • 推奨ピンヘッダ:ヒロセ電機 HIF3H-20PB-2.54DSA
  • 推奨レセプタクル:ヒロセ電機 HIF3H-20DA-2.54DSA
    No.端子名No.端子名
    1TDI2PA7/PGMNVALID
    3PA6/PGMNOE4PA5/PGMRDY
    5PA4/PGMNCMD6NRST
    7TST8PA3
    9PA2/PAGMEN210PA1/PGMEN1
    11PA0/PGMEN012TDO
    13JTAGSEL14TMS
    15TCK16ERASE
    17VCC18VCC
    19GND20GND
Page Top
CN2 anchor.png[13]
  • 2.54mmピッチ2列 20ピン
  • 推奨ピンヘッダ:ヒロセ電機 HIF3H-20PB-2.54DSA
  • 推奨レセプタクル:ヒロセ電機 HIF3H-20DA-2.54DSA
    No.端子名No.端子名
    1GND2PA8/PGMM0
    3PA9/PGMM14PA10/PGMM2
    5PA11/PGMM36PA12/PGMD0
    7PA13/PGMD18PA14/PGMD2
    9PA15/PGMD310PA16/PGMD4
    11PA20/AD312PA19/PGMD7/AD2
    13PA18/PGMD6/AD114PA17/PGMD5/AD0
    15AD716AD6
    17AD518AD4
    19ADVREF20GND
Page Top
CN3 anchor.png[14]
  • 2mmピッチ 3ピン ヒロセ電機 A4B-03PA-2DSA(71)
  • 推奨圧着ソケット:ヒロセ電機 A4B-03S-2C
  • PA9とPA10端子をRS232Cレベルに変換
  • PA9/PA10はJP1を半田ジャンパすることでRS232Cレベル変換ICと切り離し可能
    No.端子名I/O
    1TX (RS232C←PA10)O
    2GND-
    3RX (RS232C→PA9)I
Page Top
JP1 anchor.png[15]
  • RS232Cレベル変換のレシーバイネーブル制御(RS232Cレベル変換ICのEN端子に接続)
  • オープン:レシーバイネーブル, ショート:レシーバディスエーブル
  • 出荷時オープン
Page Top
D1(LED) anchor.png[16]
  • マイコンボードに電源を印加すると点灯
Page Top
SW1(スライドスイッチ) anchor.png[17]
  • SAM-BAとあるシルク側に切り替えることでマイコンのTSTとVCC(3.3V)を短絡
Page Top
PB1(プッシュスイッチ) anchor.png[18]
  • 押下でマイコンのNRST端子をGNDへ短絡
Page Top

各機能の詳細 anchor.png[19]

Page Top

電源 anchor.png[20]

CN1-17,18(VCC)とCN1-19,20(GND)間に安定したDC3.3Vを供給します。

Page Top

RS232C anchor.png[21]

CN3にはマイコンのDBGU端子をRS232Cレベルに変換した信号が接続されます。主にPCのCOMポートと接続し、プログラムの転送やデバッグに使用します。
接続するホストに応じて以下の通信ケーブルないしI/Fがオプションで使用できます。

Page Top

スライドスイッチ(SW1) anchor.png[27]

SW1のコモンにはマイコンのTST端子が接続されています。シルクのSAM-BAと記述された方向に切り替えるとVCC(DC3.3V)に接続、その反対に切り替えるとオープン(TST端子に内蔵されたプルダウン抵抗でGND)となります。
SW1はAtmel社提供のSAM-BAソフトウェアを使用してマイコン内蔵のフラッシュROMを操作するといった用途で使用し、それ以外の目的では使用されません。
出荷時に予めフラッシュROMへ弊社オリジナルのブートローダが書き込まれているため、SAM-BAを使用しない限りSW1はSAM-BAとあるシルクとは反対側に切り替えて使用します。
なお、本スイッチを不用意に操作するだけでフラッシュROMの内容が書き換えられてしまいます。SAM-BAを必要としない場合や、不用意な書き換え操作を発生させたくない場合は、本スイッチを除去する事をお勧めします。
※出荷時期やキットの構成によってはSW1が実装されない場合があります。

Page Top

プッシュスイッチ(PB1) anchor.png[28]

PB1にはマイコンのNRST端子が接続されています。押下されるとNRST端子がGNDに接続されます。
なお、マイコンのリセットコントローラ適宜設定しない限り、NRST端子はチップリセットを目的として使用することはできません。

Page Top

開発環境 anchor.png[29]

Page Top

GCC Developer Lite anchor.png[30]

GCC Developer Liteの詳細についてはこちら[31]
「基本パック」と「ARMパック」をダウンロードしてインストールしてください。なおARMパックインストールの際に表示されるコンポーネントの選択画面では「AT91SAM7Sシリーズでのみ使用」を選択してください。

ArmPackATSAM7S.png

AT91SAM7で使用される主要なコンポーネントを簡単に示します。

  • GCC Developer Lite[32]

    ソースプログラムを編集するためのテキストエディタとその他のツールを起動するためのランチャ機能を有する。

  • FLASH WRITER[33]

    ターゲットのフラッシュROM等へコンパイルされたプログラムをSAM-BAないしCOMポート経由で書き込む。
    USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。

  • SIMPLE TERM[34]

    汎用シリアルターミナル。簡易的なTELNETクライアントとしても機能する。
    USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。

  • ARMGCC

    ARMコア向けC/C++言語向けのコンパイラ。出来る限り最新のパッチを適用しているため、時に互換性を失う。

  • デバイスドライバ

    Atmel社提供のSAM-BA用USBドライバと、弊社提供のUSB CDCエミュレーションドライバ。

  • OpenOCD[35]

    TINY JTAG-ICE2の制御を行うデーモン。JTAGを使用する場合は全て本デーモンを仲介する。

  • ターゲットファイル

    マイコンの内蔵ペリフェラルを定義したヘッダファイルやUARTを簡便に使うためのAPI、USBをシリアルポートとして使用するためのAPI、GDBにてデバッグする際に使用する初期化ファイル、シリーズ毎に異なるメモリマップを定義したリンカスクリプトファイル、スタートアップルーチンを含む。基本的にコンパイル済みライブラリとしてソースとリンクして使用する。

Page Top
ターゲットファイル anchor.png[36]

GCC Developer Liteでは本マイコン用の設定を複数備えています。
例えば、ARMコアの学習・組み込み向けCコンパイラの習熟・マイコン内蔵ペリフェラルの機能を熟知するといった段階ではJTAGを使ってRAM上でデバッグし、慣れてきたらブートローダを経由してprintfデバッグ、最終的に製品等としてリリースして完成させる時はフラッシュROMに、といった段階を踏む場合でもGCC Developer Liteのコンパイルオプションの設定リストから選択し直すだけで設定が完了します。

GDL_CompilerOption_TargetList..png

以下に本マイコンボードに対応した設定リストの一覧とその設定における機能の違いを紹介します。

  • AT91SAM7S32 (Bootloader, ARM mode)

    ビルドするとブートローダ[37]にてマイコンのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。
    プログラムのスタートアドレスが0x102000に設定される以外は、フラッシュROM上で動作するプログラムと基本的に相違は無い。
    ビルドが成功すると、STERM.exe(SIMPLE TERM)の起動を促される。

  • AT91SAM7S32 (Bootloader, THUMB mode)

    ビルドするとブートローダ[37]にてマイコンのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。
    Thumb 16ビット圧縮命令を出力するため、ARM modeよりも出力コードサイズが小さくなる。
    プログラムのスタートアドレスが0x102000に設定される以外は、フラッシュROM上で動作するプログラムと基本的に相違は無い。
    ビルドが成功すると、STERM.exe(SIMPLE TERM)の起動を促される。

  • AT91SAM7S32 (RAM, ARM mode)

    ビルドするとOpenOCDにてマイコンのSRAM上で動作させるための.exe(実態はelf)ファイルが作られる。
    プログラムのスタートアドレスは0x200000(SRAMの先頭アドレス)に設定される。
    マイコンにはSRAMからプログラムを起動させる機能が無いためJTAGによる制御が必須。
    ビルドが成功すると、OpenOCD[35]を使用してSRAMへの書き込み・実行を行わせるため、仲介役のFW.exe(FLASH WRITER)の起動を促される。

  • AT91SAM7S32 (RAM, THUMB mode)

    ビルドするとOpenOCDにてマイコンのSRAM上で動作させるための.exe(実態はelf)ファイルが作られる。
    Thumb 16ビット圧縮命令を出力するため、ARM modeよりも出力コードサイズが小さくなる。
    プログラムのスタートアドレスは0x200000(SRAMの先頭アドレス)に設定される。
    マイコンにはSRAMからプログラムを起動させる機能が無いためJTAGによる制御が必須。
    ビルドが成功すると、openOCD[35]を使用してSRAMへの書き込み・実行を行わせるため、仲介役のFW.exe(FLASH WRITER)の起動を促される。

  • AT91SAM7S32 (Flash, ARM mode)

    ビルドするとSAM-BAにてマイコンのフラッシュROMへ書き込むための.bin(バイナリ)ファイルが作られる。
    ビルドが成功すると、SAM-BAモードを使用して書き込みを行うため、FW.exe(FLASH WRITER)の起動を促される。

  • AT91SAM7S32 (Flash, THUMB mode)

    ビルドするとSAM-BAにてマイコンのフラッシュROMへ書き込むための.bin(バイナリ)ファイルが作られる。
    Thumb 16ビット圧縮命令を出力するため、ARM modeよりも出力コードサイズが小さくなる。
    ビルドが成功すると、SAM-BAモードを使用して書き込みを行うため、FW.exe(FLASH WRITER)の起動を促される。

Page Top
SIMPLE TERMとブートローダ anchor.png[38]

マイコンのフラッシュROMには出荷時に弊社オリジナルのブートローダ[37]が書き込まれています。
ブートローダはJTAGやその他の特殊なI/Fを使用せずとも、USBないしCOMポートを使用してマイコンのプログラム書き換えや操作を行う事が出来ます。 ブートローダを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成されたプログラムをブートローダで転送しても動作しません。

  • AT91SAM7S32 (Bootloader, ARM mode)
  • AT91SAM7S32 (Bootloader, THUMB mode)

マイコンボードは出荷時にDBGUをコンソールとして構成されたブートローダが書き込まれており、PCとマイコンボードをRS232Cケーブルで接続する必要があります。
SIMPLE TERMから該当するCOMポートを選択(COMポート番号はPCの環境によって適宜選択)しオープンするとブートローダの各種コマンドが使用可能となります。その他の設定は以下の通りです。

Baudrate:115200
Databits:8
Stopbits:1
Parity:Non
Flow Control:Non
AT91SAM7_BL_COM.png

既にユーザプログラムが書き込まれているマイコンボードは、電源を投入するとユーザプログラムが即時実行されます。ユーザプログラムが書き込まれたマイコンでブートローダのコマンドモードを使用するには以下の手順を踏みます。

  1. SIMPLE TERMで該当のCOMポートを開く。
  2. PB1を押してリセットする。
  3. SIMPLE TERMのターミナルウィンドウにブートローダからのメッセージが表示される事を確認する。

ブートローダの詳細及びコマンドモードの使い方等はこちら[37]

先の設定リストでソースプログラムをコンパイルし成功するとSTERM.exe(SIMPLE TERM)の起動を促されます。「OK」を押してSIMPLE TERMを起動すると、特殊な設定が追加されてSIMPLE TERMが起動します。

  • 既にSIMPLE TERMが実行中であれば2重に起動しない。
  • コンパイル済み.binファイルの情報が渡る(ステータスバーにて確認可)。
  • ユーザプログラムを転送する際の手順を記述したスクリプトファイルが使用できる様になる。
sterm_script.png

「スクリプト実行[STERM SAM7]」をクリックすると、ブートローダがコマンドモードになっている事の確認とコマンドモードへの遷移や転送するファイルの選択までの処理を自動的に行います。何らかの問題が生じると、その時点でスクリプトの実行は中断します。

sterm_script2.png

本機能により、手動で間違ったファイルを選択して転送してしまったり、ブートローダがコマンドモードでない状態で転送をしてしまうといったミスは発生しなくなります。

Page Top
FLASH WRITER anchor.png[39]

様々なマイコンに対応した転送ツールです。本マイコンにおいては2種類の転送方法に対応します。
どちらを選択するかはユーザに委ねられます。CPUコアやプログラムの詳細なデバッグも行うついでにメモリの書き換えを行うという場合のみOpenOCD[35]、フラッシュROMの書き換えさえ出来ればよいのであればSAM-BAを選択するのが一般的です。
FLASH WRITERを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成さAれたプログラムをFLASH WRITERで転送しても動作しません。

  • AT91SAM7S32 (RAM, ARM mode)

    OpenOCD[35]を経由してSRAMに転送実行。

  • AT91SAM7S32 (RAM, THUMB mode)

    OpenOCD[35]を経由してSRAMに転送実行。

  • AT91SAM7S32 (Flash, ARM mode)

    SAM-BAを経由してフラッシュROMに転送実行。コンパイルオプションを変更すればOpenOCD[35]を経由して書き込む事も可能。

  • AT91SAM7S32 (Flash, THUMB mode)

    SAM-BAを経由してフラッシュROMに転送実行。コンパイルオプションを変更すればOpenOCD[35]を経由して書き込む事も可能。

      :idea:LOCKEビットがONの場合ここでの操作が抑止されるため、予めLOCKEビットをOFFにした上で操作する必要があります。

Page Top
FLASH WRITERとSAM-BA anchor.png[40]

Atmel社独自のマイコンに予め備わったブートローダの通信プロトコルに従ってフラッシュROMの書き換えを行います。対応するポートはDBGU(RS232C CN3)となります。
マイコンをSAM-BAモードに移行させるには、その都度以下の操作を行います。

  1. マイコンボードへの電源の供給を絶つ。
  2. TST端子(CN1-1)を3.3Vに接続する、ないしSW1をSAM-BAと書かれた側に切り替える。
  3. PA0, PA1, PA2を3.3Vに接続する。(PA0, PA1, PA2端子へ外部回路が接続されていなければ各端子はオープン状態で構わない)
  4. マイコンボードへ電源を供給し、5~10秒程度そのまま維持する。
  5. マイコンボードへの電源供給を絶ち、TST端子をオープンにする、ないしSW1をSAM-BAと書かれた反対側に切り替える。
  6. マイコンは内部的にSAM-BAモードに移行するが、外観から確認する方法は無い。
AT91SAM7_SAMBA_COM.png

マイコンボードとPCをRS232Cケーブルで接続した上で適宜COMポートを選択し、書き込むファイルを選択した後、Executeを押すと書き込みを開始します。
書き込みが正常終了すると、SAM-BAモードを抜けて書き込まれたプログラムを即時実行します。再度SAM-BAで書き込む際は、もう一度電源を切ってモードを切り替えるフローを1.から実行する必要があります。

Page Top
FLASH WRITERとOpenOCD anchor.png[41]

TINY JTAG-ICE2でマイコンのJTAG I​/FとPCを接続し、OpenOCD[35]を仲介してマイコンのフラッシュROMないしSRAMの書き換えを行います。
予めOpenOCD[35]を起動しておくとFLASH WRITERのPORTに列挙されますので、「OpenOCD (TELNET)」を選択します。

AT91SAM7_OCD_TELNET.png

書き込みが正常終了すると、書き込まれたプログラムを即時実行します。

Page Top

JTAG I/F anchor.png[42]

作成したプログラムをマイコンのフラッシュROMに転送するには、一般に別途特殊なI/Fやハードウェアを必要とします。これらはチップベンダーの方針やその時代のトレンドで変わります。
ARMコアを内蔵したマイコンであれば大抵JTAG I/Fが備わっており、JTAG ICEでホストと接続する事でCPUコアの制御やメモリの操作を行う事ができます。 マイコンボードには直接JTAG I/Fに接続するコネクタが装備されていませんので、別途JTAG ICEと接続するコネクタを増設する必要があります。

AT91SAM7_JTAG_CONNECTION.png

TINY JTAG-ICE2と接続する場合も同様のコネクタが必要となります。

Page Top

LOCKEビット anchor.png[43]

2009年6月以降に出荷されるマイコンボードは、ブートローダ[37]保護の目的でNVMのLOCKEビットをONに設定されています。本設定によりスライドスイッチ(SW1)によるSAM-BAモード移行の操作と、JTAG I/Fからのアクセスが全て制限されます。
ブートローダ[37]以外の方法でプログラミングやデバッグを行う場合は、予め以下の操作でLOCKEビットをOFFにする必要があります。

  1. マイコンボードへの電源の供給を絶つ。
  2. ERASE端子(CN1-14)を3.3Vに接続する。
  3. マイコンボードへ電源を供給し、5~10秒程度そのまま維持する。
  4. マイコンボードへの電源供給を絶ち、ERASE端子をオープンにする。
  5. もしそれでもSAM-BAやJTAG I/Fが使用できない場合はもう一度1.から繰り返す。 若干煩雑ですが、本操作にてマイコンのNVMやフラッシュROMは製造初期状態に初期化され、SAM-BAやJTAG I/Fが使用可能になります。
Page Top

SAM7S用ライブラリ anchor.png[44]

GCC Developer Lite[31]では1つのソースプログラムのみを対象とするため、機能別にソースを分割して編集やコンパイルするといった使い方は出来ません(完全にできないという訳でもありません)。だからと言って全ての機能を一つのソースに記述する事は、プログラムの見通しが悪くなりバグの温床になりかねません。
そこで、複数のソースに分割する事無くある程度のソースプログラムサイズでコーディングするために、頻繁に使用されるであろう一部の機能が専用のライブラリとして提供されます。
GCC Developer Liteを標準的な環境のPCへインストールすると、「C:\Program Files\BestTech\GCC Developer Lite\TARGET\SAM7S」フォルダに必要なファイルがコピーされます。必要に応じて本フォルダを参照できますし、ユーザがソースを修正しライブラリを再構築する事も可能です。

  • スタートアップルーチン

    C言語で作成したプログラムを実行させるために、アセンブラないしC言語で記述された必要最低限の初期化処理プログラムです。
    boot_remap.s (スタートアップルーチン本体のソースファイル)
    remap.c (REMAP処理用のソースファイル)
    boot.o, boot_thumb.o (アセンブル済みオブジェクトファイル)

  • リンカスクリプトファイル

    実行条件に応じたメモリの割り当てを記述したファイルです。コンパイル時にリンカが参照し、コードの最終的な配置が決定されます。
    sam7s32_ram.x (SRAM上で実行させるリンカスクリプト)
    sam7s32_rom.x (フラッシュROM上で実行させるリンカスクリプト)
    sam7s32_rom_term.x (ブートローダ[37]を介して実行させるリンカスクリプト)

  • 内蔵ペリフェラルのレジスタ名定義ヘッダファイル

    マイコンに内蔵された各種ペリフェラルが持つレジスタは、決められたメモリ上のアドレスに配置されています。それらレジスタをアドレスではなくレジスタ毎に決められた名称を使い、変数のようにアクセスするためのマクロ定義が記述されています。
    AT91SAM7S.h (レジスタのマクロ定義)
    AT91SAM7S_BITDEFINE.h (各レジスタのビット情報)

  • UART API

    作成したプログラムの動作を確認を行う際に、マイコンのシリアルポートを使用する事を推奨しています。マイコンと文字によるコミュニケーション機能を用意する事で、レジスタの値やプログラムの進捗の把握、さらにはマイコンに対してPCから指令を与えるといった使い方が出来ます。
    本マイコンには複数のシリアルポートが備わっており、制御方法も多種多様なため、それに応じてライブラリとして提供する通信用APIも多くなっています。
    us.h (APIのプロトタイプ宣言を含むヘッダファイル)
    dbgu2~.c (DBGUポートを割り込みで使用するAPIのソース群)

  • PIO初期化API

    煩雑なPIOの初期化を簡便に行うためのAPIです。Atmel社の提供するサンプルコードと互換性を持っています。
    piocfg.h (APIのプロトタイプ宣言を含むヘッダファイル)
    piocfg.c (APIのソースファイル)

  • IRQ/FIQ制御API

    IRQとFIQの各割り込みを制御するには、コンパイラに依存するコードが必要です。簡便のためAPIとして提供します。
    vic.h (APIのプロトタイプ宣言を含むヘッダファイル)
    vic.c (APIのソースファイル)

  • ライブラリファイル

    各APIとremap.cをコンパイルし、一つのライブラリファイルにアーカイブして提供します。
    makelib.bat (APIをARMモードでコンパイルし、アーカイブするバッチ)
    makelib_thumb.bat (APIをTHUMBモードでコンパイルし、アーカイブするバッチ)
    libsam7s.a (makelib.batで作成されるライブラリファイル)
    libsam7s_thumb.a (makelib_thumb.batで作成されるライブラリファイル)

Page Top

サンプルプログラム anchor.png[45]

こちら[46]にて公開中。

Page Top

その他 anchor.png[47]


Last-modified: 2022-02-13 (日) 11:32:28 (JST) (802d) by takaboo