Arduinoのファームウェアをアップグレードして、より低い処理能力を提供するために低電圧/過電圧を変更するなど、より多くのことができるようにすることは可能ですか?これを行うには、おそらくチップ自体を再フラッシュする必要がありますが、それはどのように達成されますか?
Arduinoのファームウェアをアップグレードして、より低い処理能力を提供するために低電圧/過電圧を変更するなど、より多くのことができるようにすることは可能ですか?これを行うには、おそらくチップ自体を再フラッシュする必要がありますが、それはどのように達成されますか?
回答:
ほとんどのArduinoボードで使用されているATmega328p MCUの「ファームウェア」に関する質問の側面に答えるには:
ブートローダを除いて、ATmegaにはファームウェアはありません。作成するプログラムは、ハードウェアで直接実行されます。
ISPプログラマーで設定される特定の「ヒューズ」設定があります。ただし、そのうちの24(3バイト)しかなく、それらは主に低レベルの構成に関連しており、私があなたが尋ねているとは思わない:
Bootloaderもあります。これは、MCUのプログラムメモリの別のセグメントに置かれ、起動時に自身を更新できる小さなプログラムです(すべてのarduinoがプログラムされる方法です)。ただし、起動時に短時間だけ実行され、MCUがメインプログラムにジャンプした後、メモリから完全に削除されます。
最後に、USBシリアルインターフェイスとして使用されるほとんどのarduinoボードには補助MCU(ATmega16U2 / 8U2)があり、異なる動作(キーボード/マウスのエミュレートなど)に更新できますが、これも実際には変更ではありませんしたがって、「異なるファームウェアのインストール」としてカウントされるかどうかは、arduinoの定義方法によって異なります。
本当に、ATmega328Pデータシートを読むことを強くお勧めします。これは、基本的に「Arduino」を形成するMCUのドキュメントです。誤解と思われるものに対処する必要があります。
さまざまなF_CPUのデバイスのアンダー/オーバーボルティングに関して、以下のチャートが関係を示していることに注意してください。その結果、ほとんどのArduinoは5Vおよび16MHzのクロックレートで動作しています。8MHzで動作する3.3Vバリアントがいくつかありますが。
ただし、IDEで提供されるコアライブラリには通常、8 MHzと16 MHzの両方のF_CPU速度に固有の#ifがあり、ほとんどの場所で式を使用していません。
したがって、あなたが求めることをすることが可能です。ただし、コアライブラリの制限が影響します。費用対利益の比を、非常に意図したものに傾ける。そして、おそらくストックIDEとコアライブラリをよりメイクファイルメソッドに任せるでしょう。