Hey Leute, mein Problem ist es, dass ich einen ATMega328p mit AtmelStudio 6.2 mit einem ISP-Programmer bespielen, dabei aber nicht den Bootloader überschreiben möchte. Das Ziel ist es, den µC sowohl mit einem ArduinoUNO mit der ArduinoIDE einen Sketch hochladen zu können, als auch mit einem ISP-Programmer in einer Vorrichtung ein Programm zu laden. Der Bootloader von optiboot für den ATMega328 (Anhang) wird von der ArduinoIDE auf den Mikrocontroller geladen, deshalb brenne ich auch DIESEN über AtmelStudio auf den Mikrocontroller. Nehme ich nun die ArduinoIDE mit einem ArduinoUNO und lade einen Sketch hoch, so ist der Bootloader weiterhin auf dem µC vorhanden. Nehme ich AtmelStudio und einen ISP-Programmer und Programmiere den Flash-Speicher, so wird der Bootloader überschrieben. Setzte ich zuerst das Lockbit (BLB1: LPM_SPM_DISABLE, anderen NO_LOCK) und lade den Bootloader hoch und lade danach erst das Programm werden die Lockbits wieder zurückgesetzt. Vielleicht eine Frage vorne weg: Werden die Programme in AtmelStudio genau wie der Bootloader über das Tool DeviceProgramming geladen, oder gibt es da noch eine andere Möglichkeit, die ich noch in keinem Forum oder sonstigen gefunden habe? Hauptfrage: Wie muss ich die Lockbits beim programmieren des Bootloaders setzen, damit dieser bei einem zweiten Programmupload nicht überschrieben werden, oder müssen die FuseBits bei Bootloader und Programm unterschiedlich gesetzt werden? Vll gibt es auch noch eine andere Möglichkeit. PS.: Es sollte kein allzu kompliziertes Verfahren sein, da es in Zukunft auch ältere Kollegen ausführen sollen. Ich verwende WIN7 64bit und einen DIAMEX ALL-AVR-Programmer in der 6 PIN ISP Einstellung Gruß Philipp
Findest du im ISP Programmierdialog oder in den Fuses irgendwo die Möglichkeit, nur Teile des Flash zu löschen? Es gibt nur die Fuse, das EEPROM beim Chip Erase zu schützen. Also hast du schlechte Karten. Die Lockbits verhindern nur die Ausführung von lpm und spm Befehlen. Den Schnack über die dummen älteren Kollegen hättest du dir übrigens schenken können.
Philipp L. schrieb: > mein Problem ist es, dass ich einen ATMega328p mit AtmelStudio 6.2 mit > einem ISP-Programmer bespielen, dabei aber nicht den Bootloader > überschreiben möchte. Wo ist das Problem? Wenn du den ISP-Programmer benutzt, brauchst du den Bootloader nicht und wenn du den Bootloader wieder brauchst, kannst du ihn mit dem ISP-Programmer wieder drauf spielen - mal ganz abgesehen von den Lock-Bits für die Schreibfunktion. Wie wäre es mit einem Blick ins Datenblatt? Da finden sich so Sätze wie z.B. "Program Flash memory space is divided in two sections, the Boot Program section and the Application Program section. Both sections have dedicated Lock bits for write and read/write protection." Das könnte doch ein Ansatzpunkt sein ;-)
Philipp L. schrieb: > mein Problem ist es, dass ich einen ATMega328p mit AtmelStudio 6.2 mit > einem ISP-Programmer bespielen, dabei aber nicht den Bootloader > überschreiben möchte. Das geht nicht. Beim Programmieren über ISP kann man nur den gesamten Flash löschen (system erase). Andererseits kann man den Teil des Flash der die Applikation hält, nicht beschreiben ohne ihn vorher zu löschen. Ergo muß man den Bootloader beim Programmieren über ISP jedesmal neu mit aufspielen. Das ist vergleichsweise trivial. Entweder programmiert man in zwei Durchläufen: 1. system erase + Bootloader schreiben 2. Applikation schreiben (ohne vorheriges system erase) Oder man kombiniert die HEX files für Applikation und Bootloader und schreibt sie auf einen Rutsch (natürlich nach einem system erase). Andererseits gibt es keinen Grund, über ISP zu programmieren, sobald der Bootloader erstmal drauf ist. Insofern ist das ein Luxusproblem.
Über ISP kann man nur den gesamten Flash löschen. Entweder man öffnet mit nem Editor das eine Hex, löscht die letzte Zeile und fügt das 2. Hex an. Oder man schreibt sich ne Batch mit findstr, die das automatisch macht.
Georg G. schrieb: > Den Schnack über die dummen älteren Kollegen hättest du dir übrigens > schenken können. Ich wollte nie jemanden als dumm darstellen! Das sollte nur ein Hinweis sein, dass nicht irgendwelche extrem komplizierten Schritte vorgenommen werden wie irgendwelche Application Files zu manipulieren, da das Programm AtmelStudio so schon kompliziert genug ist und für die älteren Kollegen schon schwer zu bedienen! Und das sind Erfahrungswerte! Wolfgang schrieb: > Wo ist das Problem? > Wenn du den ISP-Programmer benutzt, brauchst du den Bootloader nicht und > wenn du den Bootloader wieder brauchst, kannst du ihn mit dem > ISP-Programmer wieder drauf spielen Nachdem eine Reihe neuer Mikrocontroller gekauft worden sind sollen sie universell verwendbar sein. Entweder werden sie mit Hilfe des ArduinoUNO eingesetzt und bespielt, oder sie werden in Versuchsplatinen eingesetzt und über ISP programmiert. Nachdem die Tests mit dieser Platine durchgeführt worden sind werden die µC einfach wieder zu den anderen gelegt und man weis nicht mehr welche mit Bootloader sind und welche nicht. Nimmt jetzt jemand der mit der Materie Mikrocontroller keine Erfahrungen gesammelt hat und sie einfach nur verwenden will, der kommt schnell auf die Idee das der µC kaputt ist. Deshalb sollen sie eben universell verwendbar sein. Wolfgang schrieb: > Wie wäre es mit einem Blick ins Datenblatt? Da finden sich so Sätze wie > z.B. "Program Flash memory space is divided in two sections, the Boot > Program section and the Application Program section. Both sections have > dedicated Lock bits for write and read/write protection." Das habe ich schon gewusst, weswegen ich überhaupt erst den Eintrag verfasst habe. Die Frage ist, wie man diese Sektionen im AtmelStudio ansprechen kann. Axel S. schrieb: > 1. system erase + Bootloader schreiben > 2. Applikation schreiben (ohne vorheriges system erase) Das ist sehr Hilfreich! Danke (y)
Ich bin ein aelterer Kollege und habe auch schon Bootloader geschrieben... Also. Wenn man einen Bootloader drauf hat, sollte man den auch verwenden. Falls man trotzdem vom Atmel Studio her programmieren moechte.. muesste man a) den Bootloader jeweils mitprogrammieren, b) selektiv programmieren, was der Controller wahrscheinlich koennte, das Atmel Studio aber nicht. Was spricht denn gegen den Bootloader zu benutzen ?
Oh D. schrieb:
> Was spricht denn gegen den Bootloader zu benutzen ?
Wie schon geschrieben, gibt es verschiedene Anwendungsmöglichkeiten.
Wenn der µC in einem Versuchsaufbau steckt ist ein 6-poliger ISP
Anschluss mit verbaut. Daher kann ich mit dem DIAMEX ALL-AVR nur über
AtmelStudio den Mikrocontroller bespielen.
Philipp L. schrieb: > Nachdem die Tests mit dieser Platine > durchgeführt worden sind werden die µC einfach wieder zu den anderen > gelegt und man weis nicht mehr welche mit Bootloader sind und welche > nicht. Also ist das ein organisatorisches Problem. Entweder ihr macht zwei Boxen für zurückgebene µC: 1. mit Bootloader 2. ohne Bootloader bzw. "weiß nicht" Oder ihr verpflichtet alle diejenigen Kollegen, die einen µC ohne Bootloader verwendet haben, euren Standard-Bootloader vor dem zurücklegen des µC wieder aufzuspielen. Das ist allemal besser, als sie dazu zu zwingen, den Bootloader immer an Bord zu haben und damit 2KB Flash zu vergeuden.
Indem man das Löschen vor dem Beschreiben sperrt. Anschließend das EEPROM "selektiv löschen", indem man es mit einem file aus lauter FFs (Einsen) beschreibt.
Peter R. schrieb: > Anschließend das > EEPROM "selektiv löschen", indem man es mit einem file aus lauter FFs > (Einsen) beschreibt. Und das funktioniert? Ich dachte meistens kommen die 1en durchs löschen und schreiben kann man eigentlich nur 0en. (oder umgekehrt)
Volker S. schrieb: > Peter R. schrieb: >> Anschließend das >> EEPROM "selektiv löschen", indem man es mit einem file aus lauter FFs >> (Einsen) beschreibt. > > Und das funktioniert? Ich dachte meistens kommen die 1en durchs löschen > und schreiben kann man eigentlich nur 0en. (oder umgekehrt) Korrekt, man kann in ein Atmel AVR µC EEprom nur eine "0" schreiben. Das "Andere" nennt man einen Löschvorgang.
Karl M. schrieb: > Das "Andere" nennt man einen Löschvorgang. Also zurück zum Thema. Einen Controller der einen Bootloader verwenden kann, den kann man auch selektiv löschen. Nur Schreib-Lese-Schutz Konfigurationen können nicht selektiv gelöscht werden. Macht ja auch Sinn. In der IDE muss man auch irgendwo einstellen können welche Bereiche überschrieben werden dürfen. Warum man allerdings überhaupt während der Entwicklung einen Bootloader verwenden will, wenn man auch einen Programmer/Debugger hat, erschließt sich mir nicht ;-)
Volker S. schrieb: > Also zurück zum Thema. Einen Controller der einen Bootloader verwenden > kann, den kann man auch selektiv löschen. > Nur Schreib-Lese-Schutz Konfigurationen können nicht selektiv gelöscht > werden. Macht ja auch Sinn. > In der IDE muss man auch irgendwo einstellen können welche Bereiche > überschrieben werden dürfen. Du kannst uns sicherlich auch sagen, wo man das in der IDE einstellt und das im Datenblatt dokumentiert ist.
Volker S. schrieb: > In der IDE muss man auch irgendwo einstellen können welche Bereiche > überschrieben werden dürfen. Du hast dir das ISP Protokoll angesehen und kannst uns die Befehle verraten? Oder worauf gründet sich deine Erkenntnis?
Volker S. schrieb: > zurück zum Thema. Einen Controller der einen Bootloader verwenden > kann, den kann man auch selektiv löschen. Magst du diese merkwürdige Behauptung auch irgendwie begründen? Am besten zeigst du mal die Stelle aus dem Datenblatt des ATmega328 (um genau den geht es, siehe Eröffnungspost) wo gezeigt wird wie man den Flash über das ISP-Protokoll selektiv löscht. Ach, das geht nicht? Na sowas. Aber Hauptsache du hast was gesagt.
Mein grosses V. schrieb: > Volker S. schrieb: >> In der IDE muss man auch irgendwo einstellen können welche Bereiche >> überschrieben werden dürfen. > > Du kannst uns sicherlich auch sagen, wo man das in der IDE einstellt und > das im Datenblatt dokumentiert ist. ... Sorry Leute, hätte ich doch nur das "sollte" gelassen ;-) (sinnvoll wäre es ja schon und bei PICs und MPLABX ist es ganz einfach siehe Bild) Aber ihr habt völlig recht mit Atmel Controllern kenne ich mich gar nicht aus. Wollte ich vor kurzem zwar testen, bin aber gescheitert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.