ARM7TDMIコアを内蔵したAtmel社製AT91SAM7S32を搭載したマイコンボードです。ボード上にはRS232Cポート、SAM-BA(SAM Boot Assistant)切替スイッチ等を装備し、外部端子にはマイコンのほぼ全ての端子が割り当てられています。
商品番号 | BTC092 |
PCBリビジョン | E040 (2層) |
CPU | Microchip AT91SAM7S32 |
メモリ | フラッシュ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準拠, 鉛フリー半田 |
No. | 端子名 | No. | 端子名 |
1 | TDI | 2 | PA7/PGMNVALID |
3 | PA6/PGMNOE | 4 | PA5/PGMRDY |
5 | PA4/PGMNCMD | 6 | NRST |
7 | TST | 8 | PA3 |
9 | PA2/PAGMEN2 | 10 | PA1/PGMEN1 |
11 | PA0/PGMEN0 | 12 | TDO |
13 | JTAGSEL | 14 | TMS |
15 | TCK | 16 | ERASE |
17 | VCC | 18 | VCC |
19 | GND | 20 | GND |
No. | 端子名 | No. | 端子名 |
1 | GND | 2 | PA8/PGMM0 |
3 | PA9/PGMM1 | 4 | PA10/PGMM2 |
5 | PA11/PGMM3 | 6 | PA12/PGMD0 |
7 | PA13/PGMD1 | 8 | PA14/PGMD2 |
9 | PA15/PGMD3 | 10 | PA16/PGMD4 |
11 | PA20/AD3 | 12 | PA19/PGMD7/AD2 |
13 | PA18/PGMD6/AD1 | 14 | PA17/PGMD5/AD0 |
15 | AD7 | 16 | AD6 |
17 | AD5 | 18 | AD4 |
19 | ADVREF | 20 | GND |
No. | 端子名 | I/O |
1 | TX (RS232C←PA10) | O |
2 | GND | - |
3 | RX (RS232C→PA9) | I |
CN3にはマイコンのDBGU端子をRS232Cレベルに変換した信号が接続されます。主にPCのCOMポートと接続し、プログラムの転送やデバッグに使用します。
接続するホストに応じて以下の通信ケーブルないしI/Fがオプションで使用できます。
BTE075 USB-RS232Cケーブル
BTE060 RS232C通信ケーブル + BTE061D USBシリアル変換ケーブル
BTE067B TINY JTAG-ICE2 (RS232Cケーブルは自作する必要あり)
SW1のコモンにはマイコンのTST端子が接続されています。シルクのSAM-BAと記述された方向に切り替えるとVCC(DC3.3V)に接続、その反対に切り替えるとオープン(TST端子に内蔵されたプルダウン抵抗でGND)となります。
SW1はAtmel社提供のSAM-BAソフトウェアを使用してマイコン内蔵のフラッシュROMを操作するといった用途で使用し、それ以外の目的では使用されません。
出荷時に予めフラッシュROMへ弊社オリジナルのブートローダが書き込まれているため、SAM-BAを使用しない限りSW1はSAM-BAとあるシルクとは反対側に切り替えて使用します。
なお、本スイッチを不用意に操作するだけでフラッシュROMの内容が書き換えられてしまいます。SAM-BAを必要としない場合や、不用意な書き換え操作を発生させたくない場合は、本スイッチを除去する事をお勧めします。
※出荷時期やキットの構成によってはSW1が実装されない場合があります。
PB1にはマイコンのNRST端子が接続されています。押下されるとNRST端子がGNDに接続されます。
なお、マイコンのリセットコントローラ適宜設定しない限り、NRST端子はチップリセットを目的として使用することはできません。
GCC Developer Liteの詳細についてはこちら。
「基本パック」と「ARMパック」をダウンロードしてインストールしてください。なおARMパックインストールの際に表示されるコンポーネントの選択画面では「AT91SAM7Sシリーズでのみ使用」を選択してください。
AT91SAM7で使用される主要なコンポーネントを簡単に示します。
ソースプログラムを編集するためのテキストエディタとその他のツールを起動するためのランチャ機能を有する。
ターゲットのフラッシュROM等へコンパイルされたプログラムをSAM-BAないしCOMポート経由で書き込む。
USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。
汎用シリアルターミナル。簡易的なTELNETクライアントとしても機能する。
USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。
ARMコア向けC/C++言語向けのコンパイラ。出来る限り最新のパッチを適用しているため、時に互換性を失う。
Atmel社提供のSAM-BA用USBドライバと、弊社提供のUSB CDCエミュレーションドライバ。
TINY JTAG-ICE2の制御を行うデーモン。JTAGを使用する場合は全て本デーモンを仲介する。
マイコンの内蔵ペリフェラルを定義したヘッダファイルやUARTを簡便に使うためのAPI、USBをシリアルポートとして使用するためのAPI、GDBにてデバッグする際に使用する初期化ファイル、シリーズ毎に異なるメモリマップを定義したリンカスクリプトファイル、スタートアップルーチンを含む。基本的にコンパイル済みライブラリとしてソースとリンクして使用する。
GCC Developer Liteでは本マイコン用の設定を複数備えています。
例えば、ARMコアの学習・組み込み向けCコンパイラの習熟・マイコン内蔵ペリフェラルの機能を熟知するといった段階ではJTAGを使ってRAM上でデバッグし、慣れてきたらブートローダを経由してprintfデバッグ、最終的に製品等としてリリースして完成させる時はフラッシュROMに、といった段階を踏む場合でもGCC Developer Liteのコンパイルオプションの設定リストから選択し直すだけで設定が完了します。
以下に本マイコンボードに対応した設定リストの一覧とその設定における機能の違いを紹介します。
ビルドするとブートローダにてマイコンのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。
プログラムのスタートアドレスが0x102000に設定される以外は、フラッシュROM上で動作するプログラムと基本的に相違は無い。
ビルドが成功すると、STERM.exe(SIMPLE TERM)の起動を促される。
ビルドするとブートローダにてマイコンのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。
Thumb 16ビット圧縮命令を出力するため、ARM modeよりも出力コードサイズが小さくなる。
プログラムのスタートアドレスが0x102000に設定される以外は、フラッシュROM上で動作するプログラムと基本的に相違は無い。
ビルドが成功すると、STERM.exe(SIMPLE TERM)の起動を促される。
ビルドするとOpenOCDにてマイコンのSRAM上で動作させるための.exe(実態はelf)ファイルが作られる。
プログラムのスタートアドレスは0x200000(SRAMの先頭アドレス)に設定される。
マイコンにはSRAMからプログラムを起動させる機能が無いためJTAGによる制御が必須。
ビルドが成功すると、OpenOCDを使用してSRAMへの書き込み・実行を行わせるため、仲介役のFW.exe(FLASH WRITER)の起動を促される。
ビルドするとOpenOCDにてマイコンのSRAM上で動作させるための.exe(実態はelf)ファイルが作られる。
Thumb 16ビット圧縮命令を出力するため、ARM modeよりも出力コードサイズが小さくなる。
プログラムのスタートアドレスは0x200000(SRAMの先頭アドレス)に設定される。
マイコンにはSRAMからプログラムを起動させる機能が無いためJTAGによる制御が必須。
ビルドが成功すると、openOCDを使用してSRAMへの書き込み・実行を行わせるため、仲介役のFW.exe(FLASH WRITER)の起動を促される。
ビルドするとSAM-BAにてマイコンのフラッシュROMへ書き込むための.bin(バイナリ)ファイルが作られる。
ビルドが成功すると、SAM-BAモードを使用して書き込みを行うため、FW.exe(FLASH WRITER)の起動を促される。
ビルドするとSAM-BAにてマイコンのフラッシュROMへ書き込むための.bin(バイナリ)ファイルが作られる。
Thumb 16ビット圧縮命令を出力するため、ARM modeよりも出力コードサイズが小さくなる。
ビルドが成功すると、SAM-BAモードを使用して書き込みを行うため、FW.exe(FLASH WRITER)の起動を促される。
マイコンのフラッシュROMには出荷時に弊社オリジナルのブートローダが書き込まれています。
ブートローダはJTAGやその他の特殊なI/Fを使用せずとも、USBないしCOMポートを使用してマイコンのプログラム書き換えや操作を行う事が出来ます。
ブートローダを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成されたプログラムをブートローダで転送しても動作しません。
マイコンボードは出荷時にDBGUをコンソールとして構成されたブートローダが書き込まれており、PCとマイコンボードをRS232Cケーブルで接続する必要があります。
SIMPLE TERMから該当するCOMポートを選択(COMポート番号はPCの環境によって適宜選択)しオープンするとブートローダの各種コマンドが使用可能となります。その他の設定は以下の通りです。
Baudrate:115200 Databits:8 Stopbits:1 Parity:Non Flow Control:Non
既にユーザプログラムが書き込まれているマイコンボードは、電源を投入するとユーザプログラムが即時実行されます。ユーザプログラムが書き込まれたマイコンでブートローダのコマンドモードを使用するには以下の手順を踏みます。
ブートローダの詳細及びコマンドモードの使い方等はこちら。
先の設定リストでソースプログラムをコンパイルし成功するとSTERM.exe(SIMPLE TERM)の起動を促されます。「OK」を押してSIMPLE TERMを起動すると、特殊な設定が追加されてSIMPLE TERMが起動します。
「スクリプト実行[STERM SAM7]」をクリックすると、ブートローダがコマンドモードになっている事の確認とコマンドモードへの遷移や転送するファイルの選択までの処理を自動的に行います。何らかの問題が生じると、その時点でスクリプトの実行は中断します。
本機能により、手動で間違ったファイルを選択して転送してしまったり、ブートローダがコマンドモードでない状態で転送をしてしまうといったミスは発生しなくなります。
様々なマイコンに対応した転送ツールです。本マイコンにおいては2種類の転送方法に対応します。
どちらを選択するかはユーザに委ねられます。CPUコアやプログラムの詳細なデバッグも行うついでにメモリの書き換えを行うという場合のみOpenOCD、フラッシュROMの書き換えさえ出来ればよいのであればSAM-BAを選択するのが一般的です。
FLASH WRITERを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成さAれたプログラムをFLASH WRITERで転送しても動作しません。
OpenOCDを経由してSRAMに転送実行。
OpenOCDを経由してSRAMに転送実行。
SAM-BAを経由してフラッシュROMに転送実行。コンパイルオプションを変更すればOpenOCDを経由して書き込む事も可能。
SAM-BAを経由してフラッシュROMに転送実行。コンパイルオプションを変更すればOpenOCDを経由して書き込む事も可能。
![]() | LOCKEビットがONの場合ここでの操作が抑止されるため、予めLOCKEビットをOFFにした上で操作する必要があります。 |
Atmel社独自のマイコンに予め備わったブートローダの通信プロトコルに従ってフラッシュROMの書き換えを行います。対応するポートはDBGU(RS232C CN3)となります。
マイコンをSAM-BAモードに移行させるには、その都度以下の操作を行います。
マイコンボードとPCをRS232Cケーブルで接続した上で適宜COMポートを選択し、書き込むファイルを選択した後、Executeを押すと書き込みを開始します。
書き込みが正常終了すると、SAM-BAモードを抜けて書き込まれたプログラムを即時実行します。再度SAM-BAで書き込む際は、もう一度電源を切ってモードを切り替えるフローを1.から実行する必要があります。
TINY JTAG-ICE2でマイコンのJTAG I/FとPCを接続し、OpenOCDを仲介してマイコンのフラッシュROMないしSRAMの書き換えを行います。
予めOpenOCDを起動しておくとFLASH WRITERのPORTに列挙されますので、「OpenOCD (TELNET)」を選択します。
書き込みが正常終了すると、書き込まれたプログラムを即時実行します。
作成したプログラムをマイコンのフラッシュROMに転送するには、一般に別途特殊なI/Fやハードウェアを必要とします。これらはチップベンダーの方針やその時代のトレンドで変わります。
ARMコアを内蔵したマイコンであれば大抵JTAG I/Fが備わっており、JTAG ICEでホストと接続する事でCPUコアの制御やメモリの操作を行う事ができます。
マイコンボードには直接JTAG I/Fに接続するコネクタが装備されていませんので、別途JTAG ICEと接続するコネクタを増設する必要があります。
TINY JTAG-ICE2と接続する場合も同様のコネクタが必要となります。
2009年6月以降に出荷されるマイコンボードは、ブートローダ保護の目的でNVMのLOCKEビットをONに設定されています。本設定によりスライドスイッチ(SW1)によるSAM-BAモード移行の操作と、JTAG I/Fからのアクセスが全て制限されます。
ブートローダ以外の方法でプログラミングやデバッグを行う場合は、予め以下の操作でLOCKEビットをOFFにする必要があります。
GCC Developer Liteでは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 (ブートローダを介して実行させるリンカスクリプト)
マイコンに内蔵された各種ペリフェラルが持つレジスタは、決められたメモリ上のアドレスに配置されています。それらレジスタをアドレスではなくレジスタ毎に決められた名称を使い、変数のようにアクセスするためのマクロ定義が記述されています。
AT91SAM7S.h (レジスタのマクロ定義)
AT91SAM7S_BITDEFINE.h (各レジスタのビット情報)
作成したプログラムの動作を確認を行う際に、マイコンのシリアルポートを使用する事を推奨しています。マイコンと文字によるコミュニケーション機能を用意する事で、レジスタの値やプログラムの進捗の把握、さらにはマイコンに対してPCから指令を与えるといった使い方が出来ます。
本マイコンには複数のシリアルポートが備わっており、制御方法も多種多様なため、それに応じてライブラリとして提供する通信用APIも多くなっています。
us.h (APIのプロトタイプ宣言を含むヘッダファイル)
dbgu2~.c (DBGUポートを割り込みで使用するAPIのソース群)
煩雑なPIOの初期化を簡便に行うためのAPIです。Atmel社の提供するサンプルコードと互換性を持っています。
piocfg.h (APIのプロトタイプ宣言を含むヘッダファイル)
piocfg.c (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で作成されるライブラリファイル)
こちらにて公開中。