Pages: 1 ... 14 15 [16] 17 18 ... 36   Go Down
Author Topic: Topic permanente di programmazione newbie  (Read 22118 times)
0 Members and 1 Guest are viewing this topic.
Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 411
Posts: 11986
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Specifico un paio di cose, approfondendo il discorso cancellazione del micro e protezione.

EEPROM
il bit EESAVE, che protegge la EEPROM funziona solo durante la cancellazione del contenuto del chip ("chip erase") effettuato con la tecnica che sta usando Michele. Puoi sempre forzare da terminale la cancellazione della EEPROM usando l'opzione "-e" di avrdude.
lasciando perdere il terminale, è sufficiente cambiare lo stato del bit prima di fare l'operazione di chip_erase, cosa che si fa tranquillamente con l'opzione 2 del mio menu (inserimento fuse personali)

Quote
LOCK BIT
il lock bit si possono modificare senza alterare il contenuto della Flash ma solo in una direzione, ossia si può solo aumentare il fattore di protezione ma non diminuirlo. Quindi se i lock bit sono impostati per permettere la sola lettura ma non la riscrittura (protezione media), è possibile impedire anche la lettura (protezione massima) ma non è possibile disattivare la protezione in scrittura (protezione assente).
grazie per l'approfondimento, il succo quindi resta quello che ho detto, cioè una volta impostato il lock bit per proteggere la flash, l'unico modo per rimbuovere la protezione è fare un chip_erase che rimuove sì la protezione ma contestualmente cancella il contenuto rendendo efficace la protezione.

Invece questa cosa mi ha fatto riflettere sul fatto che mentre l'EESAVE è programmabile via fuse, lo stesso non si può dire del lock bit, mi pare; se è così forse dovrei prevedere l'opzione di variazione del lock bit con una voce tipo "proteggi micro", dite che vale la pena? mannaggia, ste cose sono come le ciliegie, una tira l'altra! smiley-sweat
Logged

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

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

grazie per l'approfondimento, il succo quindi resta quello che ho detto, cioè una volta impostato il lock bit per proteggere la flash, l'unico modo per rimbuovere la protezione è fare un chip_erase che rimuove sì la protezione ma contestualmente cancella il contenuto rendendo efficace la protezione.

Invece questa cosa mi ha fatto riflettere sul fatto che mentre l'EESAVE è programmabile via fuse, lo stesso non si può dire del lock bit, mi pare; se è così forse dovrei prevedere l'opzione di variazione del lock bit con una voce tipo "proteggi micro", dite che vale la pena? mannaggia, ste cose sono come le ciliegie, una tira l'altra! smiley-sweat
Come ho detto, puoi modificare i lock bit solo in un verso, ossia per aumentare il livello di protezione.
Potresti prevedere l'opzione, potrebbe essere carina, ma prima io ti consiglio di terminare la parte che hai ancora in fase di sviluppo, per non mettere troppa carne al fuoco.
Logged


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

Se risolvo rapidamente la questione dell'ERASE provo a dargli un'occhiata, altrimenti abbandono proprio l'idea, una volta che chiudo devo scrivere l'articolo e non posso più fare variazioni, tratto il sw come se fosse hw, altrimenti rischio di fare casini; semmai, con tutto il tempo si potrà pensare di proporre una versione 2 con altre implementazioni, vedremo....
Logged

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

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

AGGIORNAMENTI
Al solito buone e cattive notizie, purtroppo la ricerca vuole i suoi morti, ma sono davvero sconvolto smiley-cry smiley-eek-blue

Nelle varie prove, ma non so come e perché, sono riuscito a cancellare la signature di un 2313 smiley-sad-blue
In pratica vedo e riesco a programmare i fuse e perfino a cancellare (ovviamente ha funzionato solo una volta) il micro ma la signature è FFFFFF; se cerco di inserire uno sketch tramite ISP naturalmente mi dà errore di signature.
La prima volta che ho programmato questo 2313 un'anomalia sul programmatore ISP l'avevo notata, una delle tre spie collegate ai segnali MISO, MOSI, SCK era debolmente accesa ed in effetti ho dovuto tentare un paio di volte prima di riuscire a inviare il blink ma poi è andato correttamente; solo che a quel punto l'HV ha iniziato a darmi errore di signature; l'ho bypassato via firmware, eludendo i controlli e ho riscontrato questa lettura FFFFFF, ciò nonostante, ripeto, riesco ancora a programmare i fuse. Secondo Voi è possibile cancellare la signature?

La buona notizia è che sono riuscito a completare finalmente il firmware, ora il chip_erase funziona correttamente anche in modalità HVSP e nell'unica prova fatta, ho visto che va anche in HVP13, quindi vorrei tentare di aggiungere il lock bit, mi sembra abbastanza semplice.

Ma prima devo capire che cavolo è successo, solo che ora mi trovo un 4313 e vorrei provare un piccolo imbroglio sul core tiny, mi basta cambiare la signature al 2313 e raddoppiargli la ram. Dove la trovo la signature? è nei file del core tiny o devo mettere mano ad AVRDUDE.CONF?

EDIT: ho provato a cambiare in AVRDUDE.CONF la signature (tecnica adottata con successo per il 328 noP) in FF FF FF ma niente da fare. Il messaggio " use -F to override this check." significa che posso bypassare il controllo, ma come devo usarlo questo parametro, forse si riferisce alla riga di comando?
« Last Edit: March 14, 2012, 04:54:28 pm by menniti » Logged

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

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

Secondo Voi è possibile cancellare la signature?

Non credo sia possibile farlo in nessuno modo normale, però non so se negli AVR questa informazione è scritta sotto forma di celle ROM, quindi non alterabili in nessun modo, oppure in una zona protetta della flash e pertanto potrebbe essere possibile alterare la signature con un qualche procedimento.
Per avere la certezza che hai cancellato la signature prova a leggerlo con l'AVR Dragon, se con questo ti risulta sempre 0xFFFFFF vuol dire che l'hai cancellata sul serio.
Al limite se non hai ne tempo ne modo di fare questo test spediscimi il micro con la prioritaria e te lo analizzo io.



Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, è possibile che per qualche ragione (falsi contatti o altra roba simile), durante la programmazione icsp venga cancellata la signature, ma questo non dovrebbe impedirti di riscriverla con la programmazione HV.
Guarda qui, anche il video http://translate.google.it/translate?hl=it&sl=pl&u=http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/&ei=koRhT8PIOYSgOvLNiP0H&sa=X&oi=translate&ct=result&resnum=1&ved=0CCkQ7gEwAA&prev=/search%3Fq%3Dattiny%2Bwriting%2Bsignature%2Bffffff%26hl%3Dit%26client%3Dfirefox-a%26hs%3D7SP%26rls%3Dorg.mozilla:it:official%26biw%3D1024%26bih%3D412%26prmd%3Dimvns
Penso che sia già presente il supporto per i 4313 nel core tiny , ricordo una vecchia discussione sul forum internazionale...
eccola:
http://arduino.cc/forum/index.php/topic,51984.60.html
spero che aiuti smiley
« Last Edit: March 15, 2012, 01:01:49 am by BrainBooster » Logged

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

Si, è possibile che per qualche ragione (falsi contatti o altra roba simile), durante la programmazione icsp venga cancellata la signature, ma questo non dovrebbe impedirti di riscriverla con la programmazione HV.

Nei due link non ho visto nessun riferimento specifico alla signature, quello polacco illustra un apparato simile a quello che sta realizzando Menniti, il fatto che nel video appare la signature 0xFFFFFF è normale perché è quello che leggi se il micro è brickato e accedi tramite ISP, dopo averlo resettato tramite HV ritorna leggibile da ISP.
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

astro ma il "coso" costruito dal polacco non credo che faccia icsp, ma solo HVPP e HVSP, quindi l'output che si vede nel video è letto con una di quelle due modalità no?
Logged

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

quindi l'output che si vede nel video è letto con una di quelle due modalità no?

Colpa della traduzione di google, sono andato a leggere il testo originale in Inglese, i link è sempre meglio metterli al sito originale e non tramite traduttore proprio per evitare le cavolate che questo combina vanificando eventuali ricerche nel testo.
In effetti in fondo ci sono due screen capture,  dove fa vedere un ATtiny 13 con signatura 0xFFFFFF, letto tramite HVSP, e brickato viene ripristinato introducendo manualmente il modello, però nella schermata successiva risulta si ripristinato, ma la signature rimane 0xFFFFFF il che crea non pochi problemi quando vai a programmarlo tramite ISP.
Dopo provo a mandare un richiesta all'assistenza tecnica di Atmel per chiedere lumi su questa cosa della signature alterabile e se c'è un modo per ripristinarla.
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

io ho guardato in giro e credo che il problema sia causato da una cancellazione del registro di calibrazione dell'oscillatore interno e per riscriverlo bisogna applicare un clock con un quarzo esterno o altro di 1MHz.
Ma non ho ancora avuto modo di cercare per bene.
Logged

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

Bene ragazzi, grazie di aver preso in cura il problema. Sul datasheet non mi pare si parli di scrittura della signature, i link non li guardo perché l'inglese mi è amico tanto quanto il polacco, quindi sarebbe inutile, però sono pronto ad ogni prova possibile, datemi indicazioni e sarà fatto. Confermo che con l'ISP è impossibile lavorare con ujna signature FF FF FF, ho provato a metterla in AVRDUDE.CONF e l'IDE si incazza come una bestia, segno che controlla prima se c'è un 1E iniziale. Con lo stesso metodo invece ho programmato regolarmente il 4313, ma non riesco ad integrarlo come supporto diretto, posso farlo solo dicendo al CONF che ho un tiny2313 con una signature, flash e fuse diversi; ho provato a duplicare le righe nel conf ma evidentemente l'elenco dei micro va aggiornato in qualche altra parte (ma dove?), comunque il link di BB sul 4313 lo guardo, lì dovrei capire qualcosa in più.
Non credo sia possibile mettere un quarzo, i pin XTAL1 e 2 sono impegnati da segnali di programmazione e comunque ora non posso fare più niente sull'hw, al di là di una prova al volo; se poi il micro è comunque inutilizzabile via ISP non mi serve a niente.
@ Astro: prova a vedere, aspetta la risp di ATMEL, se c'è qualcosa che posso fare io la faccio, anche perché sarebbe spettacolare implementare un recupero del genere; se invece non c'è nulla e vuoi comunque dare un'occhiata te lo spedisco.

Ieri comunque è successo, poi ho ricostruito, che col fatto di usare alternativamente Arduino UNO+ISP per mettere lo sketch e l'HV Programmer per cancellarlo, ad un certo punto ho notato che Win impiegava oltre un minuto per riconoscere l'USB di turno, e siccome deve fare un secondo riconoscimento di conferma mi è capitato di fare operazioni nelle fasi intermedie; dopo il fattaccio ho riavviato (e mi è uscito un errore di sistema di scrittura, stranissimo) e per tutta la sera ho rifatto i giochi col 4313 (non volevo aver costruito uno spara-micro), le USB sono andate benissimo, addirittura manco le ho scollegate a volte, senza avere più problemi.

Oggi pomeriggio implemento il lock bit, intanto datemi tutte le info possibili riguardo il recupero del 2313 e l'implementazione del 4313. Grazie!
Logged

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

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Menniti quando dicevo "un quarzo o altro" in verità volevo dire che basta dare un clock stabile da 1 a 4mhz sul pin del clock dell'ic , poi cancellare tutto e provare a riprogrammare il fuse CLSEL.
... tel'avevo messo anche tradotto in italiano il link smiley-grin e neanche lo guardi? smiley-cry  guarda almeno il video smiley-grin
Logged

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

Menniti quando dicevo "un quarzo o altro" in verità volevo dire che basta dare un clock stabile da 1 a 4mhz sul pin del clock dell'ic , poi cancellare tutto e provare a riprogrammare il fuse CLSEL.
... tel'avevo messo anche tradotto in italiano il link smiley-grin e neanche lo guardi? smiley-cry  guarda almeno il video smiley-grin
BB non prendere per il c...., mi sono fidato di quanto commentava Astro, ora al lavoro, pomeriggio mi guardo il filmino smiley-razz
Ho scaricato invece il core tiny, ma sei sicuro che si tratti di una versione modificata dell'originale? Ricordo che per diverso tempo Leo fece riferimento ad un core che dava parecchi problemi, non vorrei che si trattasse di quello smiley-sad-blue
C'è un modo per capire questa cosa secondo te? comunque pomeriggio faccio qualche prova anche con questo, mi sa che questo pomeriggio durerà fin o alle tre di stanotte smiley-sweat
Logged

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

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quella è una versione abbastanza antica (usala solo per il 4313), ricorda che se stai facendo esperimenti con avrdude devi anche modificare avrdude.conf per fargli riconoscere il 4313.
Logged

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

Ho la risposta di Atmel, la signature si trova in una zona protetta della flash ed è accessibile esclusivamente tramite le varie modalità di programmazione con gli specifici comandi.
Se durante un erase della flash si verificano rilevanti spike, non mi hanno chiarito cosa intendono con rilevanti, sull'alimentazione del micro per quanto sia un evento rarissimo è possibile che venga cancellata anche la zona della flash dove si trova la signature, il motivo per cui leggi 0xffffff è proprio perché 0xff è il valore tipico di una cella flash appena cancellata.
Non esiste nessun modo per ripristinare il corretto valore della signature, il micro rimane perfettamente funzionante e utilizzabile, però potrebbero esserci problemi con alcuni software e tool hardware per la programmazione perché se leggono il valore 0xffffff lo interpretano come micro non riconosciuto o guasto e non consentono di procedere ad una programmazione forzata.
Morale della favola, non solo gli AVR è possibile brickarli sbagliando i fuse, ma è anche possibile cancellare la signature.
Logged

Pages: 1 ... 14 15 [16] 17 18 ... 36   Go Up
Jump to: