Hi, ich versuche schon seit Ewigkeiten auf ein AT91SAM7A3-EK irgendwie Code zu bekommen. Ich bekomme nicht mal die Beispiele von atmel drauf, von eigenen ganz zu schweigen. Die Suche hier im Forum bringt mich auch nicht weiter. Wenn ich Beispielsweise das PWM-Beispiel von Atmel in IAR lade und dann per Debugger ausführe passiert rein gar nichts. Laut der Beschreibung sollten LEDs auf dem Board pulsieren. Da das aber nicht passiert kann ich nicht mal nachvollziehen ob das Programm überhaupt auf dem mC läuft. Ich habe versucht die Dateien sowohl per USB als auch per SAM-ICE mit SAM-BA auf das Teil zu laden. Dabei habe ich dann wieder das Problem dass die *.bin Dateien die mir der IAR Compiler baut alle genau 1MB groß sind und SAM-BA mir das ganze mit einer "Memory Overflow"-Meldung quittiert. WIE lade ich denn die Beispielprogramm WO hin? Flash? SRAM? Kann mir jemand ne Starthilfe geben, wie ich eines der Bespiele auf den Controller bekomme? Bin hier am Verzweifeln. Bisher hat mich kein einziges Dokument weiter gebracht.
Du solltest die Programme in den Flash laden, und zwar den externen Flash. Dazu musst du im allgemeinen wissen, an welcher Adresse der Flash eingeblendet wird. Das siehst du im Linker File oder startup Code deines Projektes.
Da dein bin File 1MB groß ist, bin ich jetzt mal davon ausgegangen, dass du externes Flash hast. Hast du externes oder willst du nur den internen Flash benutzen?
So ... also ich hab nochmal nachgeschaut. Wenn ich die Beispiele runterlade von ATMEL, dann sind die kompilierten bin Dateien da schon dabei. Wenn ich eine dieser Dateien nehme und in den Flash schreibe klappt alles Wunderbar. Nur wenn ich das Projekt in IAR nochmal neu bauen lasse ist die Datei dann viel zu groß. Liegt das irgenwie an den Einstellungen von IAR? Hab nichts gefunden. Kann jemand damit was anfangen?
Ja es liegt an den Einstellungen, nämlich der Flash Größe und der Flash Adresse. Überprüf die mal.
naja, das sollte ja alles in der icf datei stehen oder?
1 | /*###ICF### Section handled by ICF editor, don't touch! ****/ |
2 | /*-Editor annotation file-*/ |
3 | /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ |
4 | /*-Memory Regions-*/ |
5 | define symbol __ICFEDIT_region_ROM_start__ = 0x100000; |
6 | define symbol __ICFEDIT_region_ROM_end__ = 0x13FFFF; |
7 | define symbol __ICFEDIT_region_RAM_start__ = 0x200000; |
8 | define symbol __ICFEDIT_region_RAM_end__ = 0x207FFF; |
9 | /*-Sizes-*/ |
10 | define symbol __ICFEDIT_size_startup__ = 0x100; |
11 | define symbol __ICFEDIT_size_vectors__ = 0x100; |
12 | define symbol __ICFEDIT_size_cstack__ = 0x1000; |
13 | define symbol __ICFEDIT_size_svcstack__ = 0x60; |
14 | define symbol __ICFEDIT_size_irqstack__ = 0x60; |
15 | define symbol __ICFEDIT_size_heap__ = 0x0; |
16 | /*-Exports-*/ |
17 | export symbol __ICFEDIT_region_ROM_start__; |
18 | export symbol __ICFEDIT_region_ROM_end__; |
19 | export symbol __ICFEDIT_region_RAM_start__; |
20 | export symbol __ICFEDIT_region_RAM_end__; |
21 | export symbol __ICFEDIT_size_startup__; |
22 | export symbol __ICFEDIT_size_vectors__; |
23 | export symbol __ICFEDIT_size_cstack__; |
24 | export symbol __ICFEDIT_size_svcstack__; |
25 | export symbol __ICFEDIT_size_irqstack__; |
26 | export symbol __ICFEDIT_size_heap__; |
27 | /**** End of ICF editor section. ###ICF###*/ |
28 | |
29 | define memory mem with size = 4G; |
30 | define region STA_region = mem:[from __ICFEDIT_region_ROM_start__ size __ICFEDIT_size_startup__]; |
31 | define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__+__ICFEDIT_size_startup__ to __ICFEDIT_region_ROM_end__]; |
32 | define region VEC_region = mem:[from __ICFEDIT_region_RAM_start__ size __ICFEDIT_size_vectors__]; |
33 | define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM_end__]; |
34 | |
35 | define block CSTACK with alignment = 4, size = __ICFEDIT_size_cstack__ { }; |
36 | define block SVC_STACK with alignment = 4, size = __ICFEDIT_size_svcstack__ { }; |
37 | define block IRQ_STACK with alignment = 4, size = __ICFEDIT_size_irqstack__ { }; |
38 | define block HEAP with alignment = 4, size = __ICFEDIT_size_heap__ { }; |
39 | |
40 | initialize by copy { readwrite }; |
41 | initialize by copy { section .vectors }; |
42 | do not initialize { section .noinit }; |
43 | |
44 | place in STA_region { section .cstartup }; |
45 | place in ROM_region { readonly }; |
46 | place in VEC_region { section .vectors }; |
47 | place in RAM_region { readwrite, block IRQ_STACK, block SVC_STACK, block CSTACK, block HEAP }; |
define symbol _ICFEDIT_region_ROM_start_ = 0x100000; define symbol _ICFEDIT_region_ROM_end_ = 0x13FFFF; wenn man das mal voneinander abzieht und umrechnet kommt man doch bei 256kB raus oder? Das stimmt mit dem datenblatt überein.
Also das Problem hatte ich auch schon, mit der neuen Embedded Workbench 5.0 Kickstart Edition von IAR ist es allerdings bei den Beispiel nicht mehr aufgetreten.
hallo, in den beispielen der software packages v1.4 war ein fehler. das modul board_cstartup_iar.s muss geändert werden: die folgende anweisung ist hinzuzufügen: __iar_init$$done: // neue anweisung resetVector: wie schon erwähnt sind die iar beispiele korrekt. gruss gerhard
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.