Hallo Kollegen, ich bin auf der Suche nach einem Flashbootloader der über die TWI-Schnittstelle läuft. Soll auf dem ATXMega64A3 als Slave laufen. Mir wäre es sehr recht wenn es was fertiges von Atmel wäre. Auf meiner Suche bin ich auf das Appnote: AVR1327 gestoßen. Leider ist dieser Bootloader mit den Tools von IAR erstellt worden. Kennt jemand noch andere Alternativen oder hat jemand den oben erwähnten Bootloader im Einsatz? Danke und Gruß, Schorsch.
IAR ist bis 4kb kostenlos (bei Avr) bei dem Atmel Flip Bootloader ist es ähnlich, dort habe ich IAR und Flip schon erfolgreich verwendet...
Hallo Leute, jetzt hab ich mich doch entschloßen den Bootloader aus dem oben erwähnten AppNote zu verwenden und an meinen µC anzupassen. Ich habe das Projetk geladen und mit der 4kByte Version von IAR öffnen können. Leider bekomme ich beim Linken folgende Fehlermeldung die ich nicht zuordnen kann: Fatal Error[e163]: The command line symbol "_..X_FLASH_END" in -D_..X_FLASH_CODE_END=_..X_FLASH_END is not defined. Im Linkerfile und in den Optionen ist das Symbol "..X_FLASH_CODE_END" gar nicht zu finden. Kann mir jemand mal auf die Sprünge helfen? Im Linkerfile wird der Flashbereich wie folgt definiert: -D_..X_INTVEC_SIZE=0 // 4 bytes * 94 vectors -D_..X_APPLICATION_SECTION_START=4000 // xmega16D4 0x4000 BYTE starting address -D_..X_APPLICATION_SECTION_SIZE=1000 -D_..X_APPLICATION_START=(_..X_APPLICATION_SECTION_START+_..X_INTVEC_SIZ E) -D_..X_APPLICATION_END=(_..X_APPLICATION_SECTION_START+_..X_APPLICATION_ SECTION_SIZE-1) Meiner Meinung nach soweit in Ordnung. Aber der Linker scheint hier was anderes zu wollen. Danke und Gruß, Schorsch.
Hallo Leute, so ich habs jetzt hinbekommen daß der Linker zufrieden ist. Ich habe folgende Zeile hinzugefügt: -D_..X_FLASH_END=(_..X_APPLICATION_SECTION_START+_..X_APPLICATION_SECTIO N_SIZE-1) Jetzt wird zwar gelinkt aber ich kann nicht debuggen. Ich habe den JTACICE3. Ich kann zwar auf den µC zugreife Fusebits setzen und den Flash löschen usw. aber beim Debuggen wird mir folgende Fehlermeldung ausgegeben: Wed May 22, 2013 09:29:43: Failed to load debugee: ...\AVR1327\AVR1327-code\Debug\Exe\ATxmega32A4.dbg Diese Datei wird vom Compiler aber automatisch angelegt. Kennt sich jemand hier aus? Danke und Gruß, Schorsch.
Moin Schorsch ich hatte ein ähnliches Problem und es waren unterschiedliche Pfade. Schau bitte noch mal ob die Datei wirklich an der passenden stelle liegt / der debugger wirklich an der richtigen Stelle sucht ;-) Grüße Frank
Hi, der Pfad stimmt soweit. Ich hab jetzt auch mal die Verzeichnissstruktur geändert. Damit diese mal etwas kürzer ist. Ich verwende keine Sonderzeichen oder Leerzeichen. Im Anhang ist ein Screenshot des PopUps zu sehen. Die Datei wird ja auch generiert. Ich hab diese auch mal gelöscht damit die neu angelegt wird. Aber irgendwas passt da nicht so ganz. Ich muß auch dazu sagen dass ich den Samplecode für den Bootloader ja an den XMega64 versucht habe anzupassen. Sprich Linkerfile die Adressen richtig gesetzt und unter Optionen den entsprechenden µC ausgewählt. Hat jemand noch ne Idee? Gruß, Schorsch.
Hallo Leute, ich habs hinbekommen daß der Bootloader compiliert. Mir ist allerdings aufgefallen daß der Bootloader nicht vollständig ist. Dort fehlt einiges an code. z.B werden die Commandos nicht weiter gegeben. Hab dies aber korrigiert. Jetzt hab ich das Problem daß zwar das Löschen vom Flash soweit funktioniert aber das Schreiben nicht. Der Assemblercode sieht zwar soweit ok aus aber im Flash wird nicht abgelegt. Hat jemand den bootlaoder in Verwendung und kann mir weiterhelfen? Danke. Gruß, Georg.
Hallo Kollegen, ich habe mir jetzt noch die Appnote "Atmel AVR1622" angeschaut. Dort sind genau die gleichen Flashalgorithmen hinterlegt die ich auch verwende. Hat mir jemand ev. ein Beispiel aus seinem Bootloader? Vielleicht vergesse ich einfach was. Lockbits sind nicht gesetzt. Das Löschen funktioniert. Nur das Schreiben scheint keine Auswirkung zu haben. Die Routinen sind, verglichen mit dem Datenblatt, in Ordnung. Gruß, Georg.
Hallo Kollegen, ich bins wieder. Ich habs noch nicht hinbekommen in eine Flashpage was zu schreiben. Löschen geht ja... nur Schreiben nicht. Kennt sich jemand mit spm aus und kann mich etwas unterstützen? Folgendes führe ich aus: SP_LoadFlashWord(page_address,0x1234); SP_EraseWriteApplicationPage(page_address); SP_WaitForSPM(); Aus dem Treiber von Atmel: SP_CommonSPM: movw ZH:ZL, r17:r16 ; Load R17:R16 into Z. sts NVM_CMD, r20 ; Load prepared command into NVM Command register. ldi r16, CCP_SPM_gc ; Prepare Protect SPM signature in R16. sts CCP, r16 ; Enable SPM operation (this disables interrupts for 4 cycles). spm ; Self-program. out RAMPZ, r23 ret ENDMOD SP_LoadFlashWord: in r23, RAMPZ ; Save RAMPZ, which is restored in SP_CommonSPM. movw r1:r0, r19:r18 ; Prepare flash word in R1:R0. ldi r20, NVM_CMD_LOAD_FLASH_BUFFER_gc ; Prepare NVM command in R20. jmp SP_CommonSPM ; Jump to common SPM code. ENDMOD SP_EraseWriteApplicationPage: in r23, RAMPZ ; Save RAMPZ, which is restored in SP_CommonSPM. out RAMPZ, r18 ldi r20, NVM_CMD_ERASE_WRITE_APP_PAGE_gc ; Prepare NVM command in R20. jmp SP_CommonSPM ; Jump to common SPM code. ENDMOD SP_WaitForSPM: lds r16, NVM_STATUS ; Load the NVM Status register. sbrc r16, NVM_NVMBUSY_bp ; Check if bit is cleared. rjmp SP_WaitForSPM ; Repeat check if bit is not cleared. clr r16 sts NVM_CMD, r16 ; Clear up command register to NO_OPERATION. ret ENDMOD Für mich sieht es ok aus. Habs auch noch mal in den Datenblättern nachgelesen. Was könnte ich ev. noch in der Konfig o.ä. vergessen haben? Danke und Gruß, Schorschi.
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.