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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.