コンピューターなしのISPとしてのArduino


12

ispとして動作するように設定された1つのarduinoにデータとしてファームウェアをプリロード(コンピューターなどを使用)し、そのarduinoを使用してispインターフェースを別のインターフェースにプラグインし、ファームウェアをアップロードする方法を知っているか、知っていますか?

明確にするために-本格的なコンピューターに直接接続することなく、arduinoスケッチをアップロードできるようにする方法を探しています。

理想的な手順は次のとおりです。

  1. 新しいスケッチ/ファームウェアを書く
  2. ファームウェアのコンパイル
  3. コピーファームウェアをデータとしてArduino Aに書き込みます(Arduino AはISPとして動作するように設定されています)
  4. Arduino Aをコンピューターから切り離す
  5. 別の場所で、ISPヘッダーを使用してArduino AをArduino Bに接続します
  6. 何らかの方法(プッシュボタンなど)を使用すると、Arduino Aがトリガーされ、プリロードされたファームウェアがArduino Bにアップロードされます。

ファームウェアのアップロードはSPIインターフェースを介した単なるバイト交換であるため、理論的には機能すると想定していますが、現実はわかりません。

私が考えているシナリオは、arduinoを(永久に)自分のコンピューターから離れた場所にインストールする場合です(ラップトップを持っていないか、手に入れたくない)再プログラムするのは面倒ですそれ。

私が検討したもう1つの方法は、DILパッケージのATMEGAを使用することです再プログラムするたびにチップ。


その結果、プログラマー(Arduino A)に読み込まれた正確なスケッチ/ファームウェアを使用して、他のArduinoのみをプログラムできるようになります。だから、生産ラインのようにコピーを作成することだけが有用でしょうか?スケッチ上の何かを変更する必要がある場合は、コンピューターに戻って修正し、再度読み込む必要があります。これは正しかったですか?
リカルド14年

1
「フラッシュイメージ」を別のサポート(SDカードなど)のターゲットにコピーしたままにしておくことはできませんか?
jfpoilpret 14年

うん。生産ラインにも適していると思います。私の状況では、移動しにくいエンクロージャーにarduinoが接着されており、コンピューターとは別の部屋にあります(移動も困難です)。したがって、スケッチを変更するたびにArduino Aにスケッチをロードできます。
m3z 14年

2
ブートローダーのプログラミングという限られた目的のために行われました-github.com/WestfW/OptiLoader-しかし、利用可能なフラッシュからツールのサイズを差し引いたものよりも小さいペイロードであれば動作するはずです。より大きなペイロードファームウェアの場合、外部ストレージデバイス(または単にArduino Mega?)が動作するはずです。
クリスストラットン14年

@ChrisStrattonは私にぴったりです。ありがとう
m3z 14年

回答:


5

私が思うにSDと小さな、高速で、ポータブルAVRプログラマ- μProgが何をしたいん。SDカードに複数のファイル(16進、EEPなど)を保存し、PCを必要とせずにターゲットMCUに書き込むファイルをデバイスメニューから選択できます。
最良の部分は、無料で入手できることです(PCB、回路図、ファームウェアなど)。

一種のポータブルAVRプログラマーの1つ!ターゲットデバイスが届きにくい場所にあり、ラップトップに大量の配線を持ち込むことができない(またはしたくない)デバイスファームウェアを更新する必要がある場所を支援します。簡単に使用でき、作成が非常に安く、超小型、超高速、SDカードを使用…

特徴:

  • 超小型–寸法44 x 39 x 5,5 mm
  • 超高速–最大12,5kB / sの書き込み、最大14,5kB / sの読み取り
  • 安価な記憶媒体を使用–小型のMICRO SDカード
  • FAT16およびFAT32ファイルシステムをサポート
  • フラッシュおよびEEPROMメモリの読み取り、書き込み、検証が可能
  • fusebitsおよびlockbitsの読み取り、書き込み、検証が可能
  • BIN、HEX、およびTXTファイルへの書き込みと読み取り
  • fusebitsのデフォルト値を設定し、メモリを消去できます
  • 安価で入手しやすいLPH7779グラフィックディスプレイ
  • すべての操作後に面白いアニメーションを表示します
  • 標準プログラミングヘッダー– Atmel 6-PIN ISP
  • (SDから)自身のファームウェアを自動更新する機能があります
  • 非常に使いやすい、4ボタンナビゲーション
  • ユーザー設定メニュー
  • プログラミング速度の自動選択(最大4MHz)
  • 3Vで動作し、3Vから5Vに供給されるチップをプログラムします

対応チップリスト

ここに画像の説明を入力してください


いいね。週末に調査します。
m3z 14年

先日、この質問をどのように逃したかわかりません。私は、この正確なプロジェクトを自分で作成することについて友人と話しているだけです。そして、私はあなたの答えを見ます。
マディバッド14年

4

私はあなたが望むものに対する直接的な解決策はありませんが、はい、それを行うことは可能です。ブートローダファームウェアをハッキングして、ファームウェアフラッシュコードを読み取り、ISP経由でアップロードすることができます。

両方のarduinoのMCUに合計32kのフラッシュしかない場合、ターゲットAVRに32kのファームウェアをアップロードできないことは明らかですが、それを行うにはフラッシャーにターゲットよりも多くのフラッシュを持たせる必要があります(1284pまたは2560メガで十分か、または328 / 32u4が168またはattinyをフラッシュするためにクードになります)。唯一の例外は、ファームウェアをフラッシュの合計メモリよりも小さくすることです(点滅スケッチのように)。

結局、それは簡単なことではありません。100%純粋なAVRコードですが、あなたはそれを行うことができます。見て:

私が実装する方法は、すべてをフラッシャーデバイスのブートローダーに収めるため、ファームウェア(0x00からブートローダーの開始アドレスまでのすべて)を読み取り、AVRISPをOptibootにマージしてISP経由でフラッシュします。

とにかく、それは私の地元のハッカースペースで提案するかもしれないブートローダーとAVRに関するワークショップのための興味深いプロジェクトです!;-)

HTH


おかげで、AVRISPのソースコードは私が予想したほど複雑に見えません。私は週末にこの深くビットを見ていきます
m3z

あなたの地元のハッカースペースはどこですか?:)
マディバッド14年

それはフランスルループ
zmo 14年

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