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

Microchip PIC24fv32 KA304 - programator i odczyt

boss151 29 Cze 2016 15:13 3438 14
  • #1 29 Cze 2016 15:13
    boss151
    Poziom 12  

    Witam szanownych kolegów. Posiadam PIC'a Microchip PIC24fv32 KA304 i pytanie czym go odczytać i czy może być zabezpieczony, jeśli tak to jak sobie z tym poradzić. Z góry dziękuję.

    0 14
  • Pomocny post
    #2 29 Cze 2016 15:50
    krzysiek_krm
    Poziom 34  

    Witam,
    można odczytać (również zapisać i debugować) za pomocą ICD 3 lub PICKIT 3.
    Ten pierwszy ma znaczne możliwości i jest dosyć drogi, ten drugi jest raczej tani, ale również prostszy.
    Możliwe, że da się również działać z poprzednimi wersjami, czyli ICD 2 i PICKIT 2, ale trzeba byłoby to sprawdzić na stronie producenta.
    Jeżeli jest zabezpieczony, nie ma żadnej możliwości odczytania, po to jest w sumie to zabezpieczenie.

    Pozdrawiam

    0
  • #3 29 Cze 2016 16:14
    boss151
    Poziom 12  

    ...i nie ma żadnej opcji na złamanie tego zabezpieczenia?

    0
  • #4 29 Cze 2016 16:40
    krzysiek_krm
    Poziom 34  

    Jedyną opcją jest czynnik ludzki, czyli sytuacja, w której ktoś zapomniał ustawić tego zabezpieczenia. W procesorach Microchipa jest to zresztą dość trudne, bo programy można kompilować tak, aby zawartość wszystkich rejestrów konfiguracyjnych (czyli między innymi zabezpieczenie przed odczytem) znalazła się w pliku wynikowym, nie trzeba tego ustawiać ręcznie. Jeżeli programista wymyślił sobie zabezpieczenie i wpisał je do wersji źródłowej programu, to żeby je wyłączyć ktoś musiałby celowo pokasować odpowiednie flagi przed zaprogramowaniem procesora, to raczej mało prawdopodobne.
    Te zabezpieczenia są dosyć wymyślne, nie da się na przykład napisać i zaprogramować swojego programu, który mógłby zrobić zrzut pamięci przez, dajmy na to UART.
    Opowieści o łamaniu tych zabezpieczeń to są generalnie bajki.

    Pozdrawiam

    0
  • #5 06 Lip 2016 22:53
    boss151
    Poziom 12  

    Rozumiem, a czy próba odczytu zavezpieczonego Mcu zakończy się jego uszkodzeniem?

    0
  • #6 07 Lip 2016 12:59
    krzysiek_krm
    Poziom 34  

    Witam,
    nic się nie uszkodzi, trzeba jednak zwrócić uwagę na kilka rzeczy.

    Procesory Microchipa komunikują się z programatorem / debuggerem za pomocą następujących sygnałów:
    - masa i zasilanie
    - reset
    - linie komunikacji szeregowej PGC i PGD
    Masa i zasilanie, wiadomo, żaden problem.
    Reset jest używany przez programator do przejęcia procesora za pomocą specyficznej sekwencji sygnałów, w której pojawia się między innymi stosunkowo wysokie napięcie, około 12 V z groszami. Trzeba sprawdzić czy projektant układu nie zastosował jakiegoś specjalizowanego układu reset, niektóre układy tego typu nie są w stanie wytrzymać tak wysokiego napięcia. Jeżeli zastosowano układ reset, który nie wytrzyma napięcia programatora, musi gdzieś w układzie być element służący do jego odłączenia na czas używania programatora (zwora nakładana lub lutowana, szeregowy rezystor, przełącznik, itp.) trzeba ten układ odłączyć od linii reset podczas użycia programatora.
    Należy jeszcze sprawdzić czy nie są do czegoś używane linie komunikacji szeregowej z programatorem, to są normalne porty mikrokontrolera, mające jakieś inne funkcje. Jeżeli tak jest w tym układzie to albo są jakieś zwory do odłączania (trzeba odłączyć) albo projektant zrobił to zgodnie z zaleceniami Microchipa, dotyczącymi używania tych linii (wówczas nic nie trzeba robić) albo linie są użyte do czytania jakichś przełączników, które działają tylko podczas wciśnięcia, nie należy ich wciskać, rzecz jasna. Jakieś dodatkowe obciążenia na tych liniach raczej nic nie uszkodzą, ale prawdopodobnie uniemożliwią komunikację z programatorem.
    Jeszcze drobna uwaga dotycząca zasilania. Jeżeli ten układ jest "mały" to znaczy ma niewielki pobór prądu można go zasilić z programatora, trzeba w programie sterującym ustawić odpowiednią opcję. Jeżeli pobór prądu jest nieco większy, programator raczej go nie zasili, z powodu zbyt małej wydajności prądowej. Trzeba wówczas skasować w programie sterującym opcję zasilania układu z programatora (żeby czegoś nie uszkodzić z powodu lekkich różnic napięć) i zasilić układ jego własnym zasilaniem.
    Ponieważ programator jest zasilany z USB, Microchip zaleca następującą kolejność:
    - podłączyć programator do USB (musi mieć zasilanie)
    - podłączyć programator do układu
    - włączyć zasilanie układu (jeżeli zasilamy z programatora, włączy się samo, gdy będzie trzeba)
    Chodzi o to, aby nie doprowadzić do sytuacji, w której podłączony do zasilonego układu programator sam nie jest zasilony, mogą wówczas (chociaż nie muszą) ulec uszkodzeniu jego wyjściowe bufory / konwertery poziomów logicznych.
    Ostatnia uwaga, pod żadnym pozorem nie wolno "niechcący" użyć funkcji "chip erase", wówczas rzeczywiście zostanie uszkodzony procesor, to znaczy zostanie wykasowana cała zawartość pamięci flash. Nie słyszałem o jakiejkolwiek możliwości odwrócenia tego procesu, jak na przykład przywrócenie zawartości dysku po formatowaniu. Oczywiście nie można również zmieniać zawartości żadnych znaczników konfiguracyjnych procesora, układ zapewne przestanie działać.

    Pozdrawiam

    0
  • #7 07 Lip 2016 17:31
    boss151
    Poziom 12  

    Dziękuję bardzo za pomoc. Istnieją jakieś adaptery w który mógłbym wlutować procka i czytać w bezpieczny sposób?

    0
  • #8 07 Lip 2016 20:00
    krzysiek_krm
    Poziom 34  

    Witam,
    takie adaptery istnieją ale zazwyczaj są drogie jak jasny gwint, na przykład:
    http://www.elnec.com/en/products/programming-adapters/DIL48_TQFP44_ZIF_PIC-2/
    ten jest akurat do produkcyjnego programatora o dużej wydajności.

    Moim zdaniem korzystanie z adaptera nie jest potrzebne. Charakterystyczną cechą tych procesorów (dotyczy to zresztą znakomitej większości tego typu układów) jest możliwość programowania "in circuit" czyli w docelowym układzie. Twój układ na pewno ma taką możliwość, to w sumie najbardziej korzystne i sensowne rozwiązanie. Jeżeli projektant tego układu miał na myśli użycie ICD (3 lub 2) to gdzieś musi być złącze RJ-11, jeżeli PICKIT (3 lub 2) musi być złącze SIP-6. Trzeba tylko sprawdzić czy z jakichś, sobie tylko znanych powodów nie pozamieniał połączeń, jeżeli są takie jak zaleca Microchip można podłączyć ICD lub PICKIT. Jeżeli jest złącze, które akurat nie pasuje do naszego programatora, można kupić przejściówkę RJ-11 na SIP-6 od Microchipa, trochę to bez sensu, bo to tylko kawałek płytki z dwoma gniazdkami, lepiej ewentualne ekstra połączenia zrobić samemu. Jakby co, to tutaj:
    http://ww1.microchip.com/downloads/en/DeviceDoc/50002010B.pdf
    i tutaj:
    http://ww1.microchip.com/downloads/en/DeviceDoc/50002011B.pdf
    są tabelki i rysunki z opisem połączeń, położenie poszczególnych sygnałów "na procesorze" trzeba sprawdzić w jego dokumentacji.
    Po sprawdzeniu tego o czym pisałem poprzednio można bezpiecznie podłączyć programator.

    Pozdrawiam

    1
  • #9 08 Lip 2016 00:07
    boss151
    Poziom 12  

    a jednak jest wyprowadzenie

    0
  • Pomocny post
    #10 08 Lip 2016 01:43
    krzysiek_krm
    Poziom 34  

    VSS trzeba podłączyć ponieważ jest to masa układu, masy procesora i programatora muszą być połączone.
    VDD również musi być podłączone, nawet gdy nie zasilamy procesora z programatora. Te programatory wykonane są jako uniwersalne, do różnych modeli procesorów. Programator ma jakąś swoją wewnętrzną logikę (chyba 3.3 V o ile dobrze pamiętam) natomiast od strony złącza programowania obsługuje procesory, które mogą być zasilone różnymi napięciami (od 1.8 V do 5 V). Napięcie VDD procesora podłącza się do programatora żeby zasilić jego konwertery poziomów logicznych (z wewnętrznej logiki programatora na aktualne poziomy logiczne danego procesora), programator ma nawet funkcję pomiaru aktualnego VDD procesora. Trzeba znaleźć gdzieś VDD (procesora, rzecz jasna, a nie jakiekolwiek, na przykład główne zasilanie całej płytki) i podłączyć do programatora.
    Jeżeli R34 łączy MCLR procesora z jakimś układem sprzętowego resetu należy na wszelki wypadek, dla bezpieczeństwa go wymontować.
    Jeżeli R34 łączy MCLR procesora z VDD procesora, to jest to pull-up linii MCLR, który właściwie nie przeszkadza w pracy programatora. Jednak na zdjęciu widać oznaczenie "5100" czyli 510 Ω. Microchip zaleca pull-up MCLR o wartości około 10 kΩ, więc ten opornik, o znacznie mniejszej rezystancji, może uniemożliwić programatorowi wymuszenie wysokiego napięcia VPGM. W takim przypadku należy go wymontować.
    Jeżeli R34 łączy MCLR procesora z przyciskiem reset, który dołącza MCLR do masy, wówczas nie trzeba go wymontowywać, po prostu nie należy przyciskać guzika reset (programator ma zresztą funkcję resetowania procesora, wywoływaną z programu obsługi).
    Jeżeli PGC i PGD są wyprowadzone na pola lutownicze, to może pozostałe sygnały (VSS, VDD i MCLR) też są wyprowadzone na jakieś pola lutownicze. Czasami tak się robi w masowo produkowanych układach żeby uniknąć kosztu złącza. Wówczas do programowania nakłada się płytkę na szpilkowe złącza sprężynowe, dociska i można programować.

    Moim zdaniem powinno działać.

    Pozdrawiam

    0
  • #11 08 Lip 2016 11:29
    boss151
    Poziom 12  

    Kurcze wszystkie są wybrowadzone oprócz Vdd, nawet do pinów procka nic nie dochodzi :(

    Dodano po 2 [godziny] 21 [minuty]:

    Jednak jest Vdd, no to zamawiam programator i działamy. Wielkie dzięki za pomoc.

    0
  • Pomocny post
    #13 12 Lip 2016 16:38
    krzysiek_krm
    Poziom 34  

    Witam,
    można sprawdzić.

    Jak wynika z komunikatów wczytały się słowa konfiguracyjne. Normalnie jest to kombinacja znaczników, która człowiekowi niewiele mówi i należałoby to porównać z dokumentacją. Na szczęście MPLAB zamienia to na postać zrozumiałą dla człowieka. Trzeba wejść do menu konfiguracji procesora i obejrzeć ustawienia: typ oscylatora, watchdog, sposób resetowania, itp, oraz znaczniki zabezpieczenia procesora przed niepowołanym odczytem. Jak są ustawione to jest zabezpieczony, jeżeli skasowane nie jest.
    Można również obejrzeć co się wczytało z pamięci programu. Nie pamiętam dokładnie, bo zabezpieczony procesor czytałem bardzo dawno temu, ale jeżeli procesor jest zabezpieczony, wszystkie bity będą miały identyczną wartość (chyba same jedynki, ale tego właśnie dokładnie nie pamiętam, może akurat same zera).
    Jeżeli procesor nie był zabezpieczony wczytają się różne słowa, wyglądające na jakiś sensowny program. Można go nawet poddać wstecznej asemblacji.

    Pozdrawiam

    0
  • #14 12 Lip 2016 19:20
    boss151
    Poziom 12  

    A w którym miejsc tego szukać? Jak odczytać ewentualne lock bits i fuse bits? Jeszce raz dziękuję.

    Dodano po 1 [godziny] 29 [minuty]:

    Czy odczytane pliki. hex mogę ładować bezpośrednio do czystego procka?

    0
  • #15 12 Lip 2016 23:55
    krzysiek_krm
    Poziom 34  

    Witam,
    w MPLABX, którego używam jest menu:

    Window -> PIC Memory Views -> Configuration Bits
    Pojawiają się u dołu ekranu wraz z "ludzkim" opisem.

    Jest też Program Memory (zamiast Configuration Bits)
    Pojawia się zawartość pamięci programu wraz z deasemblacją.

    Procesor z fabryki jest czysty, można ładować.
    Procesor "jakiś" można na wszelki wypadek skasować za pomocą "chip erase".

    Pozdrawiam

    0