Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] Problem z PIC 16F946 po zaprogramowaniu nie działa.

08 Apr 2021 00:42 588 22
  • Level 11  
    Potrzebuję wykonać kopię PIC aby wprowadzić pewne modyfikacje w układzie a nie chce pracować na oryginale gdyż może ulec uszkodzeniu.
    Odczytałem zawartość z oryginału i wgrałem do nowego PIC-a niestety układ nie działa. Z konfiguracji wynika że program powinien być zabezpieczony, choć dał się odczytać. Po wczytaniu do nowego procesora danych nie można ponownie odczytać. Po zmianie konfiguracji secure - można. Tak czy tak układ nie startuje z nowym procesorem. Po włożeniu oryginału układ pracuje poprawnie, problemem jest błędnie odczytany procesor lub błąd w zapisie. Nie pracuje na tych procesorach będę wdzięczny za pomoc.
    Problem z PIC 16F946 po zaprogramowaniu nie działa.
  • Level 37  
    Jeśli układ nie jest zabezpieczony powinieneś chyba odczytać obecną konfigurację , Nie jestem znawcą pic ale mnie zastanawia jedna rzecz debug enable . Problem może być też w tym jak wykorzystane jest wyprowadzenie reset i jaki jest typ oscylatora . Pic obszary zabezpieczone lub puste czyta jako 3FF pytanie czy tu są puste czy w jakiś sposób zabezpieczone ? I jeszcze jedno czy ten mikrokontroler nie m do kompletu przypadkiem EEproma i czy tam nie brakuje zawartości do uruchomienia programu .
  • Level 39  
    Ze zdjęcia wynika, że jest zabezpieczony więc się nie odczyta.
  • Level 11  
    kamyczek wrote:
    Jeśli układ nie jest zabezpieczony powinieneś chyba odczytać obecną konfigurację , Nie jestem znawcą pic ale mnie zastanawia jedna rzecz debug enable . Problem może być też w tym jak wykorzystane jest wyprowadzenie reset i jaki jest typ oscylatora . Pic obszary zabezpieczone lub puste czyta jako 3FF pytanie czy tu są puste czy w jakiś sposób zabezpieczone ? I jeszcze jedno czy ten mikrokontroler nie m do kompletu przypadkiem EEproma i czy tam nie brakuje zawartości do uruchomienia programu .


    Odczytaną konfiguracje masz na zdjęciu gdzie secure odczytano jako protected i debug enable, program i konfiguracje przepisałem do nowego PIC bez zmian. Efekt był taki że nie można było już odczytać pamięci procesora same zera 00 00. Ponownie wgrany program z zmianą w bloku secure umożliwił ponowny odczyt. ( i to mnie zastanawia czy odczytujący programator prawidłowo zinterpretował konfigurację) Rzeczywiście miejsca puste są zapisywane jako FF 3F można to sprawdzić czytając pustego pic.
    Problem zapewne jest w konfiguracji ale zakładam że odczytałem ją prawidłowo. Układ nie posiada zewnętrznego eeprom pic ma swój wewnętrzny.
  • Level 37  
    Zastanawiam się czy nie odczytałeś jakiś śmieci przypadkiem . Poza tym w większości układów pracujących w urządzeniach wyłącza się debugowanie i zabezpiecza program przed odczytem . Jakoś mi się nie wydaje że to co czytasz jest ok , może masz uszkodzony mikrokontroler i czytasz po prostu jakieś śmieci . Poza tym może być problem z byte swap , ale jak czytasz i programujesz jednym programatorem problemu być nie powinno.
  • Level 11  
    kamyczek wrote:
    Zastanawiam się czy nie odczytałeś jakiś śmieci przypadkiem . Poza tym w większości układów pracujących w urządzeniach wyłącza się debugowanie i zabezpiecza program przed odczytem . Jakoś mi się nie wydaje że to co czytasz jest ok , może masz uszkodzony mikrokontroler i czytasz po prostu jakieś śmieci . Poza tym może być problem z byte swap , ale jak czytasz i programujesz jednym programatorem problemu być nie powinno.


    Procesor jest sprawny w układzie pracuje, odczytywałem go wielokrotnie zawsze to samo. Z reguły z zabezpieczonego mikrokontrolera odczytujemy same zera. Myślałem o swap byte ale tak jak powiedziałeś ten sam programator poza tym w oknie konfiguracji ID mamy dane przy swap były by tam 00
    Przy zmianie konfiguracji w buforze zostają zamienione komórki w lini 4000h na zdjęciach porównanie do oryginału w przypadku "program memory in not protected i debug mode off" Problem z PIC 16F946 po zaprogramowaniu nie działa. Problem z PIC 16F946 po zaprogramowaniu nie działa.
    Będę miał dziś jeszcze jeden identyczny układ odczytamy i zobaczymy.
  • Level 25  
    Z Twojego odczytu nic nie wynika. Układ jest zabezpieczony przed odczytem i nic nie zrobisz. Wszystkie komercyjne urządzenia są zabezpieczane w ten sposób przed piraceniem.
  • Level 11  
    Krzys55 wrote:
    Z Twojego odczytu nic nie wynika. Układ jest zabezpieczony przed odczytem i nic nie zrobisz. Wszystkie komercyjne urządzenia są zabezpieczane w ten sposób przed piraceniem.


    A czy nie uważasz ze zabezpieczony pic przy odczycie daje same zera ? A tu są jakieś dane i nie wyglądają na losowe są nawet poukładane we właściwych obszarach mikrokontrolera.
  • Level 25  
    Prawidłowy wsad tak nie wygląda, we wszystkich komórkach masz to samo. Poza tym jak chcesz zmodyfikować program nie mając kodu źródłowego?
  • Level 39  
    Krzys55 wrote:
    Prawidłowy wsad tak nie wygląda, we wszystkich komórkach masz to samo.

    Na zrzutach ekranu są adresy z okolic słowa konfiguracji, możliwe że tam już nie ma kodu, co nie zmienia faktu, że zabezpieczonego układu nie da się odczytać.
    Krzys55 wrote:
    Poza tym jak chcesz zmodyfikować program nie mając kodu źródłowego?

    Autor nie chce zmieniać programu ale (chyba) hardware
    tomixxl wrote:
    wprowadzić pewne modyfikacje w układzie a nie chce pracować na oryginale gdyż może ulec uszkodzeniu

    A może w ogóle lepiej napisać własny prosty program testowy i zaprogramować nim ten "nowy", czysty µC ?
  • Level 11  
    Krzys55 wrote:
    Prawidłowy wsad tak nie wygląda, we wszystkich komórkach masz to samo. Poza tym jak chcesz zmodyfikować program nie mając kodu źródłowego?


    Wsad wsadowi nie równy to że gdzieś jest ff 00 nie oznacza że to błąd, jeszcze raz, zabezpieczony pic zwraca 00 00 przy odczycie.
    Tak jak wspomniałem na początku w tym wypadku modyfikuję hardware i kopiuje proca z racji bezpieczeństwa gdyż kodu źródłowego nie posiadam. A jeśli już pytasz to modyfikacja na tym poziomie jest możliwa w dość okrojonym zakresie ale to inna historia.
    Poniżej odczyt tego samego procesora z ustawionym memory is protected tak właśnie wygląda zabezpieczony pic
  • Level 11  
    krzysiek_krm wrote:
    Krzys55 wrote:
    Prawidłowy wsad tak nie wygląda, we wszystkich komórkach masz to samo.

    Na zrzutach ekranu są adresy z okolic słowa konfiguracji, możliwe że tam już nie ma kodu, co nie zmienia faktu, że zabezpieczonego układu nie da się odczytać.
    Też się zdziwiłem, odczytując pic odczytując dane (plik jest u samej góry postu) gdzie w konfiguracji był aktywny protected zapisany tym wsadem nowy mikrokontroler nie daje się już odczytywać chyba ze zmienimy config.

    Krzys55 wrote:
    Poza tym jak chcesz zmodyfikować program nie mając kodu źródłowego?

    Autor nie chce zmieniać programu ale (chyba) hardware
    Dokładnie

    tomixxl wrote:
    wprowadzić pewne modyfikacje w układzie a nie chce pracować na oryginale gdyż może ulec uszkodzeniu

    A może w ogóle lepiej napisać własny prosty program testowy i zaprogramować nim ten "nowy", czysty µC ?

    To jeden z wielu modułów w całym systemie trzeba by budować wszystkie zależności od nowa być może jest to możliwe ale całkowicie nieopłacalne.
  • Level 25  
    tomixxl wrote:
    Wsad wsadowi nie równy to że gdzieś jest ff 00 nie oznacza że to błąd, jeszcze raz, zabezpieczony pic zwraca 00 00 przy odczycie.
    tomixxl wrote:
    Wsad wsadowi nie równy to że gdzieś jest ff 00 nie oznacza że to błąd, jeszcze raz, zabezpieczony pic zwraca 00 00 przy odczycie.
    Nie powiedziałem, że to błąd, tylko że w każdej komórce masz to samo co niejest chyba ok?
  • Level 11  
    Krzys55 wrote:
    tomixxl wrote:
    Wsad wsadowi nie równy to że gdzieś jest ff 00 nie oznacza że to błąd, jeszcze raz, zabezpieczony pic zwraca 00 00 przy odczycie.
    tomixxl wrote:
    Wsad wsadowi nie równy to że gdzieś jest ff 00 nie oznacza że to błąd, jeszcze raz, zabezpieczony pic zwraca 00 00 przy odczycie.
    Nie powiedziałem, że to błąd, tylko że w każdej komórce masz to samo co niejest chyba ok?


    Chyba nie mówimy o tym samym pliku
  • Level 39  
    To może wczytaj plik do MPLAB'a i obejrzyj (może też opublikuj) deasemblację.
  • Level 34  
    Już napisali to inni, więc powtórzę i ja: nie odczytasz zabezpieczonego programu.
    Powinieneś zacząć przygodę od:
    -napisania swojego imienia w pliku
    -zapisania tego do PIC, zaznaczając Protect
    -próby odczytu tak zabezpieczonego wsadu
    To da Ci pewność na zawsze, że Protect jednak do czegoś służy.
  • Level 39  
    Przychodzi mi do głowy, że może ten procesor faktycznie nie jest zabezpieczony, autor twierdzi, że coś tam sensownego się odczytuje. Możliwe, że ktoś, kto go programował pomylił się i niechcący ustawił tryb "debug", w tym trybie to pamięć programu raczej nie może być zabezpieczona, może ten tryb wyłącza blokadę pamięci, niezależnie od ustawienia słowa konfiguracyjnego.
  • Level 34  
    Z pierwszego posta wynika, że:
    -pamięć programu jest chroniona (program memory is protected), czyli nie można odczytać, a nie tylko nie można modyfikować.
    a:
    -pamięć danych nie jest chroniona (data memory is not protected) można odczytać i można modyfikować

    Co to konkretnie oznacza; program jest nieczytelny, więc nawet odczytując dane - nie wiadomo, co modyfikować w tych danych, poza tym program procesora może zapisywać sumę kontrolną pamięci danych, więc modyfikacja może spowodować brak działania programu.

    Praktyka pokazuje, że nikomu nie udało się skopiować programu z żadnego urządzenia wyposażonego w takie procesory, czasem uparciuch robił własny program, funkcjonalnie odpowiadający temu z procesora oryginalnego.

    Prosty przykład z brzegu: procesory z kitów do samodzielnego montażu są nie do skopiowania, sterownik pieca czy bramy - również.
  • Level 39  
    Pisząc
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=19370459#19370459
    miałem na myśli coś innego.
    pikarel wrote:
    Z pierwszego posta wynika, że:
    -pamięć programu jest chroniona (program memory is protected), czyli nie można odczytać, a nie tylko nie można modyfikować.
    a:
    -pamięć danych nie jest chroniona (data memory is not protected) można odczytać i można modyfikować

    Wynika również, że układ jest w trybie debug. Jak wyobrażasz sobie działanie debuggera na chronionej pamięci ?
    Nie wiem na pewno, bo aż tak wielkim znawcą tych układów nie jestem, ale możliwe że sterowanie tego procesora wyłącza wszelką ochronę pamięci w trybie debug, bo inaczej debugowanie nie byłoby po prostu możliwe. Inna sprawa, że środowisko powinno w takiej sytuacji sypać ostrzeżeniami typu "niewłaściwa konfiguracja".
  • Level 37  
    To lekko nie na temat ale w rezultacie chciałem odpalić w debugerze plik kolegi żeby zobaczyć ,ale to ide jest tak intuicyjne że się poczułem jak ryba na środku pustyni ....
  • Level 11  
    Problemem był programator jak się okazuje VP990 nie odczytywał eeprom oraz błędnie identyfikował config. Stąd informacja o włączonym zabezpieczeniu pomimo wykonanego odczytu.
    PICKIT4 poradził sobie bez problemu.
    Dzięki za zainteresowanie tematem.