2016年11月03日 | 公開。 |
ATmega88/88V/168P/328Pのサポートファイルに含まれているブートローダのコンパイルの方法について説明します。Windows 10の環境でコンパイルする事を前提に説明します。
1ページの表2で紹介したATmega88/88V/168P/328Pのサポートファイルには、表6に示す様に、マイコン別、クロック周波数別に6種類のブートローダが含まれています。
ブートローダのファイル名 | マイコンの型番 | クロック周波数 |
---|---|---|
optiboot_atmega88_8MHz.hex |
ATmega88/88V |
8MHz |
optiboot_atmega88.hex | ATmega88 | 16MHz |
optiboot_atmega168p_8MHz.hex | ATmega168P | 8MHz |
optiboot_atmega168p.hex | ATmega168P | 16MHz |
optiboot_atmega328_8MHz.hex | ATmega328P | 8MHz |
optiboot_atmega328.hex | ATmega328P | 16MHz |
表6に挙げたブートローダをビルドするためには、Optibootのソースファイルが必要になります。GitHubのOptibootのページからダウンロードする方法もありますが、GitHubのソースファイルを利用すると、コンパイルのための環境を自力で構築する必要があり、とても手間がかかります。
Arduino IDEにOptibootのソースファイルが付属していますので、それを利用する事にします。ただし、最近のArduino IDEには、Optibootをコンパイルする環境が付属していないようですので、Arduino IDE 1.0.1をダウンロードして使う事にします。
arduino.ccのArduino IDEの過去のバージョンのダウンロードページから、Arduino IDE 1.0.1をダウンロードします。図32を参考に、ダウンロードしてください。arduino-1.0.1-windows.zipというZIPファイルがダウンロードできます。
ダウンロードしたZIPファイルを展開すると、arduino-1.0.1というフォルダができます。これをCドライブの直下にコピーしてください。
ATmega88/88V/168P/328Pのブートローダをコンパイルするには、Optibootのソースファイルに加えて、ATmega88/88V/168P/328P用の設定を記したメイクファイル(ファイル名:MakeFile)が必要になります。MakeFileは、次のリンクからダウンロードしてください。
Optibootのソースファイルは、以下のディレクトリ(フォルダ)にあります。
このディレクトリの内容は、図33の様になっています。
これらのファイルの中で、Makefileが、各マイコンのブートローダの設定を記述したファイルです。これを、先ほどダウンロードしたMakefileと置き換える必要があります。そのために、元々optibootディレクトリにあるMakefileを、例えばMakefile_oldにリネームして保存しておき、先ほどダウンロードしたMakefile_atmega.zipを展開して得られるMakefileをoptibootディレクトリにコピーします。
また、Arduino IDE 1.0.1に付属するoptibootのソースコードは、ATmega168Pに対応していませんので、optiboot.cとpin_defs.hの一部を書き換える必要があります。
optiboo.cをテキストエディタで開き、231行目が次の様になっている事を確認してください。
#if defined(__AVR_ATmega168__)
この行を次の様に書き換えて、上書き保存してください。
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__)
またpin_defs.hをテキストエディタで開き、1行目が次の様になっている事を確認してください。
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega88) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__)
この行を次の様に書き換えて、上書き保存してください。
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega88) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__) || defined(__AVR_ATmega168P__)
次にブートローダのコンパイルを行います。コンパイルには、omake.batというバッチファイルを用いて、コマンドラインから操作します。
図35の様に、画面左下のスタートボタンを右クリックし、コマンドプロンプトを起動してください。
コマンドプロンプトが起動したら、次の様に入力してからエンターキーを押し、カレントディレクトリ(作業を行うディレクトリ)をoptibootディレクトリに移します。(図36参照)
cd C:\arduino-1.0.1\hardware\arduino\bootloaders\optiboot
この状態で
omake atmega88
と入力し、エンターキーを押すと、コンパイルが始まり、optiboot_atmega88.hexというファイルができます。これが、16MHzのATmega88用のブートローダです。(図37、図38を参照)
入力するコマンドと、生成されるブートローダの対応表を、表7に示します。
入力するコマンド | 生成されるブートローダ | 適合するマイコンの型番 | クロック周波数 |
---|---|---|---|
omake_atmega88_8MHz | optiboot_atmega88_8MHz.hex | ATmega88/V | 8MHz |
omake_atmega88 | optiboot_atmega88.hex | ATmega88 | 16MHz |
omake_atmega168p_8MHz | optiboot_atmega168p_8MHz.hex | ATmega168P |
8MHz |
omake atmega168p |
optiboot_atmega168p.hex | ATmega168P | 16MHz |
omake atmega328_8MHz |
optiboot_atmega328_8MHz.hex |
ATmega328P |
8MHz |
omake atmega328 |
optiboot atmega328.hex |
ATmega328P |
16MHz |
商品名 | Arduino Uno用ブートローダスケッチライタシールドキット | |
税抜き小売価格 | 1440円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino Uno用ブートローダライタシールドキットサポートページ |
商品名 | Arduino用ブートローダ/スケッチライタキット | |
税抜き小売価格 | 3000円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino用ブートローダ/スケッチライタキットサポートページ |
商品名 | M3×6mm両側メススペーサ・M3X5mmネジ 各4本セット | |
税抜き小売価格 | 120円 | |
販売店 | スイッチサイエンス | |
サポートページ | M3×6mm両側メススペーサ・M3X5mmネジ 各4本セットサポートページ |