題:
Arduino,無需計算機即可作為ISP
m3z
2014-03-19 22:10:03 UTC
view on stackexchange narkive permalink

任何人都知道或知道一種將固件作為數據預加載(使用計算機或其他任何方式)到設置為作為isp的arduino上,然後使用該arduino將isp接口插入另一個並上傳固件的方法。

要明確-我正在尋找一種無需直接連接功能強大的計算機即可上傳arduino草圖的方法。

理想情況下,涉及的步驟是:

  1. 編寫新的草圖/固件
  2. 編譯固件
  3. 將復制固件作為數據寫入Arduino A(將Arduino A設置為可作為ISP使用)
  4. 從計算機上卸下Arduino A
  5. 在單獨的位置使用ISP標頭將Arduino A連接到Arduino B
  6. 使用某種方法(可能是按鈕)觸發Arduino A
  7. ol>

    我假設從理論上講它可以工作,因為上傳固件只是跨SPI接口的字節交換,但我不確定現實。

    場景o我正在考慮的是,如果要(永久地)將arduino安裝在遠離計算機的位置(我沒有筆記本電腦,也不想買一台筆記本電腦),那麼重新編程很麻煩。

    我考慮過的另一種方法是使用DIL封裝的ATMEGA,然後我可以將其從板上卸下並在計算機上進行編程,然後返回到板上-但是,我寧願不要冒引腳彎曲的風險。以及每次我要重新編程時都必須取出芯片的麻煩。

結果是您將只能使用已加載到程序員(Arduino A)中的精確草圖/固件對其他Arduino進行編程。因此,僅在生產線中進行複制才有用,是嗎?如果需要更改草圖上的任何內容,則需要回到計算機進行修改並再次加載。我說對了嗎?
是否可以將“閃存映像”複製到另一支支架(例如SD卡)上的目標上?
是的我想這對一條生產線也會有好處。我的情況是,我將arduino粘在難以移動的外殼中,並且與我的計算機不在同一房間(也很難移動)。因此,每次我想更改它時,我都會很高興將其加載到Arduino A上。
這樣做是出於對引導加載程序進行編程的有限目的-https://github.com/WestfW/OptiLoader-但應適用於任何小於可用閃存減去工具尺寸的有效負載。對於更大的有效負載固件,應該可以使用外部存儲設備(或僅是Arduino Mega?)。
@ChrisStratton看起來很適合我。謝謝
多虧了這兩個答案,我很快就會將一個標記為答案。我只想先使其工作。
二 答案:
alexan_e
2014-03-20 22:39:07 UTC
view on stackexchange narkive permalink

我認為 µProg –具有SD的小巧,快速,便攜式AVR編程器可以滿足您的需求。您可以將多個文件存儲在SD卡中(十六進制,eep等),然後從設備菜單中選擇無需向PC寫入哪個文件即可寫入目標MCU。
最好的部分是它是免費提供的( PCB,原理圖,固件等)。

一種便攜式AVR編程器!在需要更新設備固件的任何地方提供幫助,目標設備位於難以到達的位置,並且您不能(或不想)將筆記本電腦隨身攜帶電線。易於使用,製造便宜,超小,超快,使用SD卡...

功能:

  • 超小–尺寸44 x 39 x 5,5 mm
  • 超快–使用便宜的存儲介質–小型MICRO SD卡,可寫入速度高達12,5kB / s,讀取速度高達14,5kB / s
  • >支持FAT16和FAT32文件系統
  • 可以讀取,寫入,驗證閃存和eeprom存儲器
  • 可以讀取,寫入,驗證熔絲位和鎖定位
  • 寫入和讀取BIN,HEX和TXT文件
  • 可以設置熔絲位,擦除存儲器的默認值
  • 便宜,易於獲取,LPH7779圖形顯示
  • 顯示有趣的動畫每次操作後
  • 標準編程標頭– Atmel 6針ISP
  • 具有自動更新自己的固件(從SD)的功能
  • 非常簡單,使用4個按鈕導航
  • 用戶設置菜單
  • 編程速度自動選擇(最高4MHz)
  • 以3V運行,將3V供電的芯片編程為5V

支持的芯片列表

enter image description here

看起來挺好的。將在周末進行調查。
我不知道前幾天我怎麼錯過這個問題。我只是和一個朋友談論自己創建這個確切的項目。然後我看到你的答案。
zmo
2014-03-19 23:16:07 UTC
view on stackexchange narkive permalink

對於您想要的東西,我沒有直接的解決方案,但是可以的。您可以破解引導加載程序固件,以便它讀取固件閃存代碼並通過ISP上傳。

儘管如果兩個arduino的MCU總共只有32k的總閃存容量,雖然您顯然無法在目標AVR上上傳32k固件,但是您需要使Flasher的閃存容量比目標閃存多。想要這樣做(1284p或2560 Mega就足夠了,或者328 / 32u4可以使168或attiny閃存閃爍)。唯一的例外是固件的閃存方式要小於總內存(例如眨眼的草圖)。

最後,這並不容易,因為它是100%純的AVR代碼,但是您可以做到。看看:

我實現的方式是使所有內容都適合閃存設備,因此它將讀取固件(從0x00到引導加載程序起始地址的所有內容),並通過將AVRISP與Optiboot合併通過ISP進行刷新。可能會建議在我當地的hackerspace! ;-)

HTH

謝謝,AVRISP源代碼看起來並不像我預期的那麼複雜。週末我會對此進行更深入的了解
您當地的黑客空間在哪裡? :)
在法國[Le Loop](http://leloop.org)
沒問題,那就是投票贊成;-)


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...