mikrocontroller.net

Forum: Compiler & IDEs Arduino und AVR: setzen der Lock und Fusebits im Code?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Florian Hauer (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Hallo uC.net,

ich frage mich gerade wie man im Sourcecode die gewünschte Befehle für 
das Setzen der Fuse und Lockbits eintragen könnte. Da Arduino ja avrdude 
zum Flashes benutzt un ddort als Parameter unter anderem auch die 
Fuse&Lockbits übergeben werden (von der Arduino-IDE aus) sollte es doch 
möglich kein dies dort auch zu setzen?

Ich flashe meine Mega8 momentan mit dem Befehl "Hochladen mit 
Programmer". Die daraus generierte Befehlszeile im Tracerfenster 
übernehme ich dann den avrdude-Befehl in die CMD von Windows 
(Kommandozeile) und ändere die Fusebits nach meinen Vorgaben.

Geht das auch im Arduino-Editor bzw Sourcecode? Habe bei Bascom gesehen 
das es dort nämlich extra dafür ein $PROG gibt. Bin aber C'ler (zwar 
kein Profi, aber ich verhungere nicht beim Basteln).

Wer hat sinnvolle Tips?

von Oliver S. (oliverso)


Bewertung
0 lesenswert
nicht lesenswert
Wenn dein Programmer fues im elf-file unterstützt, geht das so:

https://www.nongnu.org/avr-libc/user-manual/group__avr__fuse.html

Oliver

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Florian Hauer schrieb:

> Da Arduino ja avrdude
> zum Flashes benutzt un ddort als Parameter unter anderem auch die
> Fuse&Lockbits übergeben werden (von der Arduino-IDE aus) sollte es doch
> möglich kein dies dort auch zu setzen?

Das hängt ganz stark davon ab, wie die Arduino-IDE das angeht.

Die von meinem Vorredner vorgeschlagene Variante geht nur, wenn die 
Arduino-IDE das auch unterstützt, denn sie muss dann sowas wie "-U 
lock:w:foo.elf" etc. an AVRDUDE übergeben.

Wenn die Arduino-IDE einfach stur die irgendwo in einem Menü angegebenen 
Werte für Fuse- und Lockbits da übergibt (als "-U lfuse:0x**:m"), dann 
kannst du dich im Sourcecode abmühen wie du willst.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Oliver S. schrieb:
> Wenn dein Programmer fues im elf-file unterstützt, geht das so:

Der Programmer bekommt das ELF-File nicht zu sehen.

von Oliver S. (oliverso)


Bewertung
0 lesenswert
nicht lesenswert
Ok, das elf-file sieht natürlich nur das Programmierprogramm.

Kann avrdude in aktueller Verison mit der .fuse-section im elf-file was 
anfangen?

Oliver

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Oliver S. schrieb:
> Kann avrdude in aktueller Verison mit der .fuse-section im elf-file was
> anfangen?

Ja, aber nur, indem man ihm das auch auf der Kommandozeile so mitteilt.

Das ist halt der Punkt, bei dem ich bei der Arduino-IDE so meine 
Zweifel habe. Ich kenne sie nicht persönlich, habe aber Berichte von 
anderen gehört, dass innerhalb dieser IDE so ziemlich alles sehr 
„händisch festgezurrt“ sei.

von Theor (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hm. Seid Ihr sicher, dass der TO das so gemeint hat?

Mein erster Gedanke, aber ich mag mich irren, war, dass er im Quelltext 
die Lockbits beeinflussen will. Er schreibt von "Befehlen", also 
irgendwas, was zur Laufzeit ausgeführt wird, denke ich.

Eine andere Deutung wären Direktiven (manche verwechseln das ja), die 
offebar die Arduino-IDE aus dem Quelltext lesen soll und damit avr-dude 
Parameter setzen.

von leo (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Florian Hauer schrieb:
> ich frage mich gerade wie man im Sourcecode die gewünschte Befehle für
> das Setzen der Fuse und Lockbits eintragen könnte.

Gar nicht. Die Lockbits und Fuses werden via Eintrag in boards.txt (und 
damit teilweise indirekt ueber das Menue) festgelegt. E.g.
atmegasa16.name=ATmega328P Stand Alone (Arduino as ISP)
...
atmegasa16.bootloader.low_fuses=0xff
atmegasa16.bootloader.high_fuses=0xdf
atmegasa16.bootloader.extended_fuses=0x05
...

Das Schreiben der Bits erfolgt dann mit dem Schreiben des Bootloaders.
leo

von Oliver S. (oliverso)


Bewertung
0 lesenswert
nicht lesenswert
Die Lockbits lassen sich natürlich auch aus dem Program setzen.

https://www.nongnu.org/avr-libc/user-manual/group__avr__boot.html#gadaa352690ac1c82c535da9d8faf77590

Oliver

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Theor schrieb:
> Eine andere Deutung wären Direktiven (manche verwechseln das ja), die
> offebar die Arduino-IDE aus dem Quelltext lesen soll und damit avr-dude
> Parameter setzen.

Nein, die IDE müsste das nicht unbedingt aus dem Quelltext selbst lesen 
können, das funktioniert prinzipiell schon auch auf dem oben gezeigten 
Weg über das ELF-File. Atmel Studio unterstützt sowas beispielsweise. Es 
liegt aber an der IDE, die entsprechenden Sections aus dem ELF-File dann 
auch wirklich beim Programmieren „in Auftrag zu geben“.

von Theor (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Theor schrieb:
>> Eine andere Deutung wären Direktiven (manche verwechseln das ja), die
>> offebar die Arduino-IDE aus dem Quelltext lesen soll und damit avr-dude
>> Parameter setzen.
>
> Nein, die IDE müsste das nicht unbedingt aus dem Quelltext selbst lesen
> können, das funktioniert prinzipiell schon auch auf dem oben gezeigten
> Weg über das ELF-File. Atmel Studio unterstützt sowas beispielsweise. Es
> liegt aber an der IDE, die entsprechenden Sections aus dem ELF-File dann
> auch wirklich beim Programmieren „in Auftrag zu geben“.

Moment. Das ist wahrscheinlich ein Mißverständnis.

Merkwürdig subtil, die Sache ... :-)

Ich habe eine mögliche Deutung der Frage des TO in den Raum gestellt und 
gefragt ob diese aus Eurer Sicht möglich wäre.

Darin steht, dass die IDE das tun "soll", "soll" im Sinne einer 
Spezifikation, einer Erwartung, eines Wunsches. Nicht, dass sie das 
"muss", weil es nicht anders geht oder umgekehrt, dass sie das nicht 
unbedingt muss, weil es auch anders geht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.