Hallo Leute, ich bastel grad mit meinem Olimex SAM7-P256 devel board. Installiert ist die yagarto Umgebung mit Eclipse. Soweit läuft alles wunderbar. Flashen und debuggen funktioniert (eigentlich) einwandfrei ... Jetzt zum eigentlich: Ich hab mir auf der Seite von Martin Thomas das SD/MMC Karten Beispiel runtergeladen um meine SD - Karte mal zu beschreiben. Er nutzt zur Initialisierung von verschiedenen Sachen die in der "lib_AT91SAM7S256.h" definierten Funktionen. Jetzt hab ich mir die Datei kopiert und in mein Eclipse - Projekt hinzugefügt und hab die Datei per #include eingebunden, mit dem Effekt dass Fehler beim kompiliern aufgetreten sind. Grund: Meine AT91AM7S256.h und die von Martin Thomas sind unterschiedlich. Seine ist neuer, also hab ich Seine verwendet. Danach klappt auch das kompilieren. Wunderbar. Jetzt flashe ich den Code (anbei) und bekomme dabei folgendes in der Console angezeigt: **** Build of configuration Default for project MMC_FLASH **** make program Flash Programming with OpenOCD... 'I:\Programme\ARM\openocd\bin\'openocd-ftd2xx.exe -f at91sam7s256_flash_program.cfg Open On-Chip Debugger (2008-06-19 19:00) svn: 717 URL: http://svn.berlios.de/svnroot/repos/openocd/trunk Info: options.c:50 configuration_output_handler(): jtag_speed: 0, 0 Info: options.c:50 configuration_output_handler(): Open On-Chip Debugger (2008-06-19 19:00) svn: 717 Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x3f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3) Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x3f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3) Info: target.c:237 target_init_handler(): executing reset script 'script.ocd' Info: options.c:50 configuration_output_handler(): core state: ARM Info: options.c:50 configuration_output_handler(): wrote 1660 byte from file main.bin in 0.265625s (6.102941 kb/s) Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x3f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3) Warning: arm7_9_common.c:743 arm7_9_poll(): DBGACK set, but the target did not end up in the halted stated 1 User: target.c:436 target_process_reset(): Timed out waiting for halt after reset Flash Programming Finished. Passt. Wenn ich jetzt jedoch nochmals flashen möchte, dann bekomme ich folgenden Output: **** Build of configuration Default for project MMC_FLASH **** make program Flash Programming with OpenOCD... 'I:\Programme\ARM\openocd\bin\'openocd-ftd2xx.exe -f at91sam7s256_flash_program.cfg Open On-Chip Debugger (2008-06-19 19:00) svn: 717 URL: http://svn.berlios.de/svnroot/repos/openocd/trunk Info: options.c:50 configuration_output_handler(): jtag_speed: 0, 0 Info: options.c:50 configuration_output_handler(): Open On-Chip Debugger (2008-06-19 19:00) svn: 717 Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x3f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3) Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x3f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3) Info: target.c:237 target_init_handler(): executing reset script 'script.ocd' Info: options.c:50 configuration_output_handler(): core state: ARM Error: arm7_9_common.c:581 arm7_9_execute_sys_speed(): timeout waiting for SYSCOMP & DBGACK, last DBG_STATUS: 0 Error: at91sam7.c:268 at91sam7_wait_status_busy(): status register: 0x20005 Error: at91sam7.c:270 at91sam7_wait_status_busy(): Lock Error Bit Detected, Operation Abort Error: flash.c:103 flash_driver_write(): error writing to flash at address 0x00100000 at offset 0x00000000 (-902) Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x3f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3) Warning: arm7_9_common.c:743 arm7_9_poll(): DBGACK set, but the target did not end up in the halted stated 1 User: target.c:436 target_process_reset(): Timed out waiting for halt after reset Flash Programming Finished. Und jetzt kommt das seltsame: Wenn ich die Zeile: #include "lib_AT91SAM7S256.h" auskommentiere and dann neu kompiliere dann funktioniert das flashen auch wieder. Wäre klasse, wenn mir jemand helfen könnte bzw. weiss woran das liegt ... Beste Grüße, Michael
Kleiner Zusatz noch: Wenn ich das Programm ohne das oben genannte #include kompiliere und dann flashe und dann den Kommentar entferne, neu kompiliere und dann wieder flashe scheint es zu funktionieren ... hier der output der Konsole: **** Build of configuration Default for project MMC_FLASH **** make program Flash Programming with OpenOCD... 'I:\Programme\ARM\openocd\bin\'openocd-ftd2xx.exe -f at91sam7s256_flash_program.cfg Open On-Chip Debugger (2008-06-19 19:00) svn: 717 URL: http://svn.berlios.de/svnroot/repos/openocd/trunk Info: options.c:50 configuration_output_handler(): jtag_speed: 0, 0 Info: options.c:50 configuration_output_handler(): Open On-Chip Debugger (2008-06-19 19:00) svn: 717 Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x3f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3) Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x3f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3) Info: target.c:237 target_init_handler(): executing reset script 'script.ocd' Info: options.c:50 configuration_output_handler(): core state: ARM Warning: arm7_9_common.c:2120 arm7_9_write_memory(): memory write caused data abort (address: 0x00100600, size: 0x4, count: 0x1f) Info: options.c:50 configuration_output_handler(): wrote 1660 byte from file main.bin in 0.265625s (6.102941 kb/s) Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x3f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3) Warning: arm7_9_common.c:743 arm7_9_poll(): DBGACK set, but the target did not end up in the halted stated 1 User: target.c:436 target_process_reset(): Timed out waiting for halt after reset Flash Programming Finished. Aber ein weiteres programmieren danach funktioniert nicht mehr ... Wäre klasse, wenn jemand eine Idee hat ... Beste Grüße, Michael
So Problem ist gefixed. Für alle die mal ein ähnliches Problem haben sollten hier die Lösung: in der lib_AT91SAM7S256.h werden Funktionen wie folgt implementiert: __inline xxx func (type param) { ... } das Problem ist das __inline wenn der der gcc (arm - Version) als Compiler verwendet wird. wenn man direkt nach folgenden Zeilen #ifndef lib_AT91SAM7S256_H #define lib_AT91SAM7S256_H die folgende Zeile einfügt: #define __inline static inline dann klappts. Danke an dieser Stelle an Martin Thomas für den Tipp (in einem anderen Forum gefunden). Grüße, Michael
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.