1: 2009-06-26 (金) 20:20:45 takaboo[5] [6] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | TITLE:BTC092 AT91SAM7S32マイコンボードマニュアル | ||
+ | **概要 [#d0a0c490] | ||
+ | ARM7TDMIコアを内蔵したAtmel社製AT91SAM7S32を搭載したマイコンボードです。ボード上にはRS232Cポート、SAM-BA(SAM Boot Assistant)切替スイッチ等を装備し、外部端子にはマイコンのほぼ全ての端子が割り当てられています。 | ||
+ | **基本仕様 [#SPEC] | ||
+ | |商品番号 |BTC092 | | ||
+ | |PCBリビジョン |E040 (2層) | | ||
+ | |CPU |[[Atmel AT91SAM7S32:http://www.atmel.com/dyn/products/product_card.asp?part_id=3522]] | | ||
+ | |メモリ |フラッシュROM: 32byte&br;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準拠, 鉛フリー半田 | | ||
+ | |||
+ | ***外観 [#mf44ecda] | ||
+ | | top | bottom | | ||
+ | | #ref(AT91SAM7S32_TOP.png,50%) | #ref(AT91SAM7S32_BOTTOM.png,50%) | | ||
+ | |||
+ | ***回路図 [#l08d553e] | ||
+ | #ref(E040.pdf) | ||
+ | |||
+ | ***端子配置・外形 [#x01c3eef] | ||
+ | #ref(AT91SAM7S32_LAYOUT.png,100%) | ||
+ | |||
+ | ***コネクタ・端子・スイッチ等 [#g1cd9252] | ||
+ | ****CN1 [#va835825] | ||
+ | -2.54mmピッチ2列 20ピン | ||
+ | -推奨ピンヘッダ:ヒロセ電機 HIF3H-20PB-2.54DSA | ||
+ | -推奨レセプタクル:ヒロセ電機 HIF3H-20DA-2.54DSA | ||
+ | | 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 | | ||
+ | |||
+ | ****CN2 [#o2c611c4] | ||
+ | -2.54mmピッチ2列 20ピン | ||
+ | -推奨ピンヘッダ:ヒロセ電機 HIF3H-20PB-2.54DSA | ||
+ | -推奨レセプタクル:ヒロセ電機 HIF3H-20DA-2.54DSA | ||
+ | | 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 | | ||
+ | |||
+ | ****CN3 [#u9cbf5fa] | ||
+ | -2mmピッチ 3ピン | ||
+ | -PA9とPA10端子をRS232Cレベルに変換 | ||
+ | -PA9/PA10はJP1を半田ジャンパすることでRS232Cレベル変換ICと切り離し可能 | ||
+ | | No. | 端子名 | I/O | | ||
+ | | 1 | TX (RS232C←PA10) | O | | ||
+ | | 2 | GND | - | | ||
+ | | 3 | RX (RS232C→PA9) | I | | ||
+ | |||
+ | ****JP1 [#nbb706ca] | ||
+ | -RS232Cレベル変換のレシーバイネーブル制御(RS232Cレベル変換ICのEN端子に接続) | ||
+ | -オープン:レシーバイネーブル, ショート:レシーバディスエーブル | ||
+ | -出荷時オープン | ||
+ | |||
+ | ****D1(LED) [#sb5985ee] | ||
+ | -マイコンボードに電源を印加すると点灯 | ||
+ | |||
+ | ****SW1(スライドスイッチ) [#s39c980d] | ||
+ | -SAM-BAとあるシルク側に切り替えることでマイコンのTSTとVCC(3.3V)を短絡 | ||
+ | |||
+ | ****PB1(プッシュスイッチ) [#rfff99de] | ||
+ | -押下でマイコンのNRST端子をGNDへ短絡 | ||
+ | |||
+ | **各機能の詳細 [#DETAILS] | ||
+ | |||
+ | ***電源 [#DETAILS_POWER] | ||
+ | CN1-17,18(VCC)とCN1-19,20(GND)間に安定したDC3.3Vを供給します。 | ||
+ | |||
+ | ***RS232C [#DETAILS_CN3] | ||
+ | #ref(E040_RS232C.png,50%) | ||
+ | CN3にはマイコンのDBGU端子をRS232Cレベルに変換した信号が接続されます。主にPCのCOMポートと接続し、プログラムの転送やデバッグに使用します。~ | ||
+ | 接続するホストに応じて以下の通信ケーブルないしI/Fがオプションで使用できます。 | ||
+ | -PCにCOMポートがある場合 | ||
+ | ~[[BTE060 RS232C通信ケーブル]] | ||
+ | -PCにCOMポートが無く、USBポートがある場合 | ||
+ | ~[[BTE075 USB-RS232Cケーブル]]~ | ||
+ | [[BTE060 RS232C通信ケーブル]] + [[BTE061D USBシリアル変換ケーブル]] | ||
+ | -PCにUSBポートがあり、JTAGによるデバッグを同時に行う場合 | ||
+ | ~[[BTE067B TINY JTAG-ICE2]] (RS232Cケーブルは自作する必要あり) | ||
+ | |||
+ | ***スライドスイッチ(SW1) [#DETAILS_SW1] | ||
+ | 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) [#DETAILS_PB1] | ||
+ | PB1にはマイコンのNRST端子が接続されています。押下されるとNRST端子がGNDに接続されます。~ | ||
+ | なお、マイコンのリセットコントローラ適宜設定しない限り、NRST端子はチップリセットを目的として使用することはできません。 | ||
+ | |||
+ | **開発環境 [#IDE] | ||
+ | ***GCC Developer Lite [#GDL] | ||
+ | GCC Developer Liteの詳細については[[こちら>GCC Developer Lite]]。~ | ||
+ | フルインストールないしAT91SAM7Sで使用を選択する事で必要なコンポーネントが自動的にインストールされます。 | ||
+ | AT91SAM7で使用される主要なコンポーネントを簡単に示します。 | ||
+ | -''[[GCC Developer Lite>GCC Developer Lite#GCCDevL]]'' | ||
+ | ~ソースプログラムを編集するためのテキストエディタとその他のツールを起動するためのランチャ機能を有する。~ | ||
+ | -''[[FLASH WRITER>GCC Developer Lite#FW]]'' | ||
+ | ~ターゲットのフラッシュROM等へコンパイルされたプログラムをSAM-BAないしCOMポート経由で書き込む。~ | ||
+ | USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。 | ||
+ | -''[[SIMPLE TERM>GCC Developer Lite#STERM]]'' | ||
+ | ~汎用シリアルターミナル。簡易的なTLENETクライアントとしても機能する。~ | ||
+ | USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。 | ||
+ | -''ARMGCC'' | ||
+ | ~ARMコア向けC/C++言語向けのコンパイラ。出来る限り最新のパッチを適用しているため、時に互換性を失う。 | ||
+ | -''デバイスドライバ'' | ||
+ | ~Atmel社提供のSAM-BA用USBドライバと、弊社提供のUSB CDCエミュレーションドライバ。 | ||
+ | -''[[OpenOCD]]'' | ||
+ | ~TINY JTAG-ICE2の制御を行うデーモン。JTAGを使用する場合は全て本デーモンを仲介する。 | ||
+ | -''ターゲットファイル'' | ||
+ | ~マイコンの内蔵ペリフェラルを定義したヘッダファイルやUARTを簡便に使うためのAPI、USBをシリアルポートとして使用するためのAPI、GDBにてデバッグする際に使用する初期化ファイル、シリーズ毎に異なるメモリマップを定義したリンカスクリプトファイル、スタートアップルーチンを含む。基本的にコンパイル済みライブラリとしてソースとリンクして使用する。 | ||
+ | |||
+ | ****ターゲットファイル [#TARGETFILES] | ||
+ | GCC Developer Liteでは本マイコン用の設定を複数備えています。~ | ||
+ | 例えば、ARMコアの学習・組み込み向けCコンパイラの習熟・マイコン内蔵ペリフェラルの機能を熟知するといった段階ではJTAGを使ってRAM上でデバッグし、慣れてきたらブートローダを経由してprintfデバッグ、最終的に製品等としてリリースして完成させる時はフラッシュROMに、といった段階を踏む場合でもGCC Developer Liteのコンパイルオプションの設定リストから選択し直すだけで設定が完了します。~ | ||
+ | #ref(GDL_CompileOption_TargetList.png) | ||
+ | 以下に本マイコンボードに対応した設定リストの一覧とその設定における機能の違いを紹介します。 | ||
+ | -''AT91SAM7S32 (Bootloader, ARM mode)'' | ||
+ | ~ビルドすると[[ブートローダ>AT91SAM_BL]]にてマイコンのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。~ | ||
+ | プログラムのスタートアドレスが0x102000に設定される以外は、フラッシュROM上で動作するプログラムと基本的に相違は無い。~ | ||
+ | ビルドが成功すると、STERM.exe(SIMPLE TERM)の起動を促される。 | ||
+ | -''AT91SAM7S32 (Bootloader, THUMB mode)'' | ||
+ | ~ビルドすると[[ブートローダ>AT91SAM_BL]]にてマイコンのフラッシュ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]]を使用してSRAMへの書き込み・実行を行わせるため、仲介役のFW.exe(FLASH WRITER)の起動を促される。~ | ||
+ | -''AT91SAM7S32 (RAM, THUMB mode)'' | ||
+ | ~ビルドするとOpenOCDにてマイコンのSRAM上で動作させるための.exe(実態はelf)ファイルが作られる。~ | ||
+ | Thumb 16ビット圧縮命令を出力するため、ARM modeよりも出力コードサイズが小さくなる。~ | ||
+ | プログラムのスタートアドレスは0x200000(SRAMの先頭アドレス)に設定される。~ | ||
+ | マイコンにはSRAMからプログラムを起動させる機能が無いためJTAGによる制御が必須。~ | ||
+ | ビルドが成功すると、[[openOCD]]を使用して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)の起動を促される。~ | ||
+ | |||
+ | ****SIMPLE TERMとブートローダ [#STERM_BL] | ||
+ | マイコンのフラッシュROMには出荷時に弊社オリジナルの[[ブートローダ>AT91SAM_BL]]が書き込まれています。~ | ||
+ | ブートローダは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 | ||
+ | #ref(AT91SAM7_BL_COM.png,100%) | ||
+ | |||
+ | 既にユーザプログラムが書き込まれているマイコンボードは、電源を投入するとユーザプログラムが即時実行されます。ユーザプログラムが書き込まれたマイコンでブートローダのコマンドモードを使用するには以下の手順を踏みます。~ | ||
+ | +SIMPLE TERMのターミナルウィンドウ上で'!'(「SHIFT」+「1」)キーを押しっぱなしにする。 | ||
+ | +マイコンボードをリセットする。 | ||
+ | +ブートローダのメッセージが表示された後、'!'キーを離すとコマンドモードに遷移する。 | ||
+ | |||
+ | ブートローダの詳細及びコマンドモードの使い方等は[[こちら>AT91SAM_BL]]。~ | ||
+ | |||
+ | 先の設定リストでソースプログラムをコンパイルし成功するとSTERM.exe(SIMPLE TERM)の起動を促されます。「OK」を押してSIMPLE TERMを起動すると、特殊な設定が追加されてSIMPLE TERMが起動します。 | ||
+ | -既にSIMPLE TERMが実行中であれば2重に起動しない。 | ||
+ | -コンパイル済み.binファイルの情報が渡る(ステータスバーにて確認可)。 | ||
+ | -ユーザプログラムを転送する際の手順を記述したスクリプトファイルが使用できる様になる。 | ||
+ | |||
+ | #ref(AT91SAM7_STERM_SCRIPT1.png,100%) | ||
+ | |||
+ | 「スクリプト実行[STERM SAM7_UART]」をクリックした後10秒以内にマイコンボードをリーブートすると、コマンドモードへの遷移や転送するファイルの選択を手動で行う事無く転送にかかる処理が全て自動的に行われます。 | ||
+ | #ref(AT91SAM7_STERM_SCRIPT2.png,100%) | ||
+ | 本機能により、手動で間違ったファイルを選択して転送してしまったり、転送不可能な状態で転送をしてしまうといったミスを軽減する事ができます。 | ||
+ | |||
+ | ****FLASH WRITER [#FW] | ||
+ | 様々なマイコンに対応した転送ツールです。本マイコンにおいては2種類の転送方法に対応します。~ | ||
+ | どちらを選択するかはユーザに委ねられます。CPUコアやプログラムの詳細なデバッグも行うついでにメモリの書き換えを行うという場合のみ[[OpenOCD]]、フラッシュROMの書き換えさえ出来ればよいのであればSAM-BAを選択するのが一般的です。~ | ||
+ | FLASH WRITERを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成さAれたプログラムをFLASH WRITERで転送しても動作しません。 | ||
+ | -''AT91SAM7S32 (RAM, ARM mode)'' | ||
+ | ~[[OpenOCD]]を経由してSRAMに転送実行。 | ||
+ | -''AT91SAM7S32 (RAM, THUMB mode)'' | ||
+ | ~[[OpenOCD]]を経由してSRAMに転送実行。 | ||
+ | -''AT91SAM7S32 (Flash, ARM mode)'' | ||
+ | ~SAM-BAを経由してフラッシュROMに転送実行。コンパイルオプションを変更すれば[[OpenOCD]]を経由して書き込む事も可能。 | ||
+ | -''AT91SAM7S32 (Flash, THUMB mode)'' | ||
+ | ~SAM-BAを経由してフラッシュROMに転送実行。コンパイルオプションを変更すれば[[OpenOCD]]を経由して書き込む事も可能。 | ||
+ | |CENTER:BGCOLOR(red):||c | ||
+ | | :idea:|LOCKEビットがONの場合ここでの操作が抑止されるため、予め[[LOCKEビットをOFF>#LOCKE]]にした上で操作する必要があります。| | ||
+ | |||
+ | *****FLASH WRITERとSAM-BA [#FW_SAMBA] | ||
+ | Atmel社独自のマイコンに予め備わったブートローダの通信プロトコルに従ってフラッシュROMの書き換えを行います。対応するポートはDBGU(RS232C CN3)となります。~ | ||
+ | マイコンをSAM-BAモードに移行させるには、その都度以下の操作を行います。~ | ||
+ | +マイコンボードへの電源の供給を絶つ。 | ||
+ | +TST端子(CN1-1)を3.3Vに接続する、ないしSW1をSAM-BAと書かれた側に切り替える。 | ||
+ | +PA0, PA1, PA2を3.3Vに接続する。(PA0, PA1, PA2端子へ外部回路が接続されていなければ各端子はオープン状態で構わない) | ||
+ | +マイコンボードへ電源を供給し、5~10秒程度そのまま維持する。 | ||
+ | +マイコンボードへの電源供給を絶ち、TST端子をオープンにする、ないしSW1をSAM-BAと書かれた反対側に切り替える。 | ||
+ | +マイコンは内部的にSAM-BAモードに移行するが、外観から確認する方法は無い。 | ||
+ | |||
+ | #ref(AT91SAM7_SAMBA_COM.png,100%) | ||
+ | マイコンボードとPCをRS232Cケーブルで接続した上で適宜COMポートを選択し、書き込むファイルを選択した後、Executeを押すと書き込みを開始します。~ | ||
+ | 書き込みが正常終了すると、SAM-BAモードを抜けて書き込まれたプログラムを即時実行します。再度SAM-BAで書き込む際は、もう一度電源を切ってモードを切り替えるフローを1.から実行する必要があります。 | ||
+ | |||
+ | *****FLASH WRITERとOpenOCD [#FW_OOCD] | ||
+ | TINY JTAG-ICE2で[[マイコンのJTAG I/FとPCを接続>#yed2b006]]し、[[OpenOCD]]を仲介してマイコンのフラッシュROMないしSRAMの書き換えを行います。~ | ||
+ | 予め[[OpenOCD]]を起動しておくとFLASH WRITERのPORTに列挙されますので、「OpenOCD (TELNET)」を選択します。 | ||
+ | #ref(AT91SAM7_OCD_TELNET.png,100%) | ||
+ | 書き込みが正常終了すると、書き込まれたプログラムを即時実行します。 | ||
+ | |||
+ | **JTAG I/F [#JTAG] | ||
+ | 作成したプログラムをマイコンのフラッシュROMに転送するには、一般に別途特殊なI/Fやハードウェアを必要とします。これらはチップベンダーの方針やその時代のトレンドで変わります。~ | ||
+ | ARMコアを内蔵したマイコンであれば大抵JTAG I/Fが備わっており、JTAG ICEでホストと接続する事でCPUコアの制御やメモリの操作を行う事ができます。 | ||
+ | マイコンボードには直接JTAG I/Fに接続するコネクタが装備されていませんので、別途JTAG ICEと接続するコネクタを増設する必要があります。 | ||
+ | #ref(AT91SAM7_JTAG_CONNECTION.png,100%) | ||
+ | TINY JTAG-ICE2と接続する場合も同様のコネクタが必要となります。 | ||
+ | |||
+ | **LOCKEビット [#LOCKE] | ||
+ | 2009年6月以降に出荷されるマイコンボードは、[[ブートローダ>AT91SAM_BL]]保護の目的でNVMのLOCKEビットをONに設定されています。本設定によりスライドスイッチ(SW1)によるSAM-BAモード移行の操作と、JTAG I/Fからのアクセスが全て制限されます。~ | ||
+ | [[ブートローダ>AT91SAM_BL]]以外の方法でプログラミングやデバッグを行う場合は、予め以下の操作でLOCKEビットをOFFにする必要があります。 | ||
+ | +マイコンボードへの電源の供給を絶つ。 | ||
+ | +ERASE端子(CN1-14)を3.3Vに接続する。 | ||
+ | +マイコンボードへ電源を供給し、5~10秒程度そのまま維持する。 | ||
+ | +マイコンボードへの電源供給を絶ち、ERASE端子をオープンにする。 | ||
+ | +もしそれでもSAM-BAやJTAG I/Fが使用できない場合はもう一度1.から繰り返す。 | ||
+ | 若干煩雑ですが、本操作にてマイコンのNVMやフラッシュROMは製造初期状態に初期化され、SAM-BAやJTAG I/Fが使用可能になります。 | ||
+ | |||
+ | **SAM7S用ライブラリ [#LIBRARY] | ||
+ | [[GCC Developer Lite>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''' ([[ブートローダ>AT91SAM_BL]]を介して実行させるリンカスクリプト)~ | ||
+ | -''内蔵ペリフェラルのレジスタ名定義ヘッダファイル'' | ||
+ | ~マイコンに内蔵された各種ペリフェラルが持つレジスタは、決められたメモリ上のアドレスに配置されています。それらレジスタをアドレスではなくレジスタ毎に決められた名称を使い、変数のようにアクセスするためのマクロ定義が記述されています。~ | ||
+ | '''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で作成されるライブラリファイル) | ||
+ | |||
+ | **サンプルプログラム [#SAMPLE] | ||
+ | **その他 [#ETC] |
(This host) = https://www.besttechnology.co.jp