Optibootブートローダーにはどのような選択肢がありますか?


11

最近のほとんどすべてのArduinoボードはOptibootブートローダーを使用しています。以前使用されていたATmegabootと比較して、これはフラッシュの点で小さく(約1.5KB)、アップロード速度が速く(115.2k対57.6k)、スケッチをより速く開始します(リセット後の待機中の遅延はより短くなります)。

Optibootブートローダーに代わるものはありますか?具体的には、小さな(フラッシュの観点から)ブートローダーはありますか?彼らにはどんな違いがありますか?

回答:


8

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が乱されることはありません。


これはFreeRTOSの一部のようですが、そのブートローダーはFreeRTOSから完全に独立していますか?
jfpoilpret 2014年

1
それは完全に独立しています。ブートローダーは、何でもフラッシュを書き込むために使用されます。FreeRTOSは、main()が開始された後で提供されます。同じリポジトリに保存します。私はそれを書いたのではなく、自分の目的のために修正しただけです。
feilipu 14年

これは興味深いようです。ブートローダーの重要な機能を答えにまとめることができれば役に立ちます:Flashでのサイズ、最大速度のアップロード、Arduinoイノシシでの動作、ハードウェアテストについての詳細)。
jfpoilpret 14年

これは、Mark Sproulによって更新されたPeter Fleury STK500v2ブートローダー(に基づく)です。Goldilocks(ATmega1284p)ボードでサポートするように編集しました。主な機能は、STK500v2プロトコルを使用してフラッシュイメージをArduinoにアップロードすることです。このプロトコルは、avr109プロトコルよりも堅牢で、より優れたエラー機能を提供します。余談ですが、Arduinoの世界ではavr109プロトコルは「Arduino」と呼ばれています。これは、DTRを切り替え(ボードをリセットして自動的にブートローダーに入る)、STK500v2プロトコルはArduinoの世界では「配線」と呼ばれるためです。理由。
feilipu 2014年

1
情報をお寄せいただきありがとうございます。この情報は回答の一部となるはずなので、投稿を更新しました。必要に応じて、さらに情報を追加してください。
jfpoilpret 14年

3

TinySafeBootは、ATtinyおよびATmegaデバイスの代替品です。

  • 多くのATtinyとATmegaに対応(下記参照)

  • フラッシュおよびEEPROMへの読み取り/書き込みアクセス。

  • シリアル通信に利用可能なすべてのIO

  • 1線式、1本の回線に複数のAVRも搭載

  • 自動ボーディング、堅牢なプロトコル。

  • リセット+パスワードによってアクティブ化(オプション)

  • パスワードとタイムアウトのユーザーはいつでも変更できます。

  • 失われたパスワードを克服するための「緊急消去」-すべてのデータを殺しますが、ブートローダーはそのまま残します。

  • ATtinys:〜550バイト、

  • ATmegas:<512バイト(!)

  • ATtiny用TSBはそれ自体を更新できます。

  • ソースコードはフリーソフトウェア(GPL)です


TSBとOptibootの比較を知っている人はいますか?最後の更新は少なくとも2年前のようです...
ジョニーなぜ

1

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が不足した場合、私は何ができますか?]。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.