TITLE:AVR Bootloader #norelated #contents **はじめに [#m3cef047] Atmega168, Atmega32, Atmega644, Atmega128, AT90CAN128マイコンボードシリーズに対応した弊社オリジナルブートローダです。~ マイコンに備わったUARTを経由してホストからマイコンボードのフラッシュROMへユーザプログラムを転送及び書き込んだり、書き込まれたユーザプログラムを実行するといった機能を持ちます。~ 付属のバッチファイルにてソースプログラムからコンパイルでき、ユーザ自身による改造も可能です。~ ファイルの送受信にはXMODMプロトコルを使用しますが、全てのXMODEMに対応したターミナルクライアントに対応するものではありません。 **基本仕様 [#z016a91a] ***適用コンパイラとコンパイル方法 [#abd18765] 弊社提供のGCC Developer Lite最新版のインストール先に「C:\Program Files\BestTech」フォルダを指定し、インストールコンポーネントとして「ATMEGAxxxでのみ使用」、もしくは「フルインストール」が選択されている必要があります。 ***ソースのダウンロード [#DOWNLOAD] -V1.3 #ref(AVR_BL_1.3.ZIP) 公開日: 2013/7/10 -V1.2 #ref(AVR_BL_1.2.ZIP) 公開日: 2009/6/21 ***メモリマップ [#i69bce47] ブートローダはフラッシュROM上で動作するプログラムですが、AVRシリーズに設けられたブートローダ領域(フラッシュROMの後半)に書き込まれています。~ 現在リリースしているバージョンでは占有フラッシュROM領域が2kbyte以下である前提としているため、ブートローダ領域の先頭アドレスはフラッシュROMの最終アドレスから2kバイト手前の位置に設定しています。本設定はAVRのヒューズビットにて設定されており、デバイスによって設定方法が異なるため、ブートローダをコンパイル及び書き込む方法もデバイス毎に設けています。 #ref(avrbootloader_map.png,100%) なお、ブートローダは全てC言語で作られているため、デバイスによっては2kバイト以下に抑えるのがとてつもなく厳しい状態です。 ***ブートローダの動作フロー [#g0458e4a] #ref(AVR_UART_BOOT_FLOW.vsd,100%) マイコンがリセットされるとユーザプログラムへ実行が遷移するか、ブートローダがコマンドモードになるかの2つの状態に動作が分岐します。条件は以下の通りです。 -V1.2以前~ ユーザプログラムへ実行が遷移する前にユーザ自らの操作でコマンドモードに遷移させる場合は、リセット直後に'!'を素早く3回入力する必要があります。ユーザプログラムが書き込まれていなければ、常にコマンドモードとなります。それ以外は全てユーザプログラムが実行されます。 -V1.3以降~ 電源印可状態でリセットボタンの押下、もしくはユーザプログラムが書き込まれていなければ、コマンドモードとなります。それ以外は全てユーザプログラムが実行されます。 **使用方法 [#d6e29a48] [[SIMPLE TERM>GDL#STERM]]からのキー入力にて各種機能を実行します。 ***コマンド [#o8bc0acf] ****ヘルプ [#m4dbac34] 'w','e','g'の3つのコマンド以外が入力されるとコマンドのリストが表示されます。 AVR BL1.2 >? f:flash e:eeprom g:go > ****フラッシュROMへの書き込み 'f' [#s0f195f4] ホストからフラッシュROMへファイルを転送及び書き込みを行います。 >f この状態で既に転送を待ち受ける状態となっていますので、SIMPLE TTERMから任意のファイルを選択しXMODEMプロトコルで転送を開始させます。~ 成功すれば<OK>、失敗するとNGと表示されます。 >f OK > ****EEPROMへの書き込み 'f' [#nfd3d903] ホストからEEPROMへファイルを転送及び書き込みを行います。 >e この状態で既に転送を待ち受ける状態となっていますので、SIMPLE TERMから任意のファイルを選択しXMODEMプロトコルで転送を開始させます。~ 成功すれば<OK>、失敗するとNGと表示されます。 >e OK > ****実行 'g' [#bb842d88] フラッシュROMに書き込まれたプログラムを実行します。 **その他 [#j44a4324] ***ヒューズビット [#l2d95a31] 付属のブートローダを書き込むバッチファイルでは、JTAGインターフェースを内蔵するターゲットに限りJTAGENビットを禁止に設定しています。これはJTAGに必要な端子がGPIOを兼用しており、許可状態では汎用的に使用できる端子が少なくなってしまうための措置となります。~ なお、弊社のAVRマイコンボードシリーズでJTAGを使用するには、JTAGではなくシリアルプログラミング(ISP)でのみ本JTAGENビットを許可できます。
(This host) = http://www.besttechnology.co.jp