Programowanie układów - jak zacząć?

W niniejszym artykule „programowanie układów” rozumiemy jako trwałe zapisywanie pamięci lub matrycy połączeń wbudowanych w fizyczną strukturę układu scalonego, a nie tworzenie kodu lub algorytmu działania. We współczesnej elektronice przedmiotowymi układami są przede wszystkim mikrokontrolery zawierające w sobie pamięć Flash oraz samodzielne układy pamięci. Uzupełniają je programowalne struktury logiczne. W artykule wskażemy praktyczne problemy jakie spotkamy chcąc programować je w laboratorium, a przede wszystkim seryjnie na linii produkcyjnej.

Wyjdźmy z najniższego poziomu – mamy układ, mamy kod lub mapę struktury, która chcemy do układu wpisać. Pierwszym pytaniem jest jak to zrobić?

Ponieważ zapis jest realizowany elektrycznie odpowiednią sekwencją sygnałów, musimy znać tę sekwencję, parametry elektryczne i czasowe sygnałów sterujących. Jeśli chcielibyśmy poświęcić czas i sami skonstruować specjalizowany układ programujący, nawet dla jednego konkretnego typu układu, jest wielce prawdopodobne, że napotkamy na pierwszą barierę – brak dostępu do technicznej specyfikacji sposobu programowania. Często bowiem, pełne informacje lub istotne szczegóły nie są publikowane przez producentów półprzewodników. Wspierają oni tylko wybranych producentów programatorów. Rozwiązaniem jest więc dobór programatora produkowanego seryjnie, właściwego dla naszych zastosowań. Ogólne rozważania i kryteria jakie należy wziąć przy tym pod uwagę można znaleźć na naszej stronie informacyjnej programatory.info. Niewątpliwie należy szukać uniwersalnego, programatora renomowanego producenta, co gwarantuje jakość, obsługę dużej ilości różnych układów i dostęp do szerokiej gamy algorytmów. Zdejmuje z nas obowiązek zgłębiania kolejnych algorytmów, a uniwersalność i otwartość konstrukcji zapewnia nam możliwości stosowania w przyszłych projektach dowolnych programowalnych układów czyli możliwość rozwoju.

Następnie należy wybrać metodę programowania. Może to być programowanie w układzie docelowym tzw. ISP lub w gnieździe programatora. Pierwsza metoda w naturalny sposób integruje się z procesem testowania zmontowanej już płyty PCB np. w testerach ostrzowych. Proces programowania realizowany jest wtedy za pośrednictwem szeregowego specjalizowanego interfejsu np. JTAG. ISP z natury szeregowego podawania danych jest jednak dość wolny. Dlatego przy czasochłonnym programowaniu dużych pojemności zalecamy programowanie off-line poza linią produkcyjną. W każdym z powyższych przypadków napotkamy na różne ograniczenia. Przy ISP musimy tak zaprojektować naszą aplikację aby zapewnić dostęp do pinów wykorzystywanych przy programowaniu i zapewnić brak konfliktu przebiegów programujących z innymi sygnałami. W przypadku programatorów gniazdowych mamy co prawda do czynienia z odseparowanym układem ale musimy „dopasować” nasze uniwersalne urządzenie do konkretnej obudowy programowanego układu. W tym celu stosuje się adaptery dopasowujące elektrycznie sygnały programatora i doprowadzające je do odpowiednich pinów, a na adapterach pasujące do obudowy podstawki zaciskowe. Z podstawkami wiążą się dwa niebanalne problemy – właściwe dopasowanie podstawki do najnowocześniejszych obudów o dużej gęstości wyprowadzeń oraz, przy produkcji seryjnej, ich naturalne zużycie skutkujące pogorszeniem jakości kontaktów. W przypadku wielkoseryjnego programowania na automatach, to podstawki decydują o uzysku produkcyjnym i bieżących kosztach. Jakość i technologia wykonania takich podstawek jest więc kluczowa. Dlatego istotnym kryterium wyboru programatora jest szeroka gama i jakość dostępnych adapterów. Przy tym zalecanym przez nas rozwiązaniem jest dwumodułowa konstrukcja adapterów bazująca na złączu pośrednim (ang.: receptacle base). Umożliwia ona wymianę samej zużytej podstawki lub prostego modułu zamiast całego adaptera. Obniża to znacząco koszty eksploatacji. Adaptery programatora to osobny temat. Należy je dobierać pod kątem typu programowanego układu i typu obudowy. W adapterach powinny być stosowane właściwe, najwyższej jakości podstawki zaciskane. To się po prostu opłaca.

Załóżmy, że mamy już programator. Jeśli programujemy lub mamy w pespektywie programowanie najnowszych układów na pewno napotkamy kolejną przeszkodę konieczność dodania nowych układów i nowych algorytmów. Ważne jest więc aby producent dostarczał update’y sukcesywnie i najlepiej gratis. Dla szczególnie wysublimowanych, rzadkich układów powinniśmy mieć możliwość zamówienia takiego algorytmu na życzenie. Muszą też być dostępne w szerokim spectrum adaptery dopasowujące elektromechanicznie nasz programator do obudowy nawet najnowszych układów. Nie bez znaczenia jest też lokalne wsparcie. Wdrożenie nowych układów czasami bowiem sprawia kłopoty. Renoma producenta oraz doświadczenie dystrybutora jest istotną wartością dodaną.