Pages: 1 ... 28 29 [30] 31 32 ... 36   Go Down
Author Topic: Topic permanente di programmazione newbie  (Read 32784 times)
0 Members and 1 Guest are viewing this topic.
Rovereto
Offline Offline
Full Member
***
Karma: 0
Posts: 152
La luce e' piu' veloce del suono. Per questo motivo alcune persone sembrano brillanti fino a quando non parlano.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...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
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9870
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 335
Posts: 23123
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9870
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12678
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nella descrizione della funzionalità dei LBx indica le tre possibili impostazioni:
Code:
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. smiley
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9870
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Anch'io ho sempre inteso ESATTAMENTE che sia la funzione 2 che la 3 mi bloccassero la programmazione ISP

Certo che la bloccano, però a condizione che non esegui prima un erase, operazione che viene sempre fatta di defualt da tutti i programmatori, se inibisci tale comando non puoi riscrivere la flash.
Detto in altri termini, in realtà negli AVR non è obbligatorio fare un erase prima della programmazione, puoi semplicemente sovrascrivere quello che c'è, però se lo fai ti ritrovi con la flash "sporca" con tutte le conseguenze che questo può portare, p.e. acquisizione di valori assurdi nel caso di puntatori che vanno oltre il limite previsto.
Quando fai la programmazione ISP la prima operazione è un erase, infatti se c'è un bootloader precaricato viene cancellato, quindi non esiste nessun l.b. che ti può proteggere, solo il blocco della modalità ISP e JTAG permette questo livello di protezione, però se lo fai su un micro saldato poi ti puoi scordare di ripristinare la normale operatività visto che sei obbligato ad usare la modalità HV con tutte le relative problematiche.
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12678
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, ormai mi è tutto chiarissimo, sono duro di comprendonio, ma alla fine le prove mi aiutano a capire. Non dimentichiamo che tra me e te c'è la stessa comunicabilità tecnica di chi parla a bassa voce dal terrazzo di un palazzo (tu) e chi cerca di ascoltare ciò che dici in mezzo alla strada (io), se non "scendi a terra" hai voglia di parlare con me smiley-confuse smiley-confuse smiley-confuse Poi succede che tu mi stavi dicendo "spostati che le macchine ti investono", io non sento e quando la macchina mi investe dico "czz, ragazzi, ho scoperto che se restate in mezzo alla strada prima o poi qualcuno vi investe con l'automobile" smiley-mr-green Quindi alla fine arrivo empiricamente dove tu volevi portarmi teoricamente qualche ora prima. Il risultato è quello che conta, no? Ingessature a parte smiley-yell smiley-yell
Quindi alle prove dei fatti, restano valide le mie conclusioni PRAGMATICHE da incorniciare:
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.
Cioè, il problema non è che si può evitare di finire investiti non restando in mezzo alla strada, ma che, se si resta in mezzo alla strada, prima o poi si finisce investiti. Dite la verità, una metafora del genere me la fa guadagnare la mia sedia all'UNI o no? smiley-lol
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9870
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quindi alle prove dei fatti, restano valide le mie conclusioni PRAGMATICHE da incorniciare:
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.
Cioè, il problema non è che si può evitare di finire investiti non restando in mezzo alla strada, ma che, se si resta in mezzo alla strada, prima o poi si finisce investiti. Dite la verità, una metafora del genere me la fa guadagnare la mia sedia all'UNI o no? smiley-lol

Si, però quello è un limite degli AVR e non del tuo lavoro  smiley-grin
Giusto per affondare il forcone nelle terga dei fanboy avr, nei pic questi problemi non esistono, ovvero non è possibile brickarli se sbagli qualcosa in fase di programmazione, non serve una complessa procedura con mille mila pin impegnati per cancellare tutto a fondo, è possibile bloccare la flash sia in lettura che in scrittura in modo indipendente ed è possibile scegliere su varie arie di memoria, cioè non solo per il bootloader o per la flash generale, mi fermo qui altrimenti mi bannano però la lista è lunga  smiley-mr-green
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12678
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se vogliono bannarti dovranno passare sul mio cadavere, sei troppo utile alla "causa". Io sono un fanboy (boy... smiley-confuse) avr ma solo perché ho ripreso l'elettronica (lasciata ai tempi delle logiche non programmabili) partendo da Arduino, i cui meriti per me sono indubbi. Diventa sempre più chiaro, ad ogni tua forconata smiley-eek-blue, che se avessero realizzato l'Arduino con un PIC invece che con un ATMEL, probabilmente oggi avremmo molti meno casini e tanti vantaggi in più, ma ne siamo sicuri? Cioè, dal punto di vista software, compilatori, tool vari, interfacce, il mondo PIC è altrettanto ben fornito? Bada, la mia non è una domanda retorica, è una domanda e basta, non ne so niente del mondo PIC, e tu lo sai bene (a proposito, non scordarti che aspetto una risposta in MP smiley-grin), mi piacerebbe avere le idee più chiare, tutto qui, visto che non riesco a capire perché dei micro così tanto meglio attrezzati, pur essendo stra-diffusissimi, non abbiano attecchito così tanto sul popolo ignorante come invece è capace di fare atmega.
Logged


0
Offline Offline
Faraday Member
**
Karma: 49
Posts: 6017
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ottimissimo,

si e' arrivati ad una chiarezza eccellente, metterei due puntine utili a tutti, specialmente per chi legge velocemente il tutto, su elementi che sono da ricordare sotto l'aspetto anticopia (che e' la vera cosa importante dei LockBit) uscite da questo topic :

1- Attivare il lockbit di massima protezione
2- Non lasciare mai il bootloader a bordo, altrimenti anche con la protezione il cinese fa festa lo stesso
3- l'aspetto protettivo in scrittura, che e' stato il piu' difficile da sviscerare, non interessa per scopi anticopia, perche' nel momento in cui il cinese ha cancellato/scritto in flash si e' fregato con le sue mani  smiley
« Last Edit: April 19, 2012, 02:31:06 pm by Testato » Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Rovereto
Offline Offline
Full Member
***
Karma: 0
Posts: 152
La luce e' piu' veloce del suono. Per questo motivo alcune persone sembrano brillanti fino a quando non parlano.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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. smiley
Ho provato anche io le due combinazioni di lock utilizzando AVR Studio e Dragon in modalità ISP (e con erase disabilitato):
Con FE posso riprogrammare la flash (anche con un altro .hex) e leggerla senza problemi.
Con FC posso riprogrammare la flash ma non posso leggerla/verificarla, più esattamente sembra che la legga ma poi ottengo un file .hex pieno di FF.
In pratica ha ragione Mike, FE ed FC non bloccano la riprogrammazione smiley-razz
Ora bisogna capire cosa intenda Atmel quando dice " Further programming disable".

Ciao
QP
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12678
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

QP, te lo dico di cuore: GRAZIE!

Test, puoi aggiungere che la disabilitazione del fuse SPI, seguita da una qualsiasi delle due modalità LB (FE o FC è indifferente), impediscono in ogni modo lettura e scrittura e, visto che il bootloader non c'è (parliamo sempre di stand-alone), l'unico modo per poter riscrivere è l'HV per dare un chip erase e poi riabilitare il fuse SPI, ma intanto il firmware si cancella e finché non si arriva a questa manovra volontaria, il chip è anche ragionevolmente protetto contro scritture accidentali.

Mi pare che tanta discussione abbia prodotto davvero buoni frutti, ora che siamo tutti sulla stessa lunghezza d'onda smiley-lol
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9870
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma ne siamo sicuri? Cioè, dal punto di vista software, compilatori, tool vari, interfacce, il mondo PIC è altrettanto ben fornito?

Sotto il profilo tool di lavoro il mondo pic è sempre stato molto più fornito di quello avr, però fino a poco tempo fa erano disponibili solo per Windows, dato che Arduino è multipiattaforma, in particolare il MAC visto che nell'ambiente in cui è nato è maggiormente diffuso questo s.o., la scelta è caduta sugli avr perché erano gli unici micro, al tempo della nascita di Arduino, per i quali fosse disponibile un ambiente di lavoro free per tutti e tre i sistemi operativi.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 335
Posts: 23123
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E' da tanto che son tentato.... non foss'altro per l'IDE nativo per Linux... risolverei i miei sbattimenti continui....  smiley-sweat
Logged


0
Offline Offline
Faraday Member
**
Karma: 49
Posts: 6017
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

x mike: il mio ultimo "riassunto" era dichiaratamente diretto alla funzione anticopia, indi come gia' detto in tal senso non interessa proteggere dalla scrittura.

x QT: a me sembra chiarita la questione, infatti con i LB non e' possibile RIPROGRAMMARE, ma solo PRIMA CANCELLARE E POI PROGRAMMARE. In tal senso va letto il datasheet (cosa facile da asserire ora, ma che prima di certo non era chiara, anzi Atmel dovrebbe spiegare meglio la cosa)
Probabilmente, come dicevo, essendo la funzion anticopia la cosa piu' importante, la protezione da scrittura ha solo senso in ambito didattico, non c'e' nessun motivo per implementarla in un progetto commerciale.
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Pages: 1 ... 28 29 [30] 31 32 ... 36   Go Up
Jump to: