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.

ATmega + zabezpieczenie programu przed skopiowaniem

bestmlody 14 Mar 2010 18:13 5862 22
  • #1 14 Mar 2010 18:13
    bestmlody
    Poziom 14  

    przeczytałem kilka postów, ściągnąłem fajnego pdf'a o zabezpieczaniu i już wiem, że żeby zabezpieczyć mój program przed odczytaniem musze ustawić bity LB1 i LB2 na logiczne 0.
    1. co to znaczy ustawić bity? jak to zrobić? gdzie to zrobić? (pisze w C)
    2. w datasheet'cie od atmegi jest napisane, że blokuje się odczyt i zapis do flash i eeprom. Ja w moim programie, w trakcie działania urządzenia zapisuje kilka wartości na eeprom, czy będzie to nadal możliwe?

    0 22
  • #2 14 Mar 2010 18:18
    tadzik85
    Poziom 38  

    Poczytaj i fusebitach. Ustawia się je na etapie programowania.

    0
  • #3 14 Mar 2010 20:32
    bestmlody
    Poziom 14  

    w moim pdf'ie jest opis 12 fusów, ale nic tam nie ma o zabezpieczeniu pamięci przed odczytaniem. Natomiast jest napisane o "lock bitach", że to nimi blokuje się dostęp. Co mają do tego fuse bity?

    0
  • #4 14 Mar 2010 21:08
    Kabuto15
    Poziom 18  

    Chodzi oczywiście o lock bity (lock - blokada). Swoją drogą skoro programujesz swoje avrki to jak możesz nie wiedzieć jeszcze nic o tych bitach ? Jak programujesz swoje AVRy ?
    Po pierwsze to nie są bity ustawiane z poziomu programu. PonyProg, AvrDude, AvrStudio, Bascom wszystkie pozwalają na ustawienie lock bitów.

    A blokując Flash lub EEPROM blokujesz je jedynie przed zapisem i odczytem z zewnątrz.

    0
  • #5 14 Mar 2010 21:18
    bestmlody
    Poziom 14  

    Lock Bity programuje się w trakcie zapisu? Ja właśnie robie zapis programem avrdude-gui ale nigdy jeszcze nie zaznaczałem tych "czek boksów" bo nie było mi to jeszcze nigdy potrzebne. Czy w tym programie tez można to zrobić? Jeśli tak to jak?

    0
  • #6 14 Mar 2010 21:24
    Kabuto15
    Poziom 18  

    Programowo (z poziomu języka C) tego nie możesz zrobić. Robisz to z poziomu programowania kontrolera (np. Avrdude). I pamiętaj że jak je ustawisz (np. blokując Flash i EEPROM) to już nigdy nie będziesz mógł zaprogramować AVRa (!). Więc ostrożnie z tym.
    Avrdude-gui masz Lock Fuse (albo coś w tym rodzaju w zależności od wersji) - ustawiając je na 1 (checkbox zaznaczony) możesz zablokować AVRa przed odczytem lub zapisem.

    0
  • #7 14 Mar 2010 21:55
    tmf
    Moderator Mikrokontrolery Projektowanie

    Kabuto, oczywiscie to co piszesz nie jest prawda. Chip erase kasuje takze Lock Bity. Takze ponowny zapis ukladu bedzie mozliwy, tylko, ze wczesniej musimy go skasowac.

    0
  • #8 14 Mar 2010 22:01
    bestmlody
    Poziom 14  

    tmf - właśnie czytałem że to nie jest "na stałe". Procka można odzyskać, ale danych nie.
    No mam rzeczywiście coś takiego jak Lock Fuse i dwa "czekboksy".
    Czy dobrze rozumiem, że jak zaznaczę read to zablokuje przed odczytem a jak write to przez zapisem?
    Ale podświetlają mi się, uaktywniają pola do wpisania wartości hex, czy to konieczne czy zostawić zera tak jak avrdude-gui proponuje?

    0
  • #9 14 Mar 2010 23:19
    tmf
    Moderator Mikrokontrolery Projektowanie
  • #10 15 Mar 2010 00:30
    Kabuto15
    Poziom 18  

    tmf napisał:
    Kabuto, oczywiscie to co piszesz nie jest prawda. Chip erase kasuje takze Lock Bity.

    Tak, przepraszam że wprowadziłem w błąd, nie miałem racji.

    0
  • #11 15 Mar 2010 00:55
    mirekk36
    Poziom 42  

    bestmlody --> nie wiem jaki masz procek dokładnie ale jeśli ATmega8 lub ATmega162 lub ATmega128, to zobacz jak wygodnie ustawia się wszystkie możliwe opcji zarówno LockBitów jak i FuseBitów, wraz z opisami tych opcji z programu mkAvrCalculator. Masz w nim m.in. zakładkę LockBity - tam wszystko zobaczysz co ciebie interesuje oraz coważne podejrzysz także wartości HEX LockBajtu oraz Bajtów zawierających FuseBity.

    2
  • #12 16 Mar 2010 16:58
    bestmlody
    Poziom 14  

    a czy ktoś mógłby mi wysłać mkAvrCalculator na maila? nie mogę znaleźć...
    bestmlody(malpa)o2.pl
    Z góry dzięki.

    0
  • #13 16 Mar 2010 17:09
    mirekk36
    Poziom 42  

    bestmlody --> łooo matko, a nie widzisz w podpisie moich postów białego prostąkątnego obrazka z napisem mkAvrCalculator ????? toż wystarczy w niego kliknąć ;) hyhyhy nawet szukać nie trzeba

    0
  • #14 18 Mar 2010 17:20
    bestmlody
    Poziom 14  

    no dobra, ściągnęłem wersje demo i w zakładce "Lock bity" zaznaczam w pierwszym pasku opcje 3, czyli "Mode 3: Further programming and verification disabled". Programuje moją ATmege8 i .... nic. Mogę nadal odczytać ją i zapisać flash do pliku. Co robię nie tak?

    0
  • #15 18 Mar 2010 17:25
    _Robak_
    Poziom 33  

    To teraz zobacz jaki plik zgrałeś z ATmegi;) Wygląda dość dziwnie prawda?;)

    1
  • #16 18 Mar 2010 17:38
    bestmlody
    Poziom 14  

    no nie wiem... nie znam się. To jakiś hex po prostu. Ale czy jest on dziwny? Jak się tego dowiedzieć, jak to sprawdzić?

    Dodano po 6 [minuty]:

    zapisałem go do pliku, później znów ten plik wgrałem do ATmegi i wszystko chodzi...

    0
  • #17 18 Mar 2010 19:42
    mirekk36
    Poziom 42  

    bestmlody --> ta dziwność polega na tym, że po zabezpieczeniu procka lock bitami , procek sprytnie wysyła same bzdury i śmieci zamiast prawdziwego wsadu gdy go odczytujesz ;)

    tak to działa

    0
  • #18 18 Mar 2010 19:50
    bestmlody
    Poziom 14  

    no to nie sa bzdury, bo po wpisaniu tego pliku z powrotem do uC urządzenie działa jak na oryginalnym wsadzie. Coś jest nie tak?
    Czy wystarczy tylko zaznaczyć Mode 3 ?

    0
  • #19 18 Mar 2010 19:59
    mirekk36
    Poziom 42  

    bestmlody napisał:
    no to nie sa bzdury, bo po wpisaniu tego pliku z powrotem do uC urządzenie działa jak na oryginalnym wsadzie. Coś jest nie tak?
    Czy wystarczy tylko zaznaczyć Mode 3 ?


    No i co zaznaczasz Mode3 a potem programujesz procka tym Lock Bitem?????

    Podejrzewam, że nie.

    Wejdź sobie na zakładkę programator, kliknij ptaszka przy operacji zapis ale też kliknij ptaszka przy LOCKBIT a wtedy klawisz wykonaj aby zaprogramować ten ustawiony LockBit do procesora.

    0
  • #20 18 Mar 2010 20:31
    bestmlody
    Poziom 14  

    chyba działa :) bo teraz plik sczytany ma 20kB a oryginał ma 8kB. Po wgraniu tego 20kB są jakieś bzdury na diodach :)

    0
  • #21 16 Gru 2010 14:53
    mgiro
    Poziom 22  

    To jak zabezpieczę program przed skopiowaniem, to później żeby wgrać nowy program, to co muszę zrobić??

    Mogę sobie po prostu wgrać nowy program, czy trzeba na początku zdjąć zabezpieczenie, a później zaprogramować???

    0
  • #22 16 Gru 2010 15:16
    mirekk36
    Poziom 42  

    mgiro napisał:

    czy trzeba na początku zdjąć zabezpieczenie, a później zaprogramować???


    Wgranie nowego programu automatycznie usuwa zabezpieczenia i zeruje Lockbity.

    0
  • #23 01 Paź 2013 21:33
    kszykotron
    Poziom 10  

    Witam.
    Moje pytanie wręcz odwrotne do postu czy jest możliwość skopiowania programu z zablokowanej atmegi 128a.
    Proszę o szybką odpowiedź wiem że temat jest stary ale jest to mi bardzo potrzebne.

    0