PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Microcontroller flashen => Bootloader



Sp666dy
30.12.2011, 14:11
Guten Tag

also hab da mal so ne blöde Frage,

Habe bis jetzt immer mit den Rn-board programmiert und da ist ja ein bootloader drauf.

Habe zwar die frage oft bei google eingegeben und das avr tutourial durchgeguckt aber

die Frage ob ich den bootloader überhaubt brauche war jetzt nicht wirklich geklärt.

So wie ich das verstanden habe kann ich doch zum Beispiel ein Attiny nehmen die Anschlüsse
für ISP dran machen und den doch flaschen können oder???

aber dann frag ich mich wofür der Bootloader dann da ist?

MFG Sp666dy

Torrentula
30.12.2011, 14:18
Wenn du einen ISP-Programmer hast, dann kannst du auch eigentlich jeden gängigen ATmega/ATtiny damit flashen, vorausgesetzt du schließt ihn richtig an ;)

Der Bootloader auf dem ATmega32 des RN-Control ist dazu gedacht, dass man auch ohne ISP über die serielle Schnittstelle (RS232) programmieren kann. Damit muss man sich keinen ISP-Programmer kaufen (ich finde allerdings einen Avrisp mkII nicht so teuer und bietet sich doch an).

MfG

Torrentula

Sp666dy
30.12.2011, 16:08
Cool ... dann bestell ich mal direkt die sachen und lese mich dann ein wie man die Fusebits richtig setzt...

Hab den ISP-USB for all AVR Programmer, der bei der Reichelt Seite so auf der erste Seite als Angebot steht, schon seit längerem und habe damit immer programmiert.

Danke für die schnelle Antwort.

MFG Sp666dy

Kampi
30.12.2011, 19:04
Ein Bootloader wird normalerweise dafür verwendet um Updates aufzuspielen. Kennst du vielleicht von deinem Smartphone ;)
Der Bootloader dient als Chipinterner Programmer, allerdings kannst du damit nicht direkt die Fusebits ändern. Wenn du die Fusebits ändern willst musst du das in dem Programm machen, sodass der Controller die Bits ändert. Du kannst z.B. die erste Programmierung deines Chips mit einem Programmer machen und den Chip dann auf eine Platine stecken und brauchst dann keinen ISP mehr mit auf die Platine zu machen. Wenn du dann nämlich eine RS232 Schnittstelle mit auf die Platine machst (oder vielleicht ist ja sowieso schon eine vorhanden) kannst du diese bequem nutzen um eventuelle Verbesserungen deiner Software aufzuspielen. So funktioniert das heute bei allen elektronischen Systemen wo du ein Update aufspielen kannst. Im Werk wird die eigentliche Programmierung der Chips vorgenommen und dann kann mittels Bootloader ein einfaches Firmwareupdate eingespielt werden. Du kannst das Update auch über andere Wege als über RS232 einspielen z.B. über Ethernet.

Sp666dy
30.12.2011, 20:16
Danke für die detaillierte Beschreibung aber das reicht schon! Möchte um Platz zu sparen den
Chip einmal programmieren und dann in ein Schaltplan einstecken!
Den Bolzplätze brauch ich im Grunde nicht, vielleicht später bei komplexere Projekte, aber im Grunde
Kann ich immer mit meinem Programmes programmieren ;-)

Sp666dy
05.01.2012, 10:04
Guten Tag,

habe gestern ein ATtiny 84 versucht zu Programmieren...

aber AVR Studio kann sich mit dem Prozessor nicht verbinden!
Zum Programmieren benutze ich: Hier (http://www.reichelt.de/Programmer-Entwicklungstools/DIAMEX-PROG-S/index.html?;ACTION=3;LA=444;GROUP=A38;GROUPID=2969 ;ARTICLE=115385;START=0;SORT=artnr;OFFSET=16;SID=1 1Tn2frn8AAAIAAF@YMb87ac5aa92bf53cf491299e922af2054 d1)

Ich habe Vom ATtiny 84 VCC mit 5 V von einem Netzteil versorgt und GND mit Masse!
Zwischen GND und VCC habe ich noch ein 100nf Kondensator eingelötet!

Den ISP ganz normal, wie es in jedem Tutourial drin steht, verbunden!

Wenn ich dann auf AVR Studio gehe, zeigt er schon an das er den
ISP Programmer gefunden hat aber sobald ich versuche zu flashen,
gibt er mir ein Verbindunsgfehler an!

Wodran kann das liegen?

Danke

Torrentula
05.01.2012, 10:17
Also bei mir lag es entweder daran, dass die Kontakte des Steckers auf der Platine falsch verlötet habe (von unten gesehen ist ja alles spiegelverkehrt) oder, dass ich einen Kurzschluss zwischen zwei der Programmier-Leitungen hatte.

MfG

Torrentula

Sp666dy
05.01.2012, 10:28
Gut das werde ich heute einfach mal neu machen...

Aber ich wollte mich nur vergewissern das es eigentlich so klappen muss oder???

Oder muss man beim ersten mal eine bestimmte sachen mit flashen ( oder diese fues setzen)
aber ich habe ja kein externen Quarzoszillator (http://www.reichelt.de/Oszillatoren/OSZI-1-000000/index.html?;ACTION=3;LA=2;ARTICLE=13673;GROUPID=31 74;artnr=OSZI+1%2C000000;SID=11Tn2frn8AAAIAAF@YMb8 7ac5aa92bf53cf491299e922af2054d1) oder so??

Torrentula
05.01.2012, 10:50
Nach welchem Tutorial hast du gearbeitet? Wenn in dem Tutorial ein 6-poliger ISP verwendet wird, dann nützt es dir nichts wenn dir jemand sagt verbinde Pin X des ISP mit Pin Y des Controllers. Schaue lieber ins Datenblatt und vergewissere dich, dass du RESET, MOSI, MISO und SCK mit den richtigen Pins des µC verbunden hast. Natürlich VCC und GND nicht vergessen.

Wenn der µC fabrikneu ist solltest du nichts an den Fuses ändern müssen. Schaue auch, dass du die richtige ISP-Frequenz ausgewählt hast! Der µC läuft "ab Werk" mit 1MHz also kannst du mit max. 125kHz programmieren. Die max. ISP-Frequenz beträgt 1/4 der Controllerfrequenz.

MfG

Torrentula

EDIT: Habe hier in einem anderen Datenblatt zum Controller die Einstellung der DIP-Schalter gefunden, um über ISP zu programmieren: siehe Seite 2 (http://www.sr-tronic.eu/service/Anleitung/Anleitung_erfos-prog-s.pdf)
Laut diesem Datenblatt/Handbuch müssen beide Schalter auf "OFF" stehen. Auf Seite 5 findet sich die Pinbelegung der ISP-Buchse

Sp666dy
05.01.2012, 11:13
Ja das was ich gelesen habe, war ein 6 Poliges und ein atmega 8,
darum geht ja AVCC weg und den oszillator (http://www.reichelt.de/Oszillatoren/OSZI-1-000000/index.html?;ACTION=3;LA=2;ARTICLE=13673;GROUPID=31 74;artnr=OSZI+1%2C000000;SID=11Tn2frn8AAAIAAF@YMb8 7ac5aa92bf53cf491299e922af2054d1) hab ich auch weg gelassen!
Der isp Programmer läuft mit 16 Mhz und der interne wäre ja nur bei 1!
Ich hab auch nach dem Datenblatt alles verbunden.

Wie stell ich den die Frequenz des Programmierens ein, einfach im define oder am programmer selber?
Weil auf den Programmer ist ein 16MHZ quarz drauf, oder bin ich gezwungen dann ein quarz am controller anzuschließen?

Torrentula
05.01.2012, 11:58
Der isp (http://www.rn-wissen.de/index.php/AVR-ISP_Programmierkabel) Programmer (http://www.shop.robotikhardware.de/shop/catalog/index.php?cPath=88) läuft mit 16 MHz
Sicher? :)

Du kannst im Programmierdialog die programming frequency einstellen unter dem Punkt "interface settings" mit dem Schieberegler. Dann sollte es eigentlich funktionieren. Nur weil du einen 16MHz Quarz an den tiny hängst, heißt das nicht, dass der wirklich mit 16MHz läuft sondern das muss erst in den Fusebits eingestellt werden. Das geht aber erst nachdem du überhaupt den tiny mit dem ISP Programmer verbinden kannst / auf den tiny zugreifen kannst.

Sp666dy
05.01.2012, 14:32
Habe alles nach kontrolliert,
Alles ist richtig angeschlossen!
Mosi > Mosi
Miso > Miso
Sck > usck
Reset > Reset
Vcc > vcc

Zwischen Reset und vcc ein 10 kohm Widerstand
Und zwischen vcc und GND ein 100 nf Kondensator
5 Volt aus einem Netzteil wird alles versorgt!
Und zum prüfen ob der Controller das Programm richtig erhält
Eine LED an einem Port mit ein vor Widerstand gegen Masse!

Was kann es noch sein!
Bei Act Studio hab ich den Controller ausgewählt,
Und nur die Avr libery hinzugefügt!
Habe habe im Main nur den Befehl das der Port b ein Ausgang
Ist und den angeschaltet um zu gucken ob die LED an geht!

Mit den fuse Bit kenn ich mich nicht aus les da gleich was drüber!
Wodran kann es noch liegen?
Vielleicht hab ich irgendwas selbstverstândliches vergessen?

Sp666dy
07.01.2012, 11:39
Soooo ....

bin immer noch nicht weiter....

hab eine neue Schaltung mit den Attiny 13 versucht .. zusammengelötet .. gescheitert!

Eins kann ich aber jetzt sagen, es liegt nicht an der Schaltung,

weil ich vermutet habe das der Programmer kaputt ist habe ich mein Rn-Controll nochmal rausgeholt

und veruscht Ihn zu flashen .... ging wunderbar!!!
Weil ich noch ein MEga32 hatte (fabrikneu)
habe ich den Prozessor in den Controller rein gesteckt und das gleiche versucht gleiche Einstellungen gleiches Programm alles gleich!!!

Ging nicht!!!

Habe alle Kombinationen mit Häckchen versucht und die Frequenz runtergeschraubt!!!
Es lässt sich nicht flashen und auch nicht das eeprom beschreiben!!!

Es muss irgendwie an den Einstellungen liegen!!!

Wer weiß weiter???

Sp666dy
08.01.2012, 16:38
Also habe jetzt noch zwei mal das gleiche zusammen gesteckt und zusammen neu gelötet um löt fehler usw weiter auszuschließen!

Danach habe ich mich nochmal auf den RN-Control konzentriert, denn ich wollte ausschließen das der Programmer kaputt ist!!!
Das was ich nicht verstehe ist einfach, warumm alles wunderbar klappt wenn der Prozessor mit den Bootloader drinn ist
und nichts klappt wenn ein fabrikneuer ATmega32 drinn ist(im RN-Control???

Jumpers gibt es ja nicht die unterscheiden was drinn ist!
Und an den Einstellungen der Fuses kann es auch nicht liegen,
da er nichtmal im Prozessor rein kommt!!!

Also was kann man noch versuchen sonst kauf ich mir morgen ein neuen Programmer!!!!

Bitte um Hilfe

Sp666dy
09.01.2012, 12:13
Also bin jetzt kurz davor mir ein neuen Programmer zu kaufen, kann mir jemand einen empfehlen???
Oder hat jemadn noch ne Ahnung was ich noch ausprobieren kann!!!

Sp666dy
23.01.2012, 09:34
Um es nochmal zu sagen ...... es war der Programmer... also ich habe mir den
AVR Programming Tool AT AVR ISP2 mit USBgekauft und alles lief einwand frei...

Was mich noch stutzig macht warum der andere Programmer den mit Bootloader flasht und ohne nicht obwohl ich über isp programmiere...

Aber egal ....

Danke trotzdem für alle Bieträge

oberallgeier
23.01.2012, 10:13
... Was mich noch stutzig macht ...WENN Du einen fabrikfrischen (oder sonstwie entsprechend eingestellten) Controller verwendest, dann wird der vom internen Oszillator mit ca. 1 MHz getaktet. WENN nun Dein Programmer zu schnell die Daten rüberschiebt, dann klappt das Flashen nicht. DENN die Datenblätter schreiben vor, dass der Takt zum Flashen auf weniger als 1/4 des Prozessortaktes gestellt wird.

Also einen fabrikfrischen Controller bei unter 250 kHz flashen (das sollte am Programmer einstellbar sein) oder die Fuses des Targets auf den entsprechend möglichen höheren Takt mit nem zugehörigen Quarz (wenn der verbaut ist) stellen und dann mit höherer Geschwindigkeit flashen. Zum Verstellen der Fuses am Controller mit dem niedrigen Takt MUSS aber der Programmer entsprechend langsam getaktet werden.

Sp666dy
23.01.2012, 11:39
Ne es lag nicht dadrann denn ich habe mit meinem alten Programmer siehe Oben ... keine verbindung bekommen...
Sobald ich es angeschlossen habe und den Prozessor eingegeben habe und die frequenz passend eingestellt habe
hat er immer gesagt ich sollte gucken ob das ding richtig angeschlossen ist.
Ich habe die schaltung drei mal neu aufgebaut und es ist ja nichts schweres dadran minus und plus und die isp anzuschließen!!!!

Aber der hat mir immer ein verbindungsfehler angesagt!!!

Auch als ich ein ATmega32 im RN controll reingesteckt habe, (fabrikneu) ging nichts habe ich den mit dem BOOTloader eingesteckt klappte alles wunderbar!!!

Jetzt hatte ich mir ein neuen Programmer gekauft angeschlossen und verbindung war sofort da und wurde anerkannt ... gleiche schaltung und alles habe nur ein adapter von 6 pin und wannenstecker zwischen geschaltet... dann hab ich das gleiche nochmal mit dem alten Programmer versucht ... nichts... naja ich weiß nicht warum aber bin froh nach drei wochen weiter amchen zu können !!!
;-)