Programowanie wewnątrzsystemowe - In-system programming

6- i 10-pinowe złącza AVR ISP

Programowanie w systemie (ISP) lub zwane także programowaniem szeregowym w obwodzie (ICSP) to możliwość programowania niektórych programowalnych urządzeń logicznych , mikrokontrolerów i innych urządzeń wbudowanych podczas instalacji w kompletnym systemie, zamiast konieczności korzystania z układu do zaprogramowania przed zainstalowaniem w systemie. Umożliwia również dostarczanie aktualizacji oprogramowania układowego do wbudowanej pamięci mikrokontrolerów i powiązanych procesorów bez konieczności stosowania specjalistycznych obwodów programujących na płytce drukowanej i upraszcza prace projektowe.

Nie ma standardu dla protokołów programowania w systemie do programowania urządzeń mikrokontrolerowych . Prawie wszyscy producenci mikrokontrolerów obsługują tę funkcję, ale wszyscy zaimplementowali własne protokoły, które często różnią się nawet dla różnych urządzeń tego samego producenta. Ogólnie rzecz biorąc, nowoczesne protokoły starają się utrzymywać liczbę używanych pinów na niskim poziomie, zwykle do 2 pinów. Niektórym interfejsom ISP udaje się osiągnąć to samo za pomocą tylko jednego pinu, inne używają do 4 do implementacji interfejsu JTAG .

Podstawową zaletą programowania wewnątrzsystemowego jest to, że umożliwia producentom urządzeń elektronicznych zintegrowanie programowania i testowania w jednej fazie produkcyjnej i zaoszczędzenie pieniędzy, zamiast konieczności osobnego etapu programowania przed złożeniem systemu. Może to pozwolić producentom na zaprogramowanie chipów na linii produkcyjnej ich własnego systemu zamiast kupowania wstępnie zaprogramowanych chipów od producenta lub dystrybutora, co umożliwi wprowadzenie zmian w kodzie lub projekcie w trakcie cyklu produkcyjnego. Inną zaletą jest to, że produkcja zawsze może korzystać z najnowszego oprogramowania układowego, a nowe funkcje i poprawki błędów mogą być wdrażane i wprowadzane do produkcji bez opóźnień występujących przy użyciu wstępnie zaprogramowanych mikrokontrolerów.

Mikrokontrolery są zazwyczaj lutowane bezpośrednio do płytki drukowanej i zwykle nie mają obwodów ani miejsca na duży zewnętrzny kabel do programowania do innego komputera.

Zazwyczaj chipy obsługujące ISP mają wewnętrzne obwody do generowania niezbędnego napięcia programistycznego z normalnego napięcia zasilania systemu i komunikują się z programistą za pomocą protokołu szeregowego. Większość programowalnych urządzeń logicznych wykorzystuje wariant protokołu JTAG dla ISP, w celu ułatwienia integracji z automatycznymi procedurami testowymi. Inne urządzenia zwykle korzystają z własnych protokołów lub protokołów zdefiniowanych przez starsze standardy. W systemach na tyle złożonych, że wymagają umiarkowanie dużej logiki klejenia , projektanci mogą wdrożyć podsystem programowania sterowanego przez JTAG dla urządzeń innych niż JTAG, takich jak pamięć flash i mikrokontrolery, umożliwiając wykonanie całej procedury programowania i testowania pod kontrolą jednego protokołu.

Historia

Począwszy od wczesnych lat 90-tych byliśmy świadkami ważnej ewolucji technologicznej w architekturze mikrokontrolerów. Początkowo były realizowane w dwóch możliwych rozwiązaniach: z OTP (One Time Programmable) lub z pamięciami EPROM . W tych technologiach proces wymazywania pamięci wymaga wystawienia chipa na działanie światła ultrafioletowego przez specjalne okienko nad opakowaniem. W 1993 roku firma Microchip Technology wprowadziła na rynek pierwszy mikrokontroler z pamięcią EEPROM : PIC16C84. Pamięci EEPROM mogą być kasowane elektrycznie. Ta funkcja pozwoliła obniżyć koszty realizacji poprzez usunięcie okienka wymazywania nad pakietem i zainicjować technologię In-System Programming. Dzięki ISP proces flashowania może być wykonywany bezpośrednio na płycie po zakończeniu procesu produkcyjnego. Ta ewolucja dała możliwość ujednolicenia fazy programowania i testów funkcjonalnych w środowiskach produkcyjnych oraz rozpoczęcia wstępnej produkcji płyt, nawet jeśli rozwój oprogramowania układowego nie został jeszcze ukończony. W ten sposób można było poprawić błędy lub wprowadzić zmiany w późniejszym czasie. W tym samym roku Atmel opracował pierwszy mikrokontroler z pamięcią Flash, łatwiejszy i szybszy w programowaniu oraz o znacznie dłuższym cyklu życia w porównaniu do pamięci EEPROM.

Mikrokontrolery obsługujące ISP są zwykle wyposażone w styki używane przez urządzenie peryferyjne do komunikacji szeregowej do łączenia się z programatorem, pamięć Flash/EEPROM oraz obwody służące do dostarczania napięcia niezbędnego do zaprogramowania mikrokontrolera. Urządzenie peryferyjne do komunikacji jest z kolei podłączone do urządzenia peryferyjnego do programowania, które zapewnia polecenia do obsługi pamięci Flash lub EEPROM.

Projektując płytki elektroniczne do programowania przez ISP, należy wziąć pod uwagę pewne wytyczne, aby faza programowania była jak najbardziej wiarygodna. Niektóre mikrokontrolery z małą liczbą pinów dzielą linie programowania z liniami I/O. Może to stanowić problem, jeśli niezbędne środki ostrożności nie zostaną wzięte pod uwagę przy projektowaniu tablicy; urządzenie może ulec uszkodzeniu komponentów I/O podczas programowania. Co więcej, ważne jest, aby podłączyć linie ISP do obwodów o wysokiej impedancji, zarówno po to, aby uniknąć uszkodzenia komponentów przez programistę, jak i dlatego, że mikrokontroler często nie może dostarczyć wystarczającej ilości prądu do sterowania linią. Wiele mikrokontrolerów potrzebuje dedykowanej linii RESET, aby wejść w tryb programowania. Należy zwrócić uwagę na prąd dostarczany do zasilania linii oraz sprawdzić obecność watchdogów podłączonych do linii RESET, które mogą generować niepożądany reset i tym samym doprowadzić do niepowodzenia programowania. Co więcej, niektóre mikrokontrolery potrzebują wyższego napięcia, aby wejść w tryb programowania, a co za tym idzie należy sprawdzić, czy ta wartość nie jest tłumiona i czy to napięcie nie jest przekazywane do innych elementów na płytce.

Aplikacja na skalę przemysłową

Proces programowania w systemie odbywa się na końcowym etapie produkcji produktu i może być realizowany na dwa różne sposoby w zależności od wielkości produkcji.

W pierwszej metodzie złącze jest ręcznie podłączane do programatora. Rozwiązanie to przewiduje udział człowieka w procesie programowania, który ma na celu połączenie programatora z płytką elektroniczną za pomocą kabla. Dlatego to rozwiązanie jest przeznaczone do małych wolumenów produkcji.

Druga metoda wykorzystuje punkty testowe na planszy. Są to określone obszary umieszczone na płytce drukowanej lub PCB , które są elektrycznie połączone z niektórymi elementami elektronicznymi na płytce. Punkty testowe służą do wykonywania testów funkcjonalnych komponentów montowanych na płytce, a ponieważ są połączone bezpośrednio z niektórymi pinami mikrokontrolera, są bardzo skuteczne dla ISP. Dla średnich i dużych wolumenów produkcji najlepszym rozwiązaniem jest wykorzystanie punktów testowych, ponieważ pozwala zintegrować fazę programowania z linią montażową.

Na liniach produkcyjnych deski układane są na łożu gwoździ zwanym uchwytem . Te ostatnie są integrowane, na podstawie wielkości produkcji, w półautomatyczne lub automatyczne systemy testowe zwane ATE – Automatic Test Equipment . Oprawy są specjalnie zaprojektowane dla każdej płyty - lub co najwyżej dla kilku modeli podobnych do płyty, dla której zostały zaprojektowane - dlatego są one wymienne w środowisku systemowym, w którym są zintegrowane. System testowy, po umieszczeniu płytki i uchwytu na miejscu, ma mechanizm, który styka igły uchwytu z punktami testowymi na płytce w celu przetestowania. System, do którego jest podłączony lub bezpośrednio zintegrowany z programistą ISP. Ten ma zaprogramować urządzenie lub urządzenia zamontowane na płytce: na przykład mikrokontroler i/lub pamięć szeregową.

Microchip ICSP

W przypadku większości mikrokontrolerów firmy Microchip programowanie ICSP odbywa się za pomocą dwóch pinów, zegara (PGC) i danych (PGD), podczas gdy na pinie Vpp/MCLR występuje wysokie napięcie (12 V). Programowanie niskiego napięcia (5 V lub 3,3 V) rezygnuje z wysokiego napięcia, ale zastrzega wyłączne użycie pinu I/O. Jednak w przypadku nowszych mikrokontrolerów, a konkretnie rodzin mikrokontrolerów PIC18F6XJXX/8XJXX, wejście w tryby ICSP jest nieco inne. Wejście w tryb programowania/weryfikacji ICSP wymaga wykonania następujących trzech kroków:

  1. Napięcie jest na krótko podawane na pin MCLR (master clear).
  2. 32-bitowa sekwencja klawiszy jest prezentowana w PGD.
  3. Napięcie jest ponownie przyłożone do MCLR.
Programator ICSP Microchip PICkit

Do podłączenia do portu I/O komputera PC z jednej strony i do PIC z drugiej strony wymagany jest oddzielny sprzęt zwany programatorem. Lista funkcji dla każdego głównego typu programowania to:

  1. Port równoległy - duży, nieporęczny kabel, większość komputerów ma tylko jeden port i może być niewygodne zamiana kabla do programowania z podłączoną drukarką. Większość laptopów nowszych niż 2010 nie obsługuje tego portu. Programowanie portu równoległego jest bardzo szybkie.
  2. Port szeregowy ( port COM) - Kiedyś najpopularniejsza metoda. Porty szeregowe zwykle nie mają odpowiedniego napięcia zasilania programowania obwodów. Większość komputerów i laptopów nowszych niż 2010 nie obsługuje tego portu.
  3. Gniazdo (w obwodzie lub poza obwodem) — procesor musi zostać usunięty z płytki drukowanej lub zacisk musi być podłączony do układu, co powoduje problem z dostępem.
  4. Kabel USB - Mały i lekki, obsługuje źródło napięcia, a większość komputerów ma dostępne dodatkowe porty. Odległość między programowanym układem a komputerem jest ograniczona długością kabla USB – zwykle musi być mniejsza niż 180 cm. Może to sprawić, że urządzenia programujące głęboko w maszynach lub szafach staną się problemem.

Programiści ICSP mają wiele zalet, a głównymi cechami są rozmiar, dostępność portów komputerowych i źródło zasilania. Ze względu na różnice w schemacie połączeń i obwodzie docelowym otaczającym mikrokontroler, nie ma programatora, który współpracuje ze wszystkimi możliwymi obwodami docelowymi lub połączeniami. Microchip zapewnia szczegółowy przewodnik programowania ICSP. Wiele witryn udostępnia przykłady programowania i obwodów.

PIC są programowane za pomocą pięciu sygnałów (szósty pin „aux” jest dostarczany, ale nie jest używany). Dane są przesyłane za pomocą dwuprzewodowego synchronicznego schematu szeregowego, trzy dodatkowe przewody zapewniają programowanie i moc chipa. Sygnał zegara jest zawsze kontrolowany przez programistę.

Typowa komunikacja programistyczna

Sygnały i pinout

Pic icsp.jpg
Typowe połączenia chipowe
  • V pp - Napięcie trybu programowania. Musi być podłączony do pinu MCLR lub pinu V pp opcjonalnego portu ICSP dostępnego w niektórych PIC o dużej liczbie pinów. Aby przełączyć PIC w tryb programowania, ta linia musi znajdować się w określonym zakresie, który różni się od PIC do PIC. Dla  PIC 5 V, jest to zawsze pewna wartość powyżej V dd i może wynosić nawet 13,5 V. PIC tylko 3,3 V, takie jak serie 18FJ, 24H i 33F używają specjalnego podpisu, aby wejść w tryb programowania, a V pp jest sygnał cyfrowy, który jest albo na ziemi lub Vdd. Nie ma jednego napięcia V pp, które mieści się w obowiązującym zakresie V pp wszystkich PIC. W rzeczywistości minimalny wymagany poziom V pp dla niektórych PIC może uszkodzić inne PIC.
  • V dd - Jest to dodatnie wejście zasilania do PIC. Niektórzy programiści wymagają, aby było to zapewnione przez obwód (obwód musi być przynajmniej częściowo zasilany), niektórzy programiści oczekują, że będą sami sterować tą linią i wymagają wyłączenia obwodu, podczas gdy inni mogą być skonfigurowani w dowolny sposób (jak Microchip ICD2) . Programiści Embed Inc spodziewają się, że sami będą sterować linią V dd i wymagają, aby obwód docelowy był wyłączony podczas programowania.
  • V ss - Ujemna moc wejściowa do PIC i zero woltów odniesienia dla pozostałych sygnałów. Napięcia pozostałych sygnałów są domyślnie związane z V ss .
  • ICSPCLK - Linia zegarowa szeregowego interfejsu danych. Linia ta zmienia się z GND na V dd i jest zawsze sterowana przez programistę. Dane są przesyłane na zboczu opadającym.
  • ICSPDAT — szeregowa linia danych. Interfejs szeregowy jest dwukierunkowy, więc linia ta może być sterowana przez programistę lub PIC w zależności od bieżącej operacji. W obu przypadkach linia ta zmienia się z GND na Vdd. Bit jest przesyłany na opadającym zboczu PGC.
  • AUX/PGM - Nowsze kontrolery PIC używają tego pinu, aby umożliwić programowanie niskonapięciowe (LVP). Trzymając PGM wysoko, mikrokontroler wejdzie w tryb LVP. Mikrokontrolery PIC są dostarczane z włączonym LVP - więc jeśli używasz zupełnie nowego układu, możesz go używać w trybie LVP. Jedynym sposobem zmiany trybu jest użycie programatora wysokiego napięcia. Jeśli zaprogramujesz mikrokontroler bez połączenia z tym pinem, tryb pozostaje niezmieniony.

Wyprowadzenie RJ11

Standard przemysłowy dotyczący używania gniazd RJ11 z programatorem ICSP jest obsługiwany przez Microchip. Ilustracja przedstawia informacje zawarte w ich arkuszach danych. Jest jednak miejsce na zamieszanie. Arkusze danych PIC pokazują odwrócone gniazdo i nie zapewniają poglądowego widoku wyprowadzeń, więc nie jest jasne, po której stronie gniazda znajduje się Pin 1. Przedstawiona tutaj ilustracja nie została przetestowana, ale wykorzystuje standardowe układy połączeń telefonicznych (wtyczka/gniazdo RJ11 zostało pierwotnie opracowane dla przewodowych telefonów stacjonarnych).

Programator RJ11 do ICSP PIC

Bibliografia

Zobacz też