Come detto non ho provato il -D perché non mi interessava. Però leggendo bene l'intervento di QP NON capisco se ha usato o meno il -D con AVRDUDE; perché se non lo ha usato e quindi ha lasciato il chip erase attivo, e non è riuscito a scrivere, la cosa sarebbe in totale conflitto con le mie prove; se invece l'ha usato siamo nella norma; io senza il -D ho scritto regolarmente.
Come detto non mi interessa la questione bootloader perché mi riferisco agli stand-alone, ho solo detto di aver fatto le relative prove.
Riprendo due frasi di Astro:
Per farla breve, con il blocco in lettura e scrittura della flash generica non puoi scriverla tramite ISP, a meno di non fare un erase, e non puoi scriverla dal software applicativo, non puoi leggerla tramite ISP.
Io con il blocco lb su FC (lettura e scrittura inibite) mediante ISP scrivo tranquillamente, inizialmente provavo con lo stesso sketch, lo dissi chiaramente, poi ho provato due blink assolutamente diversi (sul mio Programmatore ISP dispongo di 3 led): uno su un LED a 1000 e l'altro su un altro LED a 100, mi accorgerò della differenza no? Ogni volta cambia comportamento, quindi scrivo; evidentemente Arduino ISP fa un erase; d'altra parte se AVRDUDE di default fa l'erase è ovvio che ArduinoISP ne erediti i parametri. Ribadisco che tutto ciò è una cag perché questo è come il ferramentaio che ti vende una serratura di sicurezza e contemporaneamente ne da una copia al cugino ladro!
C'è solo un punto oscuro relativamente ai l.b. della flash generica, due bit consentono quattro diverse combinazioni però ne vengono sfruttate solo tre, apparentemente la condizione che blocca solo la lettura, e non la scrittura, non è permessa toccherebbe verificare se è una carenza del data sheet oppure è un limite reale
La combinazione FD NON esiste, non è una carenza ma proprio non è prevista, non solo da data-sheet, ma nemmeno dalla programmazione; vedo che intanto QP ha provato, ma le prove le avevo fatte anche io , senza riportarvele perché erano inutili. Il parametro FD non è accettato e di default viene imposto l'FC. Non penso valga la pena perderci altro tempo, le conclusioni sono e restano quelle a cui ero arrivato, incorniciandole , un po' di pagine fa. Naturalmente disabilitando il fuse SPI ora sappiamo con certezza che non si programma, ma questo non c'entra nulla con i lb.
EDIT: ho riscritto la prima parte di questo post, da rileggere, please.