Dlaczego potrzebujemy programistów sprzętu?


22

Używam Boarduino i 30-rzędowej deski chlebowej do programowania ATtiny. Ładuję niezbyt skomplikowany szkic o nazwie ArduinoISP (domyślnie dołączony teraz do Arduino IDE) i nagle mam działającego programistę. Atmel sprzedaje fajnego programistę za 30 do 40 USD, a istnieje wiele zestawów do robienia tańszych.

Byłem bardzo szczęśliwy, kiedy dostałem działającego programistę i zmusiłem malutkiego mrugnięcia do kilku diod LED. Jednak teraz moje biedne boarduino utknęło na służbie programisty.

O ile wiem, ten programista przytrzymuje przycisk resetowania, a następnie przesyła i odbiera na pinach MOSI i MISO. Myślę, że SCK jest nieużywany lub przynajmniej niepotrzebny. (SCK jest potrzebne zgodnie z arkuszem danych ATtiny, mój programista nie działa bez niego i nie mogę znaleźć miejsca, o którym myślałem, że przeczytałem, że nie jest potrzebne).

Dlaczego potrzebuję programisty sprzętowego, aby po prostu transmitować serial? To znaczy, załóżmy, że jestem skłonny przytrzymać przycisk resetowania palcem zamiast używać IC. Pozostało mi tylko szeregowe wysyłanie i odbieranie, więc potrzebuję tylko trzech przewodów GND, RXD i TXD. Cholera, jeśli mam linię „DTR” lub cokolwiek, możesz nawet przytrzymać przycisk resetowania za pomocą kabla szeregowego.

Dlaczego istnieją wszystkie te rozwiązania sprzętowe, które wymagają także wyszukanego oprogramowania (takiego jak AVRdude, studio AVR itp.)?

Mam na myśli, że mogłem zrozumieć mały kabel USB, który przedstawiał mikrokontroler jako urządzenie pamięci masowej i pozwalał ci przeciągać pliki binarne do programowania (jak ta płyta programistów ARM ). Tylko sprzęt, przy użyciu standardowych sterowników oprogramowania.

Mogłem również zrozumieć rozwiązanie tylko programowe (modulo podpinające przewody z USB do układu, używając czegoś takiego jak układ FTDI, aby uprościć to, co idzie wzdłuż przewodów). Cały fantazyjny protokół programowania byłby obsługiwany przez oprogramowanie na komputerze, a sprzętem byłyby tylko niektóre przewody.

Dlaczego w grę wchodzą zarówno (skomplikowane) oprogramowanie, jak i sprzęt? O ile mi wiadomo, programowanie mikrokontrolerów jest dość łatwe, ale kiedy tylko się w to wdawałem, naprawdę martwiłem się, jak kiedykolwiek kupię układ scalony od mousera lub digikey bez płacenia guru za program bootloadera dla mnie.

Jestem pewien, że jest dobry powód (nie napisałem oprogramowania ani nie zacząłem produkować programatora USB typu przeciągnij i upuść), ale jako nowicjusz nie mam pojęcia, co to jest.


Czy twój programista sprzętu domowego pozwala na debugowanie? Być może sam programujesz dobrze, ale potrzebujesz programisty sprzętowego, jeśli chcesz przeprowadzić debugowanie na chipie (ustawienie punktów przerwania w kodzie i zatrzymanie wykonywania po osiągnięciu tego punktu), ponieważ ta operacja może zrobić śmieszne rzeczy z linią resetowania.
Joel B,

1
Coś, co może Cię rozbawić, hackaday.com/2013/05/10/…
binarysmacker

Odpowiedzi:


18

Masz rację, programowanie AVR jest dość łatwe. To tylko niestandardowy protokół zaimplementowany na szczycie SPI, działający przy niskim napięciu. Potrzebny jest SCK.

Jednak programowanie starszych PIC (i innych niż programowanie AVR przez ISP) wymaga wysokich napięć i innego niestandardowego protokołu. Wymaga to specjalnego programatora sprzętowego.

Inne urządzenia są bardziej złożone. Większość mikrokontrolerów ARM musi być programowana przez JTAG, tutaj pamięć jest zapisywana bezpośrednio, a procesor otrzymuje polecenie zapisu do pamięci flash. Ponownie każde urządzenie jest inne.


Wszelkie pomysły, dlaczego są one o wiele bardziej złożone? Sposób AVR (niskie napięcie, standardowy protokół) wydaje się o wiele bardziej sensowny niż wymaganie niestandardowego programisty (takiego jak ten facet z potrzebą programisty 8051/8052 - potrzebna pomoc, dostępna rep! Electronics.stackexchange.com/questions/4104 )
Kevin Vermeer

2
Naprawdę nie ma nic specjalnego ani kosztownego w programistach PIC; wiele projektów jest dostępnych online, a większość nowych PIC można zaprogramować na niskie napięcie.
akohlsmith

4
Producenci układów scalonych tak naprawdę nie dbają o to, jak skomplikowane jest zastosowanie dla hobbystów. Tak długo, jak można go stosować w produkcji wielkoseryjnej, w przeciwnym razie chodzi o koszty.
endolith

2
Najpierw pojawiło się programowanie wysokonapięciowe, był to sposób programowania EPROM-u kasowalnego UV w latach osiemdziesiątych (i mikrokontrolerów zawierających takie EPROMy).
starblue

Naprawiono roszczenie SCK. Podoba mi się pomysł, że potrzebny jest tylko SPI, ale ponieważ komputery nie mają portu SPI (i do diabła, kabel FTDI ma już układ za 4 USD !!) równie dobrze możemy zaszaleć na mikrokontrolerze za 2 USD. Argument wysyłania i debugowania JTAG sprzedał mi ogólnie korzyści płynące z płyty programistycznej i myślę, że endolith ma rację, że nikt nie dba o to, na co wydaje moje 20 USD; producentom zależy na tym, na co prawdziwi inżynierowie (i ich pracodawcy) przeznaczą swój budżet.
Jack Schmidt

5

Przeprowadziłem wiele badań i przygotowuję się do gry z AVR-ami, ale tak naprawdę nigdy ich nie użyłem, więc może to być źle, ale:

Większość tanich programistów nie obsługuje programowania wysokiego napięcia AVR. Jest to potrzebne, jeśli kontroler jest ustawiony tak, aby nie był programowalny przy użyciu bitów bezpieczników lub jeśli w jakiś sposób popełniłeś poważne błędy i musisz przywrócić ustawienia domyślne i tak dalej.


2
Programatory niskiego napięcia, takie jak AVRISP mkII [1] lub USBtinyISP [2], mogą być używane do ustawiania bezpieczników w programach avrdude lub innych programistach, ale nie mogą zapisać układu AVR, który został wyłączony z rozruchu lub zmieniono linię resetowania w GPIO. Do tego potrzebujesz programatora wysokiego napięcia. [1] mouser.com/search/… [2] ladyada.net/make/usbtinyisp
blalor 30.09.10

@blalor W świetle tych informacji zmienię moją odpowiedź.
AndrejaKo

Widziałem kilka instrukcji na temat tworzenia programatora wysokiego napięcia (a karta katalogowa układu wydaje się zawierać dość szczegółowe instrukcje na temat projektowania jednego), ale czekam, aż skończę jeden z moich układów, aż spróbuję. Moje oscylatory przybędą tu jutro, więc wkrótce podpalę bezpieczniki i kuszę ceglaną wróżkę!
Jack Schmidt

Warto zauważyć, że avrdude dwukrotnie sprawdza bity bezpiecznika, aby zapobiec temu problemowi. Nieco bardziej powszechnym problemem jest ustawienie układu na zegar zewnętrzny.
Yann Vernier

4

Większość tanich programistów AVR to tylko synchronizacja interfejsów szeregowych z linią zerowania. Możesz FT232 do bitbang out Serial Peripheral Interface (SPI). FT232 jest przeznaczony do synchronizacji szeregowej asynchronicznej, więc wszystko odbywa się w oprogramowaniu.

Możesz po prostu załadować bootloader, taki jak arduino, który pozwoli ci na przesłanie kodu przez asynchroniczny interfejs szeregowy za pomocą ft232 w trybie normalnym lub dowolny asynchroniczny interfejs szeregowy za pomocą konwerterów poziomu w razie potrzeby. Po prostu nie zapomnij użyć odpowiedniego programu ładującego dla twojej częstotliwości zegara i poprawnie ustawić bajty bezpiecznika.


1

Wiele programowalnych urządzeń historycznie wymagało, aby były programowane przy użyciu stosunkowo dokładnie taktowanych sekwencji sygnałów. W wielu przypadkach, gdyby ktoś chciał zaprogramować tylko jeden konkretny typ urządzenia, wymagany sprzęt byłby dość prosty, ale ponieważ różne urządzenia miały różne wymagania, zbudowanie bardziej ogólnego programatora było nieco trudniejsze.

Dzisiaj prawdopodobnie można by zaprogramować ponad 50% programowalnych urządzeń, używając jedynie kabla I / O USB i oprogramowania komputerowego, ale programiści „sprzętowi” nadal mają znaczną przewagę szybkości. Aby komputer zareagował na sygnał odebrany przez urządzenie USB i wysłał odpowiedź, zwykle trwa co najmniej 1-2 milisekundy. Jeśli sekwencja programowania wymaga wielokrotnego zapytania urządzenia, gdy jest ono gotowe do następnego kawałka danych, a następnie wysyłania go, użycie zwykłego kabla we / wy wydłużyłoby dodatkową milisekundę lub dwie do czasu potrzebnego do obsłużenia każdego fragmentu. W zależności od charakteru danego urządzenia, może to wydłużyć całkowity czas wymagany do programowania o rząd wielkości w porównaniu z programatorem, o którym można powiedzieć, czekając, aż urządzenie będzie gotowe, co powinien zrobić, gdy będzie.

Osobiście podoba mi się podejście polegające na tym, że urządzenia wyposażone w pamięć flash są dostarczane fabrycznie z modułem ładującym w pamięci, którego można używać przy minimalnym sprzęcie do programowania. Jeśli urządzenie obsługuje programowanie flashowe pod kontrolą oprogramowania, takie podejście może uprościć produkcję bez dodawania niczego do kosztu krzemu poza bardzo małym marginalnym czasem wymaganym do zainstalowania fabrycznego programu testów urządzenia w module ładującym po wykonaniu wszystkich innych czynności .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.