Go Down

Topic: Topic permanente di programmazione newbie (Read 33 times) previous topic - next topic

QuercusPetraea


...Per farla breve, i due lock bit per la flash agiscono solo su questa esclusa l'eventuale zona del bootloader, i quattro lock bit relativi al bootloader permettono di bloccare lettura e scrittura da parte di questo sia del resto della flash che della zona del bootoader stesso, se non c'è il bootloader ovviamente non serve settare i relativi bit.


Che è poi quello che ho cercato di spiegare sommariamente nel reply #417, ma una prova è meglio 1000 parole.

Ciao
QP

astrobeed


Che è poi quello che ho cercato di spiegare sommariamente nel reply #417, ma una prova è meglio 1000 parole.


Si, infatti avevi spiegato correttamente la cosa.
Ho voluto fare un test pratico relativo ai l.b. del bootloader perché non ho mai avuto bisogno di settarli visto che normalmente utilizzo gli AVR programmandoli direttamente via ISP o Jtag quindi se devo proteggerli contro la copia mi basta settare i due l.b. della flash normale.

leo72

La questione dei bit LBL l'avevo già fatta presente anch'io un paio di giorni fa. Però Mike ha delle esigenze particolari perché come avete letto:

il mio intento esatto è: impedire la lettura e/o la scrittura, ecco perché NON ho raggiunto il 100% del mio scopo: oggi posso impedire la lettura, posso impedire la lettura e la scrittura, ma NON posso impedire la scrittura lasciando libera la lettura.
Questa è da incorniciare :smiley-mr-green:

astrobeed


La questione dei bit LBL l'avevo già fatta presente anch'io un paio di giorni fa. Però Mike ha delle esigenze particolari perché come avete letto:


Per quanto riguarda la flash generica è solo possibile inibire la scrittura, da parte del software, e contemporaneamente la lettura, solo la lettura no, per quanto riguarda il bootloader è possibile impedire la lettura e la scrittura singolarmente, o tutte e due, sia per la sola flash generica che per la sola area del bootloader, ovvero sono possibili tutte le combinazioni.
Una curiosità, nel momento in cui si setta LB2, blocco programmazione della flash, diventa impossibile modificare i lock bit del bootloader pertanto sono da settare prima di attivare LB2 altrimenti tocca fare un erase (non serve che sia HV) del micro per poterli scrivere.

Michele Menniti


Nella descrizione della funzionalità dei LBx indica le tre possibili impostazioni:
Code: [Select]
1) No memory lock features enabled.

2) Further programming of the Flash and EEPROM is disabled in
Parallel and Serial Programming mode. The Fuse bits are
locked in both Serial and Parallel Programming mode.

3) Further programming and verification of the Flash and EEPROM
is disabled in Parallel and Serial Programming mode. The Boot
Lock bits and Fuse bits are locked in both Serial and Parallel
Programming mode.


Da questa descrizione io capisco che si riferisce alla programmazione parallela e seriale (intesa come ISP/SPI), ma (suppongo) possa ancora funzionare tramite bootloader che utilizza l'istruzione SPM (Store Program Memory) per caricare i programmi sulla Application Section della flash.
Se così fosse, bisogna agire sui fuse BLBxx per inibire, secondo le modalità indicate sul datasheet, la scrittura sulla flash memory.
Ciao
QP

Boh, a me pare tanto la storia del "Quo Vadis?" che vi raccontai tempo fa. Io non dubito che tu abbia spiegato bene la cosa, anzi sai bene quanto io mi fidi della tua opinione, però riprendo le tue parole "una prova vale più di mille parole". Anch'io ho sempre inteso ESATTAMENTE che sia la funzione 2 che la 3 mi bloccassero la programmazione ISP (quindi come dice Test, che ringrazio, io non traviso assolutamente nulla), ma NON è così e lo sto dimostrando con i fatti; SOLO la disabilitazione del fuse SPI mi impedisce di scrivere nella flash! Astro ti dà ragione ma poi sostiene il contrario dicendo che l'ISP si può fare sempre e si può bloccare solo tramite FUSE. Leo dice che bisogna bloccare il RESET. Io ho detto chiaramente che voglio insegnare a proteggere un micro stand-alone, quindi devo ignorare la programmazione dei boot LB. Nell'intervento di Astro che leggo in diretta lui sostiene che non si può bloccare la sola lettura, invece io dico di sì, e l'ho scritto 10 volte, ma il mio sì non è teorico (la modalità 3 parla chiaramente di lettura e scrittura bloccati) bensì pratico (in modalità 3 non riesco a leggere ma riesco a scrivere). Ho la sensazione che ci stiamo incasinando, quindi l'unica è la domanda chiusa:
Se voglio mettere tizio in condizioni di poter leggere la memoria flash, ma di non poterla sovrascrivere, cosa devo fare? Io non ci sono riuscito. :)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up