Lockbits per Software setzen

Gast #731243
Lesenswert?

Hallo Leute, ich möchte zum Programmstart eines Atmegas die Lockbits 
überprüfen und falls die nciht dem entsprechen, was ich brauche, setzen.
1
void check_lockbits()
2
{
3
  #ifdef CHECK_LOCK_BITS
4
  if(boot_lock_fuse_bits_get(GET_LOCK_BITS) != 0xC0)
5
  {
6
       boot_lock_bits_set(0xC0);
7
  }
8
  #endif
9
}

Die Abfrage funktioniert wunderbar, leider werden die lockbits mit der 
Funktion boot_lock_bits_set nicht gesetzt und bleiben bei 0xFF.

Ich finde leider keine Ausführliche Information dazu und muss euch um 
eure Hilfe fragen :)

Vielen Dank.
Gast #731286
Lesenswert?

Hi

• Bit 3 – BLBSET: Boot Lock Bit Set
If this bit is written to one at the same time as SPMEN, the next SPM 
instruction within four clock cycles sets Boot Lock Bits, according to 
the data in R0. The data in R1 and the address in the Z-pointer are 
ignored. The BLBSET bit will automatically be cleared upon completion of 
the lock bit set, or if no SPM instruction is executed within four clock 
cycles.

Vielleicht stimmt das Timing nicht?

MfG Spess
(Firma: TravelRec.) Persönliche Seite #731527
Lesenswert?

In ASM schaut´s so aus:
1
;-------------------------------------
2
Write_BLB:          ;write LockBits
3
 sbic  EECR,EEPE        ;wait, if EEPROM-Write is running
4
 rjmp  Write_BLB
5
 clr  ZH
6
 ldi  ZL, 1
7
 ldi    Temp, 0b11101100      ;Lock bit pattern to program
8
 mov  r0, Temp
9
 ldi  SPMCRVAL, (1<<BLBSET) + (1<<SELFPRGEN)
10
 out  SPMCSR, SPMCRVAL
11
 spm
12
 ret
#731676
Lesenswert?

1.
SPM-Befehle können nur in der Bootsektion ausgeführt werden, aus dem 
unteren Flash werden sie als NOP ausgeführt.

2.
Self programming muß enabled sein, sonst SPM = NOP


3.
Es können nur die Bootloaderlockbits gesetzt werden.
D.h. ohne Bootloader ist das vollkommen sinnfrei.

Mit Bootloader ist das auch nur dann sinnvoll, wenn der Bootloader sich 
allzeit aussperren soll.
Also z.B. es ist nur eine bestimmte Anzahl Updates beim Kunden erlaubt.
Oder nach einer bestimmten Laufzeit werden keine Updates mehr 
zugelassen.


Peter
(Firma: TravelRec.) Persönliche Seite #731898
Lesenswert?

Oder der Bootloader wird geschrieben und das Produkt soll dem Endkunden 
übergeben werden. So kann man nie vergessen, den Chip gegen Auslesen zu 
schützen, siehe unten.

>Es können nur die Bootloaderlockbits gesetzt werden.
>D.h. ohne Bootloader ist das vollkommen sinnfrei.

Das stimmt so nicht ganz, beim Mega168 und einigen anderen neueren AVRs 
lassen sich auch die Flash-Lock-Bits schreiben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren