Czy ktoś widział lub wiedział o metodzie wstępnego ładowania (przy użyciu komputera lub innego) oprogramowania układowego jako danych na jednym arduino skonfigurowanym do działania jako isp, a następnie za pomocą tego arduino podłącz interfejs isp do innego i załaduj oprogramowanie układowe.
Żeby było jasne - szukam sposobu, aby umożliwić przesyłanie szkiców arduino bez bezpośredniego połączenia z pełnym komputerem.
Idealne kroki to:
- Napisz nowy szkic / oprogramowanie układowe
- Skompiluj oprogramowanie układowe
- Napisz kopię oprogramowania na Arduino A jako dane (Arduino A jest skonfigurowany do pracy jako ISP)
- Odłącz Arduino A od komputera
- W oddzielnej lokalizacji podłącz Arduino A do Arduino B za pomocą nagłówków ISP
- Za pomocą jakiejś metody (np. Przycisku) uruchom Arduino A, aby załadować wstępnie załadowane oprogramowanie na Arduino B.
Zakładam, że teoretycznie może to działać, ponieważ przesyłanie oprogramowania układowego jest po prostu wymianą bajtów w interfejsie SPI, ale nie jestem pewien co do rzeczywistości.
Rozważam scenariusz, w którym jeśli zainstalowałbym arduino (na stałe) w miejscu oddalonym od mojego komputera (nie mam laptopa ani nie chcę go mieć) przeprogramowanie byłoby kłopotliwe to.
Inną metodą, którą rozważałem, jest użycie ATMEGA w pakiecie DIL, który mogę następnie wyjąć z płyty i zaprogramować na komputerze i wrócić do płyty - jednak wolałbym nie ryzykować zginania pinów i kłopotów z koniecznością usunięcia chip za każdym razem, gdy chcę przeprogramować.
Odpowiedzi:
Myślę, że µProg - mały, szybki, przenośny programator AVR z SD robi to, co chcesz. Możesz przechowywać wiele plików na karcie SD (hex, eep itp.) I wybrać z menu urządzenia, który chcesz zapisać na docelowym MCU bez potrzeby korzystania z komputera.
Najlepsze jest to, że jest dostępny za darmo (PCB, schematy, oprogramowanie układowe itp.).
Lista obsługiwanych chipów
źródło
Nie mam bezpośredniego rozwiązania tego, czego chcesz, ale tak, można to zrobić. Możesz zhakować oprogramowanie rozruchowe, aby odczytało kod flash oprogramowania i przesłało je przez ISP.
Chociaż oczywiście nie możesz załadować 32k oprogramowania układowego do docelowego AVR, jeśli oba arduinos mają tylko 32k całkowitego flasha w swoich MCU, musisz mieć flashowanie więcej flasha niż cel, jeśli chcesz to zrobić (1284p lub 2560 Mega będzie wystarczająco daleko, albo 328 / 32u4 będzie gotowy na flashowanie 168 lub attyki). Jedynym wyjątkiem byłby flashowanie oprogramowania układowego znacznie mniejszego niż całkowita pamięć (jak w przypadku szkicu błyskawicznego).
W końcu nie będzie to łatwe, jest to w 100% czysty kod AVR, ale możesz to zrobić. Spójrz na:
Sposób, w jaki zaimplementowałbym to, aby wszystko dopasować do bootloadera urządzenia flasher, więc odczytuje oprogramowanie układowe (wszystko od 0x00 do adresu początkowego bootloadera) i flashuje je przez ISP poprzez połączenie AVRISP z Optiboot.
W każdym razie, to ciekawy projekt dla warsztatów na temat programów ładujących i AVR, które mogę zasugerować w mojej lokalnej hackerspace! ;-)
HTH
źródło