Elektroda.pl
Elektroda.pl
X
BotlandBotland
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Rodzaje układów programowalnych, zastosowania, programatory - pytanie laika

05 Maj 2018 18:33 1011 8
  • Poziom 11  
    Cześć wszystkim.
    Ponieważ gubię się w rodzajach układów programowalnych stosowanych w elektronice proszę doświadczonych kolegów i koleżanek o rozjaśnienie. Ostatnio oddałem zepsuty układ elektroniczny do elektronika. Okazało się, że potrzebował on na nowo wgrać program do układu poprzez programator i tutaj zaczęła się dla mnie czarna magia...
    Miałem styczność z mikrokontrolerami ARM i AVR czy to za pośrednictwem arduino czy rasberry pi. Miałem również okazję zaprogramować prosty układ FPGA w Altium Designer. Jednak nie jest dla mnie jasne jakie układy stosowane są w np. telewizorach, czy samochodowych układach i jak je programować. Do czego konkretne typy się stosuje i jak je rozróżnić?
    Wiem, że są gotowe programatory do różnego typu układów scalonych .
    Znalazłem programator VP-998, z opisu wynikało, że nadaje się do programowania RTV oraz układów samochodowych... i już zupełnie zgłupiałem do jakich układów on się nadaje i czym takie różnią się od np programowania mikrokontrolerów, gdzie każda rodzina miała swoje typy programatorów i języki programowania.

    Dodatkowo, skoro np. w programie Altium Designer "graficznie" programowało się układ FPGA, w C/C++ AVRy, to takie układy programatorem uniwersalnym? Jest jakiś język uniwersalny na to?

    nie chciałbym gotowych odpowiedzi jeśli wymagam za dużo, ale jakiegoś naprowadzenia, różnic, artykułów z których mógłbym sobie tą wiedzę poukładać.
  • BotlandBotland
  • Pomocny post
    Poziom 24  
    Zagadnienie jest dość złożone, ale zacznijmy może najpierw od faktu, że AVR-ów nie programuje się w C/C++. W tym języku możesz co najwyżej napisać program, skompilować go i otrzymać plik wynikowy/wsadowy z kodem maszynowym zrozumiałym dla uC. Dopiero wtedy możesz zaprogramować uC i nie ma to znaczenia, czy kod źródłowy został napisany w C/C++, asemblerze czy bascomie. Aktualnie większość mikrokontrolerów posiada wbudowaną pamięć programu w postaci pamięci flash, oraz wbudowaną pamięć EEPROM, które często programuje się przy wykorzystaniu specjalnych narzędzi. Jednak w zamierzchłych czasach pamięć programu wcale nie musiała być w tym samym układzie, a mikrokontroler pobierał rozkazy z zewnętrznej pamięci , do której wgrany był skompilowany program. Programatory uniwersalne służą głownie do programowania pamięci zewnętrznych np. typu (EEP)ROM. Aby taka pamięć można było łatwo wykorzystać w różnych projektach musi ona być w miarę uniwersalna, dlatego sposób jej programowania musi być ściśle określony i nie zależy od producenta, a raczej od typu i interfejsu w jaki jest wyposażona. Do programowania tego tupu kości wykorzystywany jest właśnie programator uniwersalny, który obsługuje zwykle pokaźną liczbę układów, a także może obsługiwać kilka interfejsów.

    Za przykład można by tutaj wziąć poczciwe uC z serii '51, które niekoniecznie były wyposażone w pamięć programu. W takim przypadku należało wgrać plik wsadowy z kodem programu np. do pamięci ROM, którą to podpinało się do uC. Programowanie odbywało się za pomocą programatora odpowiedniego dla zastosowanej pamięci. W dzisiejszych czasach istnieją chińskie klony '51 wyposażone w pamięć programu oraz bootloader, gdzie aby go zaprogramować, trzeba się posłużyć odpowiednią aplikacją, mimo że zawartość pliku wsadowego będzie identyczna.

    Jak widać wiele zależy od tego, co tak naprawdę chcemy zaprogramować i z czym mamy do czynienia. Może być też taka sytuacja, że w pamięci EEPROM przechowywane są istotne informacje, tak jak w przypadku radia samochodowego, w którym będzie zapisany kod blokady.

    Podsumowując, nie ma uniwersalnego sposobu programowania, programatora czy języka programowania. Wspólnym mianownikiem jest wygenerowanie pliku wsadowego, zwykle .hex lub .bin, w którym znajdują się wartości jakimi zostaną zapisane poszczególne komórki pamięci o kolejnych adresach. Myślę, że tak najłatwiej do tego podejść i uzmysłowić sobie, że plik wsadowy jaki generujesz podczas kompilacji, czy to z kodem programu, czy dla pamięci eeprom, zawiera wartości jakie należy zapisać do poszczególnych komórek pamięci.

    Nieco inaczej jest w przypadku rasberry pi, bo to w zasadzie komputer z linuxem na pokładzie, więc sprowadza się to raczej do konfiguracji i uruchamiania usług systemowych.

    Jeszcze inaczej jest w przypadku układów FPGA, gdzie mamy do czynienia z programowalną macierzą bramek. Więc to bardziej przypomina tworzenie układu cyfrowego z bramek, gdzie korzystając ze schematu możemy tak skonfigurować nasz układ, aby pełnił żądane funkcje.

    To tak w znacznym uproszczeniu, jeśli potrzebujesz aby rozwinąć jakieś zagadnienie, to pytaj śmiało.
  • BotlandBotland
  • Poziom 11  
    Dziękuję za odpowiedź!! :)

    Czyli włożyłem programowanie uC i procesorów oraz pamięci zewnętrznych do jednego koszyka. Czy tak?

    Rozumiem fakt, że DSP służą do wyspecjalizowanych rozwiązań, FPGA czy CPLD mają również swoje zastosowania i każdy z typów takich układów ma swoją architekturę, metody programowania, podstawki a nawet języki i środowiska. Tak samo z uC. Każda architektura "rządzi" się swoimi prawami. Ale zmylił mnie fakt, że istnieje coś takiego jak:

    https://www.programatory.com/index.php?p1045,programator-uniwersalny-pamieci-vp-998

    czyli to są jedynie programatory PAMIĘCI tak? jak dokładnie opisałeś mi wyżej. Nie nadają się one do programowania uC czy procesorów jedynie do pamięci. Przez co są tak uniwersalne i znajdują dopasowanie w RTV, elektronice samochodowej i innych.
  • Pomocny post
    Poziom 24  
    Zerknij sobie tutaj, masz listę układów jakie obsługuje programator, o którym wspominasz. W znacznej mierze są to pamięci EEPROM, SPROM albo układy typu DRAM/SRAM. Nie oznacza to, że programatorem służącym do programowania pamięci EEPROM, nie można zaprogramować również uC. Tak chyba było w przypadku ponnyprog (o ile się nie mylę), którym można zaprogramować nie tylko pamięci ale też układy z serii ATmega. W obu przypadkach programowanie odbywa się poprzez SPI.

    Ogólnie można by przyjąć, że uC czy DSP programujemy z wykorzystaniem środowisk do tego przeznaczonych, choć nie jest to jedyna możliwość. Natomiast pamięci z grubsza programujemy za pośrednictwem programatorów uniwersalnych. Choć na dobra sprawę możesz wziąć sobie specyfikacje układu/interfejsu i samemu zrobić programtor w oparciu o jakiś uC.

    Narzędzia typu VP-998, to gotowe rozwiązania, które ułatwiają pracę i posiadają szereg przydatnych funkcji.

    Dodano po 7 [minuty]:

    PS. Sam zacząłem dokładniej przeglądać listę obsługiwanych układów i są tam również uC z serii ATmega programowane przez ISP (SPI). Problemem było by pewnie podpięcie takiego programatora pod środowisko programistyczne, dlatego wygodniejszy jest programator dedykowany, bo wtedy nie ma potrzeby wykorzystywania dodatkowego narzędzia aby każdorazowo zaprogramować mikrokontroler podczas testowania programu.
  • Poziom 11  
    Super ! :)
    dokładnie takich odpowiedzi oczekiwałem. Ostatnie pytanie.
    (Pomijając fakt, że takich napraw się raczej nie wykonuje) Zakładając, że ktoś naprawia pewien sprzęt elektroniczny. natrafia na uszkodzony układ - procesor DSP np w telefonie. Czy zamawiając taki procesor dostajemy go wraz z wgranym programem? Czy w elektronice stosuje się po prostu układy jak Atmega328 uniwersalne do wielu rozwiązań ? Przecież osoba serwisująca nie ma dostępu do programu aby wgrać go na taki układ, musi zakupić gotowy scalak do wlutowania. Dobrze myślę?
    Jedyne co może i do czego ma dostęp osoba trzecia to możliwość zaprogramowania pamięci znajdującej się w na płycie np. w celu wgrania nowego firmware jeżeli nie ma możliwości zrobić tego od strony interfejsu urządzenia.
    Inaczej co według mnie nierealne naprawiając sprzęt elektroniczny trzeba było by znać się na wielu architekturach uProcesorów, posiadać aplikatory i znać języki programowania dla każdego z nich nie wspominając o posiadaniu programu, którego producent nie udostępnia.
  • Poziom 24  
    Zwracasz uwagę na bardzo istotne zagadnienie, ale najpierw zacznijmy od tego, że firmwarem nazywa się równie zawartość wgrywaną do uC. Nieautoryzowany serwis zwykle nie ma dostępu do firmware, a sama wymiana układu bez jego zaprogramowania nic nie da. Ma to swoje dobre strony, bo dzięki temu, że pamięć można zabezpieczyć przed odczytem, to da się w ten sposób chronić swoje patenty i tak się robi. Autoryzowany serwis ma dostęp do firmware i z wykorzystaniem chociażby powyżej przedstawionego programatora może go wgrać do układu.

    Często firmware, np do routerów, są dostępne na stronie producenta, a użytkownik ma do nich dostęp. W takim przypadku router posiada bootloader i jest w stanie "sam sobie wgrać firmware". Podczas takiego programowania uruchamiany jest inny kod niż podczas normalnej pracy urządzenia, co pozwala na przeprogramowanie pamięci programu wykorzystywanej właśnie podczas normalnej pracy.
  • Poziom 11  
    Dziękuję Ci ogromnie za pomoc :)
    Doczytam jeszcze ile zdołam bo zaciekawił mnie ten temat.

    Dodano po 6 [godziny] 33 [minuty]:

    koledzy, a skoro już zacząłem temat

    skąd brać pliki wgrywalne do ww pamięci?
    Jeżeli będę potrzebował wgrać coś na eeprom za pomocą programatora gdzie mogę szukać odpowiednich plików?
  • Poziom 40  
    Zależy do czego.
    Od stron producenta sprzętu po zamknięte fora.
    Czasem z innego takiego sprzętu, a czasem znikąd nie idzie wytrzasnąć wsadu.
  • Poziom 24  
    Tak jak nadmienił @Karaczan, niestety nie do wszystkiego znajdziesz firmware/wsad do eeprom, bo nie każdy producent sobie tego życzy. To właśnie jest sposób, na zabezpieczenie się przed nieautoryzowanym serwisem. W takiej sytuacji producent ma możliwość celowego działania, tak naprawa stała się nie opłacalna, a użytkownik był zmuszony do zakupu nowego sprzętu. Są przypadki, gdzie znajdzie się ktoś sprytny, kto "rozłoży" zabezpieczenia i udostępni rozwiązanie. Tak bywa chociażby w przypadku sprzętu car audio, czy tonerów z licznikiem.