最近のほとんどすべてのArduinoボードはOptibootブートローダーを使用しています。以前使用されていたATmegabootと比較して、これはフラッシュの点で小さく(約1.5KB)、アップロード速度が速く(115.2k対57.6k)、スケッチをより速く開始します(リセット後の待機中の遅延はより短くなります)。
Optibootブートローダーに代わるものはありますか?具体的には、小さな(フラッシュの観点から)ブートローダーはありますか?彼らにはどんな違いがありますか?
最近のほとんどすべてのArduinoボードはOptibootブートローダーを使用しています。以前使用されていたATmegabootと比較して、これはフラッシュの点で小さく(約1.5KB)、アップロード速度が速く(115.2k対57.6k)、スケッチをより速く開始します(リセット後の待機中の遅延はより短くなります)。
Optibootブートローダーに代わるものはありますか?具体的には、小さな(フラッシュの観点から)ブートローダーはありますか?彼らにはどんな違いがありますか?
回答:
Optibootは、入手可能な最小のブートローダーです。
しかし、avrdudeとAVRブートローダーの間に開発された堅牢なstk500v2通信プロトコルを備えたはるかに強力な(ハードウェアテスト、RAMおよびフラッシュコンテンツチェックなどの組み込みコンソールを備えた)ブートローダーがあります。
ATmega2560とATmega1284pで使用しました。3バイトと2バイトの両方のプログラムカウンターMCUで動作します。
私が持っているSTK500v2ブートローダのバージョンはSourceforgeを。
このブートローダーは、Mark Sproulによって更新されたPeter Fleury STK500v2ブートローダーに基づいています。Goldilocks(ATmega1284p)ボードでサポートするように編集しました。
主な機能は、STK500v2プロトコルを使用して、ArduinoにFlashイメージをアップロードすることです。このプロトコルは、avr109プロトコルよりも堅牢で、より優れたエラー機能を提供します。余談ですが、Arduinoの世界ではavr109プロトコルは「Arduino」と呼ばれています。これは、DTRを切り替え(ボードをリセットして自動的にブートローダーに入る)、STK500v2プロトコルはArduinoの世界では「配線」と呼ばれるためです。理由。
Fleury / Sproul STK500v2ブートローダーは、フラッシュサイズが大きいため、3バイトのプログラムレジスタを持つATmega2560で動作するように設計されています。ただし、通常の2バイトボードもサポートします(他のすべてのもの)。
フラッシュが豊富なボード(Goldilocks 1284pなど)には、フラッシュ、SRAM、ハードウェアのクエリに使用できるハードウェアモニターがあります。追加のコードなしで接続を確認し、フラッシュとEEPROMの実際の内容を確認できます。1284pをサポート2 USARTので、私が上でデバッグを持っている能力を追加USART1を経由してアップロードプロセスだから、USART0が乱されることはありません。
TinySafeBootは、ATtinyおよびATmegaデバイスの代替品です。
多くのATtinyとATmegaに対応(下記参照)
フラッシュおよびEEPROMへの読み取り/書き込みアクセス。
シリアル通信に利用可能なすべてのIO
1線式、1本の回線に複数のAVRも搭載
自動ボーディング、堅牢なプロトコル。
リセット+パスワードによってアクティブ化(オプション)
パスワードとタイムアウトのユーザーはいつでも変更できます。
失われたパスワードを克服するための「緊急消去」-すべてのデータを殺しますが、ブートローダーはそのまま残します。
ATtinys:〜550バイト、
ATmegas:<512バイト(!)
ATtiny用TSBはそれ自体を更新できます。
ソースコードはフリーソフトウェア(GPL)です
Optibootブートローダーに代わるものはありますか?
エラー... アップロード時に高速になるように、実際にはOptibootに [非公式]の変更があります。
高ボーレートのバリエーションをインストールするには…
- Arduino IDEが実行されていないことを確認します
- 上記のリンクを使用して7-Zipアーカイブをダウンロードします
- 3つのファイルを次のディレクトリに抽出します。
{Arduino Installation Root}\hardware\arduino\bootloaders\optiboot\
- 次のディレクトリにあるboards.txtファイルを開きます。
{Arduino Installation Root}\hardware\arduino\
その中のこのセクションを見つけてください:
uno.name=Arduino Uno uno.upload.protocol=arduino uno.upload.maximum_size=32256 uno.upload.speed=115200 uno.bootloader.low_fuses=0xff uno.bootloader.high_fuses=0xde uno.bootloader.extended_fuses=0x05 uno.bootloader.path=optiboot uno.bootloader.file=optiboot_atmega328.hex uno.bootloader.unlock_bits=0x3F uno.bootloader.lock_bits=0x0F uno.build.mcu=atmega328p uno.build.f_cpu=16000000L uno.build.core=arduino uno.build.variant=standard
次のセクションを追加…
uno_uf.name=Arduino Uno / Upload Fast uno_uf.upload.protocol=arduino uno_uf.upload.maximum_size=32256 uno_uf.upload.speed=250000 uno_uf.bootloader.low_fuses=0xff uno_uf.bootloader.high_fuses=0xde uno_uf.bootloader.extended_fuses=0x05 uno_uf.bootloader.path=optiboot uno_uf.bootloader.file=optiboot_atmega328_250000.hex uno_uf.bootloader.unlock_bits=0x3F uno_uf.bootloader.lock_bits=0x0F uno_uf.build.mcu=atmega328p uno_uf.build.f_cpu=16000000L uno_uf.build.core=arduino uno_uf.build.variant=standard
- 強調表示されている2つの値を、使用する予定のボーレート(250000、500000、または1000000)に変更します。boards.txtファイルを保存して閉じます。
- お気に入りのISPプログラマを使用して、新しいブートローダーをインストールします。Arduinoの宇野/アップロードファストボードが(ツール/ボード)選択されていることを確認:することを忘れないでください、適切な場合は、あなたのプログラマのシリアルポートは(ツール/シリアルポート)選択されていることを確認し、(ツール/プログラマプログラマが選択されていることを確認)、ブートローダーをインストールした後、シリアルポートをArduino Unoのシリアルポートに変更します。
上記のテキストは、サイトとの互換性のために若干変更されています。元の投稿
それだけでなく、ATmegabootブートローダーもありません。Arduinoがこれまでに生産されたすべてのUnosにロードすると、かなり最適化されていると思います。上記のハックはアップロード時間を短縮しますが、ブートローダーのサイズを縮小しません。ブートローダーの待機時間を削除して、起動時間を短縮することもできます。
:あなたはフラッシュを参照してくださいを最大限心配という方は本当にスケッチ縮小する方法と、この答えを [上に私はフラッシュメモリやSRAMが不足した場合、私は何ができますか?]。