1: 2009-06-26 (金) 21:05:22 takaboo[5] [6] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | TITLE:BTC095 AT91SAM7X512マイコンボードマニュアル | ||
+ | #norelated | ||
+ | #contents | ||
+ | **概要 [#f1b2a4a8] | ||
+ | AT91SAM7X512マイコンボードはARM7TDMIコアを内蔵したAtmel社製AT91SAM7X512を搭載したマイコンボードです。 | ||
+ | ボード上にはUSBコネクタ、3.3Vレギュレータ、RS232Cポート、CAN I/F、PHY等を装備し、外部端子にはマイコンのほぼ全ての端子が割り当てられています。 | ||
+ | **基本仕様 [#h4a3d45e] | ||
+ | |商品番号 |BTC095 | | ||
+ | |PCBリビジョン |E054C (4層)| | ||
+ | |CPU |[[Atmel AT91SAM7X512:http://www.atmel.com/dyn/products/product_card.asp?part_id=4104]] | | ||
+ | |メモリ |フラッシュROM: 512kbyte&br;SRAM: 128kbyte&br;オンボードSPI接続DataFlash: 8Mbyte | | ||
+ | |クロック |CPU外部クロック: 18.432MHz (内部動作クロックはCKGR及びPMCによりプログラマブル)&br;PHY外部クロック: 25MHz | | ||
+ | |通信機能 |RS232Cレベル変換装備 (DBGUのみ) | | ||
+ | |動作温度 |0~+50℃ | | ||
+ | |動作電圧 |外部:DC3.8~20V USBもしくは外部端子にて供給可能(外部端子優先)&br;内部:DC3.3V(I/O), DC1.8V(CORE) | | ||
+ | |搭載機能 |イーサネットPHY([[KS8001L>http://www.micrel.com/_PDF/Ethernet/KS8001L-pb.pdf]]), SPI接続 64Mbit DataFlash([[AT45DB642D-CNU>http://www.atmel.com/dyn/products/product_card.asp?part_id=3777]]), CANトランシーバ([[SN65HVD232D>http://focus.ti.com/lit/ds/symlink/sn65hvd230.pdf]]), RS232Cラインドライバ, 3.3V/300mA出力リニアレギュレータ | | ||
+ | |消費電流 |40mA (MAX) | | ||
+ | |寸法 |W36.8×D52.0mm (参考) | | ||
+ | |コネクタ等 |40ピン端子×2, 10ピン端子×1, RS232C通信用ピンヘッダ×1, リセットボタン×1, 電源モニタLED, PHYステータスLED, miniB USBコネクタ×1 | | ||
+ | |付属品 |USBケーブル×1, 2列ピンヘッダ | | ||
+ | |環境配慮 |RoHS準拠, 鉛フリー半田 | | ||
+ | |||
+ | ***外観 [#v3b1a4c0] | ||
+ | | top | bottom | | ||
+ | | #ref(AT91SAM7X512_TOP.png,50%) | #ref(AT91SAM7X512_BOTTOM.png,50%) | | ||
+ | |||
+ | ***回路図 [#w24c083a] | ||
+ | #ref(E054C.pdf) | ||
+ | -JP1,JP3,JP4,JP6,JP7,R8はノーマウント | ||
+ | |||
+ | ***端子配置・外形 [#i9569866] | ||
+ | ****CN1 [#ef972eba] | ||
+ | -2.54mmピッチ2列 40ピン | ||
+ | -推奨ピンヘッダ:ヒロセ電機 HIF3H-40PB-2.54DSA | ||
+ | -推奨レセプタクル:ヒロセ電機 HIF3H-40DA-2.54DSA | ||
+ | | No. | 端子名 | No. | 端子名 | | ||
+ | | 1 | TDI | 2 | PB16 | | ||
+ | | 3 | PB4 | 4 | PA23 | | ||
+ | | 5 | PA24 | 6 | NRST | | ||
+ | | 7 | TST | 8 | PA25 | | ||
+ | | 9 | PA26 | 10 | PB18 | | ||
+ | | 11 | PB19 | 12 | PB20 | | ||
+ | | 13 | PB21 | 14 | PB22 | | ||
+ | | 15 | PB23 | 16 | PB24 | | ||
+ | | 17 | PB25 | 18 | PB26 | | ||
+ | | 19 | PA27 | 20 | PA28 | | ||
+ | | 21 | PA29 | 22 | TDO | | ||
+ | | 23 | JTAGSEL | 24 | TMS | | ||
+ | | 25 | TCK | 26 | PA30 | | ||
+ | | 27 | PA0 | 28 | PA1 | | ||
+ | | 29 | PA3 | 30 | PA2 | | ||
+ | | 31 | PA4 | 32 | PA5 | | ||
+ | | 33 | PA6 | 34 | PA7 | | ||
+ | | 35 | ERASE | 36 | DDM | | ||
+ | | 37 | VIN | 38 | DDP | | ||
+ | | 39 | GND | 40 | 3.3V | | ||
+ | |||
+ | ****CN2 [#tb6171de] | ||
+ | -2.54mmピッチ2列 40ピン | ||
+ | -推奨ピンヘッダ:ヒロセ電機 HIF3H-40PB-2.54DSA | ||
+ | -推奨レセプタクル:ヒロセ電機 HIF3H-40DA-2.54DSA | ||
+ | | No. | 端子名 | No. | 端子名 | | ||
+ | | 1 | PA22 | 2 | PA21 | | ||
+ | | 3 | PA20 | 4 | PA19 | | ||
+ | | 5 | PB11 | 6 | PB10 | | ||
+ | | 7 | PB3 | 8 | PB2 | | ||
+ | | 9 | BP1 | 10 | PB0 | | ||
+ | | 11 | PB12 | 12 | PB7 | | ||
+ | | 13 | PB17 | 14 | PB15 | | ||
+ | | 15 | PB5 | 16 | PB6 | | ||
+ | | 17 | PB13 | 18 | PB14 | | ||
+ | | 19 | PB8 | 20 | PB9 | | ||
+ | | 21 | PA18 | 22 | PA17 | | ||
+ | | 23 | PA16 | 24 | PA15 | | ||
+ | | 25 | PA14 | 26 | PA13 | | ||
+ | | 27 | PA12 | 28 | PA11 | | ||
+ | | 29 | PA10 | 30 | PA9 | | ||
+ | | 31 | PA8 | 32 | PB30 | | ||
+ | | 33 | PB29 | 34 | PB28 | | ||
+ | | 35 | PB27 | 36 | AD7 | | ||
+ | | 37 | AD6 | 38 | AD5 | | ||
+ | | 39 | AD4 | 40 | ADVREF | | ||
+ | |||
+ | ****CN3 [#v515db85] | ||
+ | -2.54mmピッチ2列 10ピン | ||
+ | -推奨ピンヘッダ:ヒロセ電機 HIF3H-10PB-2.54DSA | ||
+ | -推奨レセプタクル:ヒロセ電機 HIF3H-10DA-2.54DSA | ||
+ | | No. | 端子名 | No. | 端子名 | | ||
+ | | 1 | CANH | 2 | CANL | | ||
+ | | 3 | GND | 4 | 3.3V | | ||
+ | | 5 | RD+ | 6 | RD- | | ||
+ | | 7 | AVDD | 8 | GND | | ||
+ | | 9 | TD+ | 10 | TD- | | ||
+ | |||
+ | ****CN4 [#mf1c9c1b] | ||
+ | -2mmピッチ 3ピン | ||
+ | -PA27とPA28端子をRS232Cレベルに変換 | ||
+ | -PA27/PA28はJP4をリリースすることでRS232Cレベル変換ICと切り離し可能 | ||
+ | | No. | 端子名 | I/O | | ||
+ | | 1 | TX (RS232C←PA28) | O | | ||
+ | | 2 | GND | - | | ||
+ | | 3 | RX (RS232C→PA27) | I | | ||
+ | |||
+ | ****CN5 [#r23c2b6a] | ||
+ | -USB Mini-B | ||
+ | -DDPとDDM 端子へ接続 | ||
+ | -USBバスパワーによる電源供給(CN1-37 VIN 端子が優先) | ||
+ | -DDP端子のプルアップ制御用としてNRSTが使用される | ||
+ | |||
+ | ****JP1 [#w3e42b6f] | ||
+ | -レギュレータ(U1)のイネーブル制御(U1のSHDN端子とGND間) | ||
+ | -オープン:レギュレタアクティブ, ショート:レギュレータディスエーブル | ||
+ | -出荷時オープン | ||
+ | |||
+ | ****JP2 [#n80e981c] | ||
+ | -SPI接続DataFlash(U3)のチップセレクト制御(U9のPA12端子とU3のCS端子間) | ||
+ | -オープン:U3のCSがプルアップ抵抗によりHIGHとなりSPIバスから切断, ショート:U3のCSがU9のPA12により制御 | ||
+ | -出荷時ショート | ||
+ | |||
+ | ****JP3 [#j8e15873] | ||
+ | -SPI接続DataFlash(U3)の書き込みイネーブル制御(U3のWP端子とGND間) | ||
+ | -オープン:U3はライトイネーブル, ショート:U3はライトプロテクト | ||
+ | -出荷時オープン | ||
+ | |||
+ | ****JP4 [#p12f6d54] | ||
+ | -RS232Cレベル変換(U4)のレシーバイネーブル制御(U4のEN端子とGND間) | ||
+ | -オープン:レシーバイネーブル, ショート:レシーバディスエーブル | ||
+ | -出荷時オープン | ||
+ | |||
+ | ****JP5 [#jc326759] | ||
+ | -CAN I/F(U7)の受信(U9のPA19端子とU7のR端子間) | ||
+ | -オープン:U9のPA19は解放, ショート:U9のPA19はU7のR端子と接続 | ||
+ | -出荷時ショート | ||
+ | |||
+ | ****JP6 [#dd00a372] | ||
+ | -CAN I/F(U7)のCANバスイネーブル制御(U7のEN端子とGND間) | ||
+ | -オープン:CANバスに接続, ショート:CANバスから解放 | ||
+ | -出荷時オープン | ||
+ | |||
+ | ****JP7 [#pb549dc7] | ||
+ | -PHY(U8)のパワーダウン制御(U8のPD端子とGND間) | ||
+ | -オープン:アクティブ, ショート:パワーダウン | ||
+ | -出荷時オープン | ||
+ | ****LED1 [#d37e9bab] | ||
+ | -マイコンボードに電源を印加すると点灯 | ||
+ | |||
+ | ****LED2,3,4 [#o367563f] | ||
+ | -PHY(KSZ8001L)のLED0,1,2端子に接続 | ||
+ | |||
+ | ****PB1(プッシュボタン) [#yb5860db] | ||
+ | -押下でマイコンのNRST端子をGNDへ短絡 | ||
+ | |||
+ | **各機能の詳細 [#DETAILS] | ||
+ | |||
+ | ***電源 [#DETAILS_POWER] | ||
+ | 本ボードには出力DC3.3V/300mAの2入力レギュレータ(U1:[[LT1579CS8>http://www.linear-tech.co.jp/pc/productDetail.jsp?navId=H0,C1,C1003,C1040,C1055,P1185]])が搭載されています。2入力の一方はCN5から入力されるUSBバスパワー、もう一方はCN1-37(VIN)端子に接続されており、CN1-37(VIN)からの入力が優先されます。~ | ||
+ | U1で作られたDC3.3VはCN1-40(VCC)から取り出すことが可能ですが、負荷電流は本ボードの駆動電力も含めて最大300mAを超えてはなりません。~ | ||
+ | &br; | ||
+ | ボード上のレギュレータを使用しない場合は、JP1を短絡した上で、CN1-37(VCC)端子からDC3.3Vを供給します。 | ||
+ | |||
+ | ***RS232C(CN4) [#DETAILS_CN4] | ||
+ | #ref(E054C_RS232C.png,70%) | ||
+ | CN4にはマイコンの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ケーブルは自作する必要あり) | ||
+ | |||
+ | ***USB Mini-B(CN5) [#DETAILS_CN5] | ||
+ | #ref(E54C_USB.png,70%) | ||
+ | CN5にはマイコンのUDP(USB Device Port)に関連する端子が接続されています。USBケーブルによりPCからUSBバスパワーが供給されます。~ | ||
+ | なお、SAM-BAやUDPを制御するプログラムを使用しない限り、PCとUSBケーブルで接続してもUSBデバイスとして使用できません。また、USBホストとしては機能しません。 | ||
+ | |||
+ | ***プッシュスイッチ(PB1) [#DETAILS_PB1] | ||
+ | PB1にはマイコンのNRST端子が接続されています。押下されるとNRST端子がGNDに接続されます。~ | ||
+ | なお、マイコンのリセットコントローラ適宜設定しない限り、NRST端子はチップリセットを目的として使用することはできません。 | ||
+ | NRST信号はUSBのDP信号プルアップの制御と、PHYのリセットを兼ねています。USBデバイスとして活性化している状態でPB1を押すと、ホストはUSBデバイスが外されたと認識します。また、PHYも同時にリセットされます。これは強制的に手動で両I/Fのリセットがかけられてしまう事を意味します。~ | ||
+ | |||
+ | GCC Developer Liteに含まれるSAM7X用のライブラリでは、NRST端子をファームウェアから出力端子に構成してソフトウェア的に外部回路をリセットさせる事としています。 | ||
+ | |||
+ | ***CAN, PHY(CN3) [#DETAILS_CN3] | ||
+ | CN3にはCAN I/F及びイーサネットPHYの信号が接続されます。~ | ||
+ | いずれも高速なネットワークなため、安定した通信を保証するには外部回路における配線ルート等の十分な検証が必要です。 | ||
+ | |||
+ | **開発環境 [#IDE] | ||
+ | ***GCC Developer Lite [#GDL] | ||
+ | GCC Developer Liteの詳細については[[こちら>GCC Developer Lite]]。~ | ||
+ | フルインストールないしAT91SAM7Xで使用を選択する事で必要なコンポーネントが自動的にインストールされます。~ | ||
+ | 使用されるコンポーネントを簡単に紹介します。 | ||
+ | -''[[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>GCC Developer Lite]]では本マイコン用の設定を複数備えています。~ | ||
+ | 例えば、ARMコアの学習・組み込み向けCコンパイラの習熟・マイコン内蔵ペリフェラルの機能を熟知するといった段階ではJTAGを使ってSRAM上でデバッグし、慣れてきたら[[ブートローダ>AT91SAM_BL]]を経由してprintfデバッグ、最終的に製品等としてリリースして完成させる時はフラッシュROMに、といった段階を踏む場合でも[[GCC Developer Lite>GCC Developer Lite]]のコンパイルオプションの設定リストから選択し直すだけで設定が完了します。~ | ||
+ | #ref(GDL_CompileOption_TargetList.png) | ||
+ | 以下に本マイコンボードに対応した設定リストの一覧とその設定における機能の違いを紹介します。 | ||
+ | -''AT91SAM7X512 (Bootloader, ARM mode)'' | ||
+ | ~ビルドすると[[ブートローダ>AT91SAM_BL]]にてマイコンのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。~ | ||
+ | プログラムのスタートアドレスが0x102000に設定される以外は、フラッシュROM上で動作するプログラムと基本的に相違は無い。~ | ||
+ | ビルドが成功すると、STERM.exe(SIMPLE TERM)の起動を促される。 | ||
+ | -''AT91SAM7X512 (Bootloader, THUMB mode)'' | ||
+ | ~ビルドすると[[ブートローダ>AT91SAM_BL]]にてマイコンのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。~ | ||
+ | Thumb 16ビット圧縮命令を出力するため、ARM modeよりも出力コードサイズが小さくなる。~ | ||
+ | プログラムのスタートアドレスが0x102000に設定される以外は、フラッシュROM上で動作するプログラムと基本的に相違は無い。~ | ||
+ | ビルドが成功すると、STERM.exe(SIMPLE TERM)の起動を促される。 | ||
+ | -''AT91SAM7X512 (RAM, ARM mode)'' | ||
+ | ~ビルドするとOpenOCDにてマイコンのSRAM上で動作させるための.exe(実態はelf)ファイルが作られる。~ | ||
+ | プログラムのスタートアドレスは0x200000(SRAMの先頭アドレス)に設定される。~ | ||
+ | マイコンにはSRAMからプログラムを起動させる機能が無いためJTAGによる制御が必須。~ | ||
+ | ビルドが成功すると、[[OpenOCD]]を使用してSRAMへの書き込み・実行を行わせるため、仲介役のFW.exe(FLASH WRITER)の起動を促される。~ | ||
+ | -''AT91SAM7X512 (RAM, THUMB mode)'' | ||
+ | ~ビルドするとOpenOCDにてマイコンのSRAM上で動作させるための.exe(実態はelf)ファイルが作られる。~ | ||
+ | Thumb 16ビット圧縮命令を出力するため、ARM modeよりも出力コードサイズが小さくなる。~ | ||
+ | プログラムのスタートアドレスは0x200000(SRAMの先頭アドレス)に設定される。~ | ||
+ | マイコンにはSRAMからプログラムを起動させる機能が無いためJTAGによる制御が必須。~ | ||
+ | ビルドが成功すると、[[openOCD]]を使用してSRAMへの書き込み・実行を行わせるため、仲介役のFW.exe(FLASH WRITER)の起動を促される。~ | ||
+ | -''AT91SAM7X512 (Flash, ARM mode)'' | ||
+ | ~ビルドするとOpenOCDにてマイコンのSRAM上で動作させるための.exe(実態はelf)ファイルが作られる。~ | ||
+ | ビルドが成功すると、[[OpenOCD]]を使用してフラッシュROMへの書き込み・実行を行わせるため、仲介役のFW.exe(FLASH WRITER)の起動を促される。~ | ||
+ | -''AT91SAM7X512 (Flash, THUMB mode)'' | ||
+ | ~ビルドするとOpenOCDにてマイコンのSRAM上で動作させるための.exe(実態はelf)ファイルが作られる。~ | ||
+ | Thumb 16ビット圧縮命令を出力するため、ARM modeよりも出力コードサイズが小さくなる。~ | ||
+ | ビルドが成功すると、[[OpenOCD]]を使用してフラッシュROMへの書き込み・実行を行わせるため、仲介役のFW.exe(FLASH WRITER)の起動を促される。 | ||
+ | |||
+ | ****SIMPLE TERMとブートローダ [#STERM_BL] | ||
+ | マイコンのフラッシュROMには出荷時に弊社オリジナルの[[ブートローダ>AT91SAM_BL]]が書き込まれています。~ | ||
+ | ブートローダはJTAGやその他の特殊なI/Fを使用せずとも、USBないしCOMポートを使用してマイコンのプログラム書き換えや操作を行う事が出来ます。~ | ||
+ | ブートローダを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成されたプログラムを[[ブートローダ>AT91SAM_BL]]で転送しても動作しません。 | ||
+ | -AT91SAM7X512 (Bootloader, ARM mode) | ||
+ | -AT91SAM7X512 (Bootloader, THUMB mode) | ||
+ | |||
+ | マイコンボードは出荷時にUSBをコンソールとして構成されたブートローダが書き込まれており、PCとマイコンボードをUSBケーブルで接続する必要があります。~ | ||
+ | USBを仮想シリアルポートとして認識させるためのPC用デバイスドライバは、[[GCC Developer Lite>GCC Developer Lite]]をインストールした際にWindowsのシステムフォルダにコピーされます。USBケーブルでマイコンボードとPCを接続するとデバイスドライバを要求されますが、自動検索させる事で自動的にインストールが行われます。~ | ||
+ | インストール後、新しいCOMポートがWindowsのデバイスとして追加され、SIMPLE TERMから該当するCOMポートを選択(COMポート番号はPCの環境によって変わるが、デバイス名に「AT91 USB to Serial Converter」が表示されたポートを選択)しオープンするとブートローダの各種コマンドが使用可能となります。その他の設定は以下の通りです。~ | ||
+ | Baudrate:ここでは意味を持たないので何でも構わない | ||
+ | Databits:8 | ||
+ | Stopbits:1 | ||
+ | Parity:Non | ||
+ | Flow Control:Non | ||
+ | Protocol:Xmodem | ||
+ | #ref(AT91SAM7_BL_COM.png,100%) | ||
+ | ブートローダの詳細及びコマンドモードの使い方等は[[こちら>AT91SAM_BL]]。~ | ||
+ | |||
+ | 先の設定リストでソースプログラムをコンパイルし成功するとSTERM.exe(SIMPLE TERM)の起動を促されます。「OK」を押してSIMPLE TERMを起動すると、特殊な設定が追加されてSIMPLE TERMが起動します。 | ||
+ | -既にSIMPLE TERMが実行中であれば2重に起動しない。 | ||
+ | -コンパイル済み.binファイルの情報が渡る(ステータスバーにて確認可)。 | ||
+ | -ユーザプログラムを転送する際の手順を記述したスクリプトファイルが使用できる様になる。 | ||
+ | |||
+ | #ref(AT91SAM7_STERM_SCRIPT1.png,100%) | ||
+ | |||
+ | マイコンボードがブートローダのコマンドモードであれば、「スクリプト実行[STERM SAM7]」をクリックするだけで転送するファイルを手動で選択する事無く転送にかかる処理が全て自動的に行われます。 | ||
+ | #ref(AT91SAM7_STERM_SCRIPT2.png,100%) | ||
+ | 本機能により、手動で間違ったファイルを選択して転送してしまったり、転送不可能な状態で転送をしてしまうといったミスを軽減する事ができます。 | ||
+ | |||
+ | |CENTER:BGCOLOR(red):||c | ||
+ | | :idea:|USB版ブートローダにてユーザープログラムが書き込まれているマイコンボードを、デバイスドライバがインストールされていないPCのUSBポートに接続してはなりません。&br;ブートローダは起動直後から5秒以内にデバイスドライバが活性化しないと、USBポートを非活性化した後にユーザプログラムに実行を遷移してしまうため、OSによってはその間にデバイスドライバのインストール処理が自動的にキャンセルされてしまいます。&br;初めてUSB版ブートローダを使用するためにPCにデバイスドライバをインストールさせるには、予めデバイスドライバがインストールされたPCでユーザプログラムを消去したマイコンボードを使用します。| | ||
+ | |||
+ | ****FLASH WRITER [#FW] | ||
+ | 様々なマイコンに対応した転送ツールです。本マイコンにおいては2種類の転送方法に対応します。~ | ||
+ | どちらを選択するかはユーザに委ねられます。CPUコアやプログラムの詳細なデバッグも行うついでにメモリの書き換えを行うという場合のみ[[OpenOCD]]、フラッシュROMの書き換えさえ出来ればよいのであればSAM-BAを選択するのが一般的です。~ | ||
+ | FLASH WRITERを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成さAれたプログラムをFLASH WRITERで転送しても動作しません。 | ||
+ | -''AT91SAM7X512 (RAM, ARM mode)'' | ||
+ | ~[[OpenOCD]]を経由してSRAMに転送実行。 | ||
+ | -''AT91SAM7X512 (RAM, THUMB mode)'' | ||
+ | ~[[OpenOCD]]を経由してSRAMに転送実行。 | ||
+ | -''AT91SAM7X512 (Flash, ARM mode)'' | ||
+ | ~[[OpenOCD]]を経由してフラッシュROMに転送実行。コンパイルオプションを変更すればSAM-BAを経由して書き込む事も可能。 | ||
+ | -''AT91SAM7X512 (Flash, THUMB mode)'' | ||
+ | ~[[OpenOCD]]を経由してフラッシュROMに転送実行。コンパイルオプションを変更すればSAM-BAを経由して書き込む事も可能。 | ||
+ | |||
+ | |CENTER:BGCOLOR(red):||c | ||
+ | | :idea:|LOCKEビットがONの場合ここでの操作が抑止されるため、予め[[LOCKEビットをOFF>#LOCKE]]にした上で操作する必要があります。| | ||
+ | |||
+ | *****FLASH WRITERとSAM-BA [#FW_SAMBA] | ||
+ | Atmel社独自のマイコンに予め備わったブートローダの通信プロトコルに従ってフラッシュROMの書き換えを行います。対応するポートはDBGU(RS232C CN4)とUDP(USB CN5)となります。~ | ||
+ | マイコンをSAM-BAモードに移行させるには、その都度以下の操作を行います。~ | ||
+ | +マイコンボードへの電源の供給を絶つ。 | ||
+ | +ERASE端子(CN1-35)を3.3Vに接続する。 | ||
+ | +マイコンボードへ電源を供給し、5~10秒程度そのまま維持する。 | ||
+ | +マイコンボードへの電源供給を絶ち、ERASE端子をオープンにする。 | ||
+ | +マイコンは内部的にSAM-BAモードに移行するが、外観から確認する方法は無い。実際にPCとマイコンボードをUSBケーブルで接続してSAM-BAのデバイスドライバが活性化すればSAM-BAモードに移行している。 | ||
+ | |||
+ | USB経由でSAM-BAを使用する場合は専用のデバイスドライバが必要です。PC用デバイスドライバは、[[GCC Developer Lite>GCC Developer Lite]]をインストールした際にWindowsのシステムフォルダにコピーされます。マイコンをSAM-BAモードに設定した後、USBケーブルでマイコンボードとPCを接続するとデバイスドライバを要求されますが、自動検索させる事で自動的にインストールが行われます。間違ったデバイスがインストールされるケース(GPSレシーバ等)もある様なので、その場合は手動で「atm6124.Sys ATMEL AT91xxxxx Test Board」を選択し直す必要があります。~ | ||
+ | 準備が整っていればFLASH WRITERのPORTに列挙されますので、USBの場合は「\usb\ARM0 (SAM-BA)」を選択します。 | ||
+ | #ref(AT91SAM7_SAMBA_USB.png,100%) | ||
+ | マイコンボードのRS232Cコネクタ経由でSAM-BAを使用する場合は、PCとRS232Cケーブルで接続した上で適宜COMポートを選択します。その際にマイコンボードのUSBコネクタには何も接続してはなりません。~ | ||
+ | |||
+ | 書き込みが正常終了すると、SAM-BAモードを抜けて書き込まれたプログラムを即時実行します。再度SAM-BAで書き込む際は、もう一度電源を切ってモードを切り替えるフローを1.から実行する必要があります。 | ||
+ | |||
+ | |CENTER:BGCOLOR(red):||c | ||
+ | | :idea:|AT91SAM7XはGPNVMの2ビット目の状態によって起動時のメモリマップが変わります。&br;クリアされていると内蔵ROM(SAM-BAブートファーム)、セットされていると内蔵フラッシュROMが0番地にマッピングされます。チップの消去を行う事でGPNVMの2ビット目がクリアされ、内蔵ROMに書き込まれているSAM-BAブートファームウェアによりSAM-BAモードに移行します。&br;また、FLASH WRITERはユーザプログラムの書き込み終えた後にGPNVMの2ビット目をセットし、マイコンの再起動後は0番地へ内蔵フラッシュROMがマッピングされる様に構成します。| | ||
+ | |||
+ | *****FLASH WRITERとOpenOCD [#FW_OOCD] | ||
+ | TINY JTAG-ICE2で[[マイコンのJTAG I/FとPCを接続>#yed2b006]]し、[[OpenOCD]]を仲介してマイコンのフラッシュROMないしSRAMの書き換えを行います。~ | ||
+ | [[OpenOCD]]が起動している状態でFLASH WRITERのScanをクリックし、PORTのリストに現れる「OpenOCD (TELNET)」を選択します。 | ||
+ | #ref(AT91SAM7_OCD_TELNET.png,100%) | ||
+ | Write Script Fileはデバイス及び書き込むメモリの種類に応じて複数のファイルが存在します。ファイル名の先頭にat91sam7_が付加されているものが本マイコンボード用のファイルとなります。~ | ||
+ | これらスクリプトファイルはFLASH WRITERを自動起動させる設定がなされたコンパイラオプションにて予め指定されるので、通常はユーザが選択する必要はありません。 | ||
+ | -''at91sam7_bin_flash.script'' | ||
+ | ~.binファイルをフラッシュROMに書き込んだ後、マイコンを再起動 | ||
+ | -''at91sam7_elf_flash.script'' | ||
+ | ~.exe(elf)ファイルをフラッシュROMに書き込んだ後、マイコンを再起動 | ||
+ | -''at91sam7_bin_ram.script'' | ||
+ | ~.binファイルをSRAMに書き込んだ後、SRAMの先頭アドレスから起動 | ||
+ | -''at91sam7_elf_ram.script'' | ||
+ | ~.exe(elf)ファイルをSRAMに書き込んだ後、SRAMの先頭アドレスから起動 | ||
+ | -''at91sam7_erase.script'' | ||
+ | ~指定ファイルを無視して、フラッシュROMの消去とGPNVMを初期化 | ||
+ | |||
+ | AT91SAM7シリーズ全般に対応させるため、デバイスやフラッシュROMのサイズによっては無効となるコマンドも含まれます。それによりエラーのログが表示される事がありますが、実害はありません。 | ||
+ | |||
+ | **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と接続する場合も同様のコネクタが必要となります。 | ||
+ | |||
+ | なお、CN6にはJTAG I/F及び電源端子がまとめて接続されています。 | ||
+ | |||
+ | **LOCKEビット [#LOCKE] | ||
+ | 2009年6月以降に出荷されるマイコンボードは、[[ブートローダ>AT91SAM_BL]]およびユーザプログラムの不用意な消去から保護する目的でNVMのLOCKEビットをONに設定されています。本設定によりSAM-BAモード移行の操作と、JTAG I/Fからのアクセスが全て制限されます。~ | ||
+ | ブートローダのアップデートや、ブートローダ以外の方法でプログラミングやデバッグを行う場合は、予め以下の操作でLOCKEビットをOFFにする必要があります。 | ||
+ | +マイコンボードへの電源の供給を絶つ。 | ||
+ | +ERASE端子(CN1-35)を3.3Vに接続する。 | ||
+ | +マイコンボードへ電源を供給し、5~10秒程度そのまま維持する。 | ||
+ | +マイコンボードへの電源供給を絶ち、ERASE端子をオープンにする。 | ||
+ | +もしそれでもSAM-BAやJTAG I/Fが使用できない場合はもう一度1.から繰り返す。 | ||
+ | |||
+ | 若干煩雑ですが、本操作にてマイコンのNVMやフラッシュROMは製造初期状態に初期化され、SAM-BAやJTAG I/Fが使用可能になります。 | ||
+ | |||
+ | **SAM7X用ライブラリ [#LIBRARY] | ||
+ | [[GCC Developer Lite>GCC Developer Lite]]では1つのソースプログラムのみを対象とするため、機能別にソースを分割して編集やコンパイルするといった使い方は出来ません(完全にできないという訳でもありません)。だからと言って全ての機能を一つのソースに記述する事は、プログラムの見通しが悪くなりバグの温床になりかねません。~ | ||
+ | そこで、複数のソースに分割する事無くある程度のソースプログラムサイズでコーディングするために、頻繁に使用されるであろう一部の機能が専用のライブラリとして提供されます。~ | ||
+ | GCC Developer Liteを標準的な環境のPCへインストールすると、「C:\Program Files\BestTech\GCC Developer Lite\TARGET\SAM7X」フォルダに必要なファイルがコピーされます。必要に応じて本フォルダを参照できますし、ユーザがソースを修正しライブラリを再構築する事も可能です。 | ||
+ | -''スタートアップルーチン'' | ||
+ | ~C言語で作成したプログラムを実行させるために、アセンブラないしC言語で記述された必要最低限の初期化処理プログラムです。~ | ||
+ | '''boot_remap.s''' (スタートアップルーチン本体のソースファイル)~ | ||
+ | '''remap.c''' (REMAP処理用のソースファイル)~ | ||
+ | '''boot.o, boot_thumb.o''' (アセンブル済みオブジェクトファイル) | ||
+ | -''リンカスクリプトファイル'' | ||
+ | ~実行条件に応じたメモリの割り当てを記述したファイルです。コンパイル時にリンカが参照し、コードの最終的な配置が決定されます。~ | ||
+ | '''sam7x512_ram.x''' (SRAM上で実行させるリンカスクリプト)~ | ||
+ | '''sam7x512_rom.x''' (フラッシュROM上で実行させるリンカスクリプト)~ | ||
+ | '''sam7x512_rom_term.x''' ([[ブートローダ>AT91SAM_BL]]を介して実行させるリンカスクリプト)~ | ||
+ | -''内蔵ペリフェラルのレジスタ名定義ヘッダファイル'' | ||
+ | ~マイコンに内蔵された各種ペリフェラルが持つレジスタは、決められたメモリ上のアドレスに配置されています。それらレジスタをアドレスではなくレジスタ毎に決められた名称を使い、変数のようにアクセスするためのマクロ定義が記述されています。~ | ||
+ | '''AT91SAM7X.h''' (レジスタのマクロ定義)~ | ||
+ | '''AT91SAM7X_BITDEFINE.h''' (各レジスタのビット情報) | ||
+ | -''UART API'' | ||
+ | ~作成したプログラムの動作を確認を行う際に、マイコンのシリアルポートを使用する事を推奨しています。マイコンと文字によるコミュニケーション機能を用意する事で、レジスタの値やプログラムの進捗の把握、さらにはマイコンに対してPCから指令を与えるといった使い方が出来ます。~ | ||
+ | 本マイコンには複数のシリアルポートが備わっており、制御方法も多種多様なため、それに応じてライブラリとして提供する通信用APIも多くなっています。~ | ||
+ | '''us.h''' (APIのプロトタイプ宣言を含むヘッダファイル)~ | ||
+ | '''dbgu~.c''' (DBGUポートをポーリングで使用するAPIのソース群)~ | ||
+ | '''dbgu2~.c''' (DBGUポートを割り込みで使用するAPIのソース群)~ | ||
+ | '''us0~.c''' (USART0ポートを割り込みで使用するAPIのソース群)~ | ||
+ | '''us1~.c''' (USART1ポートを割り込みで使用するAPIのソース群)~ | ||
+ | '''udp_serial~.c''' (UDPポートでシリアルエミュレーションを行うAPI群)~ | ||
+ | '''.\cdc_serialemu''' (UDPポートでシリアルエミュレーションを行うドライバソース) | ||
+ | -''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モードでコンパイルし、アーカイブするバッチ)~ | ||
+ | '''libsam7x.a''' (makelib.batで作成されるライブラリファイル)~ | ||
+ | '''libsam7x_thumb.a''' (makelib_thumb.batで作成されるライブラリファイル) | ||
+ | |||
+ | **サンプルプログラム [#SAMPLE] | ||
+ | **その他 [#ETC] |
(This host) = https://www.besttechnology.co.jp