Hallo Zusammen,
nachdem ich lange am suchen und vergleichen war habe ich mich für das
SAM7-EX256 Board von Olimex entschieden. Im Moment bin ich auf der Suche
nach einem Minimalbeispiel für das Board.
Bitte versteht mich nicht falsch. Ich habe schon einige Erfahrung mit
uCs, allerdings nur mit einem C166-Board unter Keil uVision (habe daher
Null Erfahrung mit GCC, Makefiles, Linking).
Für Olimex-Board würde ich allerdings gerne WinArm, Yagarto und für den
Anfang gerne die Kommandozeile verwenden. Doch leider suche ich mir seit
Stunden die Finger wund nach einem wirklich minimalem Ausgangpunkt für
das Board.
- Das Beispiel von Olimex kann nicht mit GCC kompiliert werden (keine
Angabe über die verwendete IDE, kein Makefile, keine Informationen, wie
es gelinkt werden soll
- Die Beispiele von Yagarto ("Using Open Source Tools for AT91SAM7S
Cross Development revision C" von der Atmel-Seite)
- und die Beispiele von WinArm beziehen sich leider nicht auf das Board
und ich weiß nicht, an welcher Stelle ich eigentlich anfangen müsste, um
die Projekte anzupassen.
Was suche ich also genau?
Ein Minimalbeispiel bis hin zu:
Da weiß ich überhaupt nicht, was zu tun wäre.
Ethernut installiert, die Änderungen aus dem Wikiartikel eingetragen
erhalte ich das hier auf der Ausgabe:
1
13:05:55: Nut/OS Configurator Version 1.3.1
2
13:05:55: Linked to wxWidgets 2.6.3
3
13:05:55: Running on Windows XP (build 2600, Service Pack 2)
Also, wenn du dich zum 1. mal in die Welt von ARM bewegst ;-), gibt es
ein sehr gutes Buch, dass auch in pdf-Form kostenlos erhältlich ist (in
einer druckbaren Version ist es nicht mehr kostenlos - gebunden kostet
es noch mal etwas mehr). Geht zwar nicht um nen Atmel-Controller, wie
bei dir, aber ist sehr zu empfehlen:
Das Hitex-Buch über ARM-7 based uController von Philips findest du hier.
Da dein Sam7 ja auch ein ARM7 ist, ist es meiner Meinung nach ein Blick
wert.
http://www.cecs.csulb.edu/~brewer/347/lpc-ARM-book_srn.pdf
Die beiden Programme, die im Shop aufgelistet
sind(http://www.olimex.com/dev/sam7-ex256.html), wurden mit dem IAR
Workbench erstellt. Doch da tauchen gleich die nächsten Probleme auf.
Bei dem ersten Projekt ist die erforderliche Headerdatei nicht im
Verzeichnis, und wenn ich mir die entsprechende besorge, bricht der
Compiler immer noch mit einer Fehlermeldung ab.
Das RTOS-Projekt lässt sich auch nicht fehlerfrei kompilieren.
Hat denn niemend einen lauffähigen Startpunkt für das Board?
Im Anhang findest du die lwIP_Demo_Rowley_ARM7 von FreeRTOS, angepasst
für das Olimex-Board. FreeRTOS 4.4.0 runterladen, Datei aus dem Anhang
in den Demo-Ordner entpacken und make eingeben.
Ok, das RTOS-Projekt lässt sich fehlerfrei kompilieren.
Bei Atmel habe ich die Application Note "Getting Started with AT91SAM7X
Microcontrollers" gefunden.
Ich versuche mal beides so zu verwurschteln, dass mein gewünschtes
Startprojekt dabei herauskommt.
Danke so weit mal.
So,
ich habe die Application Note "Getting Started with AT91SAM7X
Microcontrollers" von Atmel so weit abgeändert, dass nur noch das
nötigste/sinnvollste darin ist.
Wer will kann hier natürlich seinen Senf dazugeben.
Gruß
Hi,
ich habe ein Problem ich bekomme es irgendwie nicht hin das das
angepasste LWIP Demo mit FreeRTOS läuft.
das Minimal beispiel läuft ohne probleme und auch das von der Olmex
seite mit dem LCD per tasten an und ausschalten läuft aber wenn ich das
LWIP demo aufs Board Flashe bekomme ich keine Netzwerk verbindung die
LED´s am RJ45 Port blinken nur.
ich setzte die Entwicklungs umgebung ein die beim Olimex ARM-USB-OCD
dabei war.
mein Board ist Rev.B. hat jemand einen Tipp für mich wie ich es zum
laufen bekomme ??
Gruß
Dennis
Also, nach zahlreichen AVR Projekten habe auch ich mir so ein Olimex
SAM7-EX256 zugelegt. Es ist nun bereits der 3. Anlauf auch nur
irgendetwas was damit zu tun hat zum laufen zu bekommen, ich hatte es
jeweils nachdem nach Stunden nicht mal ein Primitivprojekt dafür erzeugt
werden konnte abgeblasen. 1000 Webseiten mit 1000 Codeschnipseln etc, wo
nix funktioniert oder zusammenpasst, auf der mitgelieferten CD zu dem
Board sind nur Codebeispiele für die LPC Dinger drauf... kotz. Es ist
wirklich deprimierend!
Also der 3. Anlauf sah bisher folgendermaßen aus:
- WinARM installiert (und das PATH Gedöne gesetzt)
- Das Minimalbeispiel heruntergeladen:
http://www.mikrocontroller.net/attachment/25724/Olimex_SAM7_EX256_StartupMinimal_2007.08.17.zip
Verzeichnis von C:\temp
20.11.2007 20:07 <DIR> .
20.11.2007 20:07 <DIR> ..
17.08.2007 20:11 8.562 cstartup.S
17.08.2007 20:11 623 elf32-littlearm.lds
20.11.2007 20:07 <DIR> include
17.08.2007 20:11 7.502 lowlevel.c
17.08.2007 20:11 6.795 main.c
20.11.2007 22:02 3.865 Makefile
17.08.2007 20:11 85 prog_flash.bat
17.08.2007 20:11 655 prog_flash.tcl
17.08.2007 20:11 84 prog_sram.bat
17.08.2007 20:11 460 prog_sram.tcl
9 Datei(en) 28.631 Bytes
3 Verzeichnis(se), 44.071.317.504 Bytes frei
C:\temp>make
del /F *.o *.bin *.elf *.map
/usr/bin/sh: del: command not found
make: *** [clean] Error 127
Hm, woher habe ich das nur gewusst dass das nicht hinhaut ?
Also, nächster Versuch. Das Projekt hier runtergeladen.
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/at91sam7s_e1_20060825.zip
make, und siehe da, es wird compiliert und gelinkt, Wahnsinn, ich kann
es nicht glauben, unfassbar. Jetzt habe ich ein absolut Nutzloses
Compilat, weil ja falscher Controller. Die Headerdatei für den 256er ARM
ist sonstwo.
Na gut, erstmal zur Seite legen...
So, nächster Versuch: Ich hole mir RTOS, gehe auf den Demoordner und
versuche einfach mal das Projekt
C:\FreeRTOS\Demo\ARM7_AT91FR40008_GCC
zu kompilieren. Und, uuuuuund ? klaro, geht natürlich nicht:
C:\FreeRTOS\Demo\ARM7_AT91FR40008_GCC>make
arm-elf-gcc -c -Wall -D -D GCC_AT91FR40008 -I. -I../../Source/include
-I../Common/include -mcpu=arm7tdmi -T -Wcast-align -fomit-fram
e-pointer ../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c -o
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.o
arm-elf-gcc: GCC_AT91FR40008: No such file or directory
<command line>:1:1: error: macro names must be identifiers
In file included from ../../Source/include/FreeRTOS.h:53,
from
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:53:
../../Source/include/portable.h:222: error: expected '=', ',', ';',
'asm' or '__attribute__' before '*' token
../../Source/include/portable.h:235: error: expected '=', ',', ';',
'asm' or '__attribute__' before 'xPortStartScheduler'
In file included from ../../Source/include/task.h:47,
from
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:54:
../../Source/include/list.h:83: error: expected specifier-qualifier-list
before 'portTickType'
../../Source/include/list.h:93: error: expected specifier-qualifier-list
before 'portTickType'
../../Source/include/list.h:104: error: expected ':', ',', ';', '}' or
'__attribute__' before 'uxNumberOfItems'
In file included from
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:54:
../../Source/include/task.h:75: error: expected specifier-qualifier-list
before 'portBASE_TYPE'
../../Source/include/task.h:217: error: expected '=', ',', ';', 'asm' or
'__attribute__' before 'xTaskCreate'
../../Source/include/task.h:312: error: expected ')' before
'xTicksToDelay'
../../Source/include/task.h:371: error: expected ')' before '*' token
../../Source/include/task.h:418: error: expected '=', ',', ';', 'asm' or
'__attribute__' before 'uxTaskPriorityGet'
../../Source/include/task.h:460: error: expected ';', ',' or ')' before
'uxNewPriority'
../../Source/include/task.h:580: error: expected '=', ',', ';', 'asm' or
'__attribute__' before 'xTaskResumeFromISR'
../../Source/include/task.h:770: error: expected '=', ',', ';', 'asm' or
'__attribute__' before 'xTaskResumeAll'
../../Source/include/task.h:786: error: expected '=', ',', ';', 'asm' or
'__attribute__' before 'xTaskGetTickCount'
../../Source/include/task.h:800: error: expected '=', ',', ';', 'asm' or
'__attribute__' before 'uxTaskGetNumberOfTasks'
../../Source/include/task.h:827: error: expected ';', ',' or ')' before
'*' token
../../Source/include/task.h:848: error: expected ';', ',' or ')' before
'*' token
../../Source/include/task.h:861: error: expected '=', ',', ';', 'asm' or
'__attribute__' before 'ulTaskEndTrace'
../../Source/include/task.h:901: error: expected declaration specifiers
or '...' before 'portTickType'
../../Source/include/task.h:918: error: expected '=', ',', ';', 'asm' or
'__attribute__' before 'xTaskRemoveFromEventList'
../../Source/include/task.h:957: error: expected '=', ',', ';', 'asm' or
'__attribute__' before 'xTaskCheckForTimeOut'
../../Source/include/task.h:969: error: expected '=', ',', ';', 'asm' or
'__attribute__' before 'xTaskGetSchedulerState'
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:61: error: expected
'=', ',', ';', 'asm' or '__attribute__' before 'ulCriticalNest
ing'
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c: In function
'vPortISRStartFirstTask':
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:79: warning:
implicit declaration of function 'portRESTORE_CONTEXT'
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c: In function
'vPortYieldProcessor':
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:99: warning:
implicit declaration of function 'portSAVE_CONTEXT'
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c: In function
'vPreemptiveTick':
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:144: error:
expected '=', ',', ';', 'asm' or '__attribute__' before 'ulDummy'
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:144: error:
'ulDummy' undeclared (first use in this function)
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:144: error: (Each
undeclared identifier is reported only once
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:144: error: for
each function it appears in.)
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:147: error:
'portTIMER_REG_BASE_PTR' undeclared (first use in this function)
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c: In function
'vPortEnterCritical':
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:216: error:
'ulCriticalNesting' undeclared (first use in this function)
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c: In function
'vPortExitCritical':
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:221: error:
'ulCriticalNesting' undeclared (first use in this function)
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:221: error:
expected ')' before 'portLONG'
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c:228: error:
expected ')' before 'portLONG'
make: *** [../../Source/portable/GCC/ARM7_AT91FR40008/portISR.o] Error 1
Also, nochmal ein Projekt von mthomas gezogen, der ehrenwerte Mann weis
offenbar was er macht, ist fähig seine Sachen zu dokumentieren (obgleich
mich das alles gerade noch erschlägt) und stellt keine unausgegorene
Grütze zum download bereit. Aaaaalso:
AT91SAM7S256 and FreeRTOS Example application
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/at91sam7s256_FreeRTOS_Spaude_20060925.zip
make: Ja Wahnsinn, auch das wird erzeugt, ich ejakuliere!
So, wie ich das Beispiel nun so abändere dass ich eine dämliche LED auf
dem Board blinken lasse kann (ach herje, ist ja keine drauf. Na
vielleicht dann das LCD Backlight oder sowas) werde ich wohl irgendwie
herausbekommen.
So, wenn ich das auf die Reihe bekommen habe, habe ich ein wohl "Dings",
bei dem einen Projekt war das main.hex, bei dem anderen main.bin, das
ich irgendwie in diese schwarze Plastikdings auf der Platine kriegen
muss. Normalerweise würde ich sagen das .bin binary ist, und .hex Intel
Hex, zumindest war das mein WinAVR so, aber mir düngt... egal
Nun habe ich auch noch von Olimex einen USB Tiny JTAG Programmer. Wie
kann ich nun meinem Rechner befehlen dass er mir mein hex/bin mit Hilfe
dieses Gerätes auf mein Board bekommt ?
So, erstmal genug für heute, sorry für den langen "aggresiven" zynischen
Inhalt, aber meine Nerven sind mittlerweile etwas strapaziert...
Vielleicht erbarmt sich ja trotzdem jemand mir ein paar Tips zu geben.
Einen 4. Anlauf werde ich wohl aus meiner momentanen emotionalen
Verfassung heraus verhindern, indem das Board als Weitwurfsportartikel
seinen Einsatzzweck ändern wird.
Grüße
(sehr) Enttäuschter
> So, erstmal genug für heute, sorry für den langen "aggresiven" zynischen> Inhalt, aber meine Nerven sind mittlerweile etwas strapaziert...
Die gleichen Erfahrungen habe ich auch gemacht... Habe vorher mit AVRs
experimentiert und die WinAVR Toolchain hat mir nie Probleme gemacht, da
man sich um das meiste nicht kümmern braucht.
Ich habe die Yagarto IDE installiert und bin enttäuscht wie
"zusammengebastelt" das ganze funktioniert (vor allem der Debugger).
Außerdem habe ich so meine Probleme ein vernünftiges Makefile zu
finden/bauen.
Einfaches runter laden und mal eben kompilieren ist meistens nicht drin.
Ich denke kommerzielle Toolchains hätten da große Vorteile.
Oder vielleicht liegt es auch einfach nur an Windows (bzw. die
Windows-User)...
Schau dir das an, da hast du drei verschiedene Beispielprojekte:
Olimex AT91SAM7X256-Board SAM7-EX256
Von denen hast du gerade mal eines ausprobiert, und bei der ersten
Kleinigkeit das Handtuch geschmissen:
> del /F *.o *.bin *.elf *.map> /usr/bin/sh: del: command not found
Was macht diese Zeile im Makefile? Wie könnte man sie korrigieren, oder
kann man sie vielleicht erstmal einfach auskommentieren? Wenn du solche
Fragen nicht beantworten kannst oder willst, dann brauchst du mit den
Open-Source-Tools (das nächste wäre OpenOCD) gar nicht erst weiter
machen. Kauf dir lieber Crossworks oder IAR, da geht das alles einfacher
- kostet dafür aber ein paar Euro.
Ich kann Marius Schmidt und Enttäuschter nur zu Stimmen, die
Dokumentation und die Wiki-Einträge hier und auch generell im Netz sind
das reinste Flickwerk, ein vernünftiges Tutorial wäre sicher mal
angebracht...
@Andreas Schwarz:
Wenn man mit make und dessen Aufbau noch nix zu tun hatte, dann lassen
Anfänger lieber mal die Finger von Änderungen. Außerdem weiß man als
Anfänger noch nicht mal wie man in make auskommentiert.
Als Anfänger kann man nur so gut sein wie sein Lehrer, Tutor bzw. die
Doku! Oder weshalb hat man sich z.B. in der Schule über die Lehrer
aufgeregt, meist nur weil sie den Stoff nicht Vernünftig vermitteln
konnten, oder?
Mich hält es übrigens immer noch davon ab mit den ARM anzufangen, ich
will mein Geld nicht unbedingt in den Sand setzen
@Andreas
So, bin inzwischen etwas "runtergekommen". Vielen Dank für den
"Seitenhieb", das hat mir wohl ganz gut getan ;-) Mit dem Kaufen von
Crossworks etc. hätte ich keine Probleme, neben Delphi, Eagle, Paradigm
C++ uvm. macht das das Kraut auch nicht mehr fett. Aber ich denke dass
selbst die die sich da durchgezwungen haben zugeben müssen dass das
ganze schon noch ziemlich unausgegoren und durcheinander ist, aber das
war ja bei WinAVR wohl auch mal so ähnlich. Naja, also mal weiter sehen.
Sollte diesmal die Gedult ausreichen werde ich, wenn es die Zeit
zulässt, ein neues "Getting startet..." schreiben, wäre auch nicht mein
erster Beitrag zu den Artikeln oder zur Codesammlung.
Bis dahin hoffe ich hier noch auf etwas Unterstützung.
Jedenfalls finde ich es für den Start am Schwierigsten den Überblick zu
wahren was was ist und was mit was zusammenarbeitet, weil das ganze
Zeugs auch recht durcheinander geschmissen ist.
Noch ein paar Kommentare:
>Was macht diese Zeile im Makefile? Wie könnte man sie korrigieren, oder>kann man sie vielleicht erstmal einfach auskommentieren?
Die soll eigentlich alle o/bin/elf/map Dateien löschen, so das alles
komplett neu erzeugt wird. Wenn man mal in seine eigenen
(funktionierenden) makefiles reinschaut kommt man drauf dass das mit
"rm" gehen könnte. Warum hier del benutzt wird weis ich nicht,
vielleicht anderes make ?
>Oder vielleicht liegt es auch einfach nur an Windows (bzw. die>Windows-User)...
Bitte keine Pauschalisierungen/Wertungen, sonst bricht hier wieder so
ein sinnbefreiter Glaubenskrieg aus.
Um noch eine konkrete Frage loszuwerden:
Womit kann ich mit meinem JTAG Tiny USB Apparat nun mein Comilat in den
ARM auf dem o.g. Board bringen ? Da gibt's warscheinlich wieder 95
Möglichkeiten, wie es bei AVR auch Programmer & Programmersoftware gibt,
aber ein Hinweis wie "Nimm Peng3000, das funktioniert mit Deinem
Programmer und funktioniert" würde gerade schon helfen.
E
Zunächstmal würde ich auch gleich mit RTOS und Pipapo anfangen, ein
neues Board bzw. eine neue Programmierumgebung zu testen :-))
Wie wär's mit "Hello World"?
Zum Zweiten sollte man sich schon mal etwas theoretisch mit den
Kontrollern befassen. Dann würde man merken, dass AT91SAM7S64 /S256
/X128 und /X256 prinzipiell schonmal registerkompatibel sind (bis auf
die Peripherie, die einzelne Kontroller nicht haben..).
Also können für einfache Tests die gleichen .h Dateien genommen werden.
Nur die Ports müssen umgebogen werden.
Habe für erste Versuche mit S256 bzw. X128 auch das S64.h File genommen.
Das Problem, dass sich die meisten "besseren" Demos nicht kompilieren
lassen, habe ich auch. Das liegt daran, dass die für Keil oder IAR
geschrieben wurden und deren Makefiles nicht ohne weiteres von GCC
kapiert werden.
Wegen "WinAVR ist einfach, aber Yagarto kompliziert":
Warum nimmst Du nicht WinARM. Verhält sich fast 1:1 wie WinAVR.
Zum Programmieren über JTAG gibts nur OpenOCD. Ist relativ einfach zu
bedienen. Allerdings benutze ich das nur zum Flashen, nicht als
Debugger.
>Das Problem, dass sich die meisten "besseren" Demos nicht kompilieren>lassen, habe ich auch. Das liegt daran, dass die für Keil oder IAR>geschrieben wurden und deren Makefiles nicht ohne weiteres von GCC>kapiert werden.
Wenn aber der Ordner in dem der Kack drin ist ".....GCC" heißt kann man
doch davon ausgehen dass da kein Keil oder IAR Gedöne drin ist. Oder
beschriftest du Deinen Chillistreuer mit "Puderzucker" ?
X
Es gibt viele verschiedene ARM-GCC-Toolchains, und gerade unter Windows
kann das Verhalten sehr unterschiedlich sein, je nachdem welche Tools in
welcher Version enthalten sind und womit sie kompiliert sind. Deshalb
kann es vorkommen dass man auch mal selber etwas anpassen muss.
> Wenn man mit make und dessen Aufbau noch nix zu tun hatte, dann lassen> Anfänger lieber mal die Finger von Änderungen. Außerdem weiß man als> Anfänger noch nicht mal wie man in make auskommentiert.
Wenn es daran schon scheitert, wie will der Anfänger mit komplexen
Dingen wie ARM-Interrupts fertigwerden? Dafür gibt es keine
Einsteiger-Tutorials.
> Als Anfänger kann man nur so gut sein wie sein Lehrer, Tutor bzw. die> Doku! Oder weshalb hat man sich z.B. in der Schule über die Lehrer> aufgeregt, meist nur weil sie den Stoff nicht Vernünftig vermitteln> konnten, oder?
Das hier ist keine Schule, du musst dir den Stoff selber beibringen.
>Das hier ist keine Schule, du musst dir den Stoff selber beibringen.
Das geht aber bei solchen Sachen auch nicht durch ausprobieren, sondern
durch lesen. Und was alles für ein unlogischer unausgegorener Kack zu
lesen ist macht die Sache auch nicht unbedingt einfacher.
Naja, ich kann auf jedenfall inzwischen schon mal das ganze Zeugs
kompilieren, u.a. dieses Minimalbeispiel. Und nun muss das ja wohl
irgendwie in das schwarze Ding auf dem Board.
Aaaaalso, nachdem ja in dem Minimalbeispielbatzen eine Batch Datei zum
hochladen dabei ist (Vermutung) schaut man da mal rein: "sam-ba". Gut,
googeln, scheint ein USB Bootloader für den ARM zu sein. Richtig ? Das
setzt voraus, dass man das Board via USB mit dem Rechner verbindet.
Also, Board mit dem Rechner verbinden: Pustekuchen, war ja wieder klar.
"USB Gerät wurde nicht erkannt". Das sagt Windows dann wenn ein USB
Gerät eingesteckt wird dass zum USB Host per Pull Widerstand sagt dass
ein Gerät angeschlossen wurde, aber das device ansonsten nichts macht.
Vermutlich ist auf dem Board kein USB Bootloader installiert; beim
einschalten zeigt das Display ein Bildchen und man kann mit den Tasten
ein paar Töne erzeugen (out-of-the-box von Olimex).
Also gut, wir haben uns ja genau dafür einen Tiny USB ARM Programmer
gekauft. Andreas hat mir ja schon angedroht dass man sich nach dem
Rumschlagen mit der Toolchain die Open OCD Geschichte kommt. Und das
klingt nicht lustig.
Also, der man von Heute googelt ja erstmal ne Runde, was natürlich bei
dem Thema zu noch größerer Verwirrung führt. Nun haben wir die "Fetzen"
WinARM (damit habe ich wohl alles compiliert bekommen) bei dem openocd
dabei ist, YAGARTO, den Kack der auf der CD ist die bei dem Board dabei
war (was ist das eigentlich alles ?! man installiert die CD, und auf dem
Rechner ist Eclipse + Zubehör, openocd (nochmal?!), und einen Tiny USB
JTAG rüberschiebe kasten.
Ach ja, wenn ich den JTAGTiny an das Board anschliesse startet die
Software auf dem Board nicht, LCD bleibt dunkel. Soll das so sein ?
So, die Frustrationsgrenze ist wieder fast überschritten, vielleicht
erbarmt sich ja jemand und gibt mir einen Fingerzeig wie's nun
weitergeht.
Dann noch ein paar klärende Fragen:
- Was unterscheidet sich an den Toolchains von WinARM und YAGARTO ?
- Welche Toolchain bringt die Olimex CD eigentlich mit ? Ist bestimmt
noch eine andere, was ist dann an der anders ?
Ist das nur eine Geschmacksfrage ? Wenn ja, ich persönlich neige dazu
nicht unbedingt das einfachste, sondern das "verbreitetste" zu wählen,
aber welche ist das hier ?
So, in der Hoffnung auf ein paar Hinweise entnervt auf den Sessel
zurückziehend
Hannes
Gruß
Stefan
Also es weiß keiner weiter, wie man ein kompiliertes Programm mit dem
o.g. Programmer in das o.g. Board bekommt ? Puh, was sagt mir das ?
Gruß
Stefan Hannes
- AT91-ISP v1.10.exe von hier:
http://www.atmel.com/dyn/resources/prod_documents/Install%20AT91-ISP%20v1.10.exe
runterladen und installieren
- Board über USB-Kabel mit Rechner verbinden (Meldung: unbekannte
Hardware gefunden)
- Jumper zur Wahl der Spannungsversorgung [USB/EXT] entfernen
- ERASE Jumper reinstecken
- USB/EXT Jumper bei USB reinstecken (oder auch EXT wenn mit externem
Netzteil)
- ERASE Jumper entfernen (nach kurzer Zeit macht der Computer das
Geräusch das Hardware gefunden wurde und eventuell erscheint ein Popup
mit AT91xxxx Test Board Treiber installiert oder ähnliches)
- Doppelklick auf SAM-BA v2.6 (sollte sich auf dem Desktop oder in
der Programmliste befinden), in dem Fenster \usb\ARM0 (kann abweichen)
und SAM7X256-EK auswählen und auf Connect klicken
- In dem Tab, Reiter oder der Registerkarte (wie auch immer) Flash
auswählen (sollte standartmäßig schon ausgewählt sein)
- In der GroupBox <<Download / Upload File>> bei <<Send File Name>> auf
den Ordner Klicken und in dem openFileDialog die *.bin Datei auswählen
die gefläsht werden soll
(die Olimex Boards werden mit 2 verschieden Displays ausgeliefert, auf
einem sollte ein Kleber mit GE8 und auf dem Anderen mit GE12 sein (war
bei mir nicht drauf deshalb hab ich einfach mit GE8 probiert und es hat
funktioniert), jetzt einfach von der Olimex Seite
http://www.olimex.com/dev/sam7-ex256.html die Demo runder laden die zu
eurem Display passt, für das GE8 Display hab ich mal die Demo mit einem
anderen Bild als *.bin rangehangen (siehe oben))
- Wenn ihr die Datei ausgewählt habt, dann auf den Button <<Send File>>
klicken
- Es kommt dann nach kurzer Zeit ein Fenster mit „Do you want to lock
involved region(s)…?“, ich hab keine Ahnung was das bedeutet, ich hab
einfach immer auf <<No>> geklickt und es hat funktioniert
- Dann in der GroupBox <<Scrips>> „Boot from Flash (GPNVM2)“ auswählen
(sollte standartmäßig der schon ausgewählt sein) und auf den Button
<<Execute>> klicken
- Fertig
- Samba schließen, auf den RST (Reset) Button auf dem Board drücken und
die Demo startet (nach bissel Übung sollte das auch in 5-10 sec zu
schaffen sein)
1
Zur Demo:
Quellcode gibt es hier: http://www.olimex.com/dev/sam7-ex256.html
Als Copiler nutze ich den IAR Embedded Workbench for ARM, v. 4.42A,
„Evaluation Version“, hier:
http://supp.iar.com/Download/SW/?item=EWARM-EVAL-442A gibt es kostenlos
die 32 Tage Testversion oder hier:
http://supp.iar.com/Download/SW/?item=EWARM-KS32-442A eine auf 32KB
beschränkte Version, und wem das nicht reicht muss halt mal ein bisschen
bei Google.cn suchen, ich würde gern WinARM nutzen aber irgendwie
funktioniert das nicht unter Vista
USART Baud: 9600 (nach einem Reset werden par Sachen zum Testen
gesendet (Temperatur… siehe Quellcode))
1
Meine Frage:
- wie flashe ich das Board mit dem USB-JTAG-Tiny von Olimex (unter Suse
10.3 oder Vista), unter Vista hab ich schon die Treiber, eclipse,
yagarto, openocd und alles was sonst noch so auf der Olimex CD (24.
September 2007) war installiert, am liebsten wär mir ne .bat Datei wo
ich nur noch den Pfad zur .bin Datei, und was sonst noch so nötig ist
eintragen muss
Ich bin gerade dabei die Ethernet Schnittstelle des hier besprochenen
Boards in Betrieb zu nehmen. Dazu verwende ich das wIP_Demo_Rowley_ARM7
aus FreeRTOS 4.4.0. mit den vom Andreas gemachten Erweiterungen.
Leider scheint die Kommunikation zur PHY nicht zu funktionieren. Beim
auslesen der PHY ID wird nur 0xffff zurückgegeben. Hat vielleicht jemand
von euch eine Lösung für das Problem ?
Viele Grüße
jakrit
Ich hoffe ich bin nicht zu spät, war gerade am aussortieren meiner
Bookmarks
Im Anhang ist meine Version, hab gerade noch mal compiliert und
geflasht, sollte funktionieren, ich hatte damals die Demo von Andreas
1:1 mit dem Original verglichen und dann die notwendigen Änderungen bei
FreeRTOSV5.0.2 gemacht.
Also den Ordner aus dem Archiv im Anhang einfach ins Demo Verzeichnis
kopieren und make eingeben. In dem Ordner befindet sich eine Datei
rtosdemo.bin die sich zum Testen einfach über SAM-BA flashen lässt (um
andere Fehler auszuschließen). Ich hoffe es lässt sich compilieren
(erstmal rtosdemo.bin raus kopieren und make clean ausführen), ich hatte
damals ein eclipse Projekt daraus gemacht um den Debugger leichter
nutzen zu können.
Ip steht in SAM7_EMAC.h momentan 192.168.1.111 gateway 192.168.1.100
nmask 255.255.0.0
(gekreutztes netzwerkkabel, ifconfig eth0 up
, ifconfig eth0 192.168.1.100)
Im Webbrowser sollte dann so ne Art Tankmanager erscheinen.
Wenn du unter Linux arbeitest kann ich dir das Programm Meld (GTK)
empfehlen, einfach das original FreeRTOS entpacken und das von Andreas
und dann die beiden Verzeichnisse vergleichen lassen.
Falls du unter Win arbeitest kannst du dir jeweils immer zwei Dateien
mit Notepad++ vergleichen lassen.
Falls es dir hauptsächlich um den Webserver geht kann ich dir nur
enthernut empfehlen, das bringt auch gleich einen Treiber für SD-Karten
mit,
(schreiben in Dateien geht traumhaft über:
myfile = fopen("PHAT0:/guestbook.txt", "a+");
fprintf(myfile,"<b>%s:</b> %s<br />\r\n", name, value );)
selbst bei umfangreichen Webseiten auf SD-Karte mit mehreren Bildern
pro Seite (für jedes Bild wird ein neuer httpd-Thread gestartet da der
Browser mehrere Verbindungen aufbaut) hatte der Kleine keine Probleme
und auch 100MB große Dateien wurden fehlerfrei übertragen, auch Relais
(bzw. Hintergrundbeleuchtung) schalten ist ohne Probleme möglich. (ich
hab allerdings einige Änderungen vorgenommen die ich aus Zeitgründen
jetzt nicht erklären kann, müsst mich erstmal wieder einarbeiten, aber
Ethernet wollte erst auch nicht, ich bin dann aber in den sehr
hilfreichen Mailinglisten fündig geworden)
Eigentlich wollte ich (will noch) eine Philips DC-3840 Handy-Kamera
anschließen und die Bilder auf Sd-Karte speichern und vom Webserver
abrufbar machen (und eventuell auf dem Display anzeigen bzw. Text
darstellen den man im Browser eingibt), ich scheitere momentan aber noch
an der großen Datenmenge die meine UART-Buffer schneller füllt als ich
sie lehren kann (konnte mich aber aus Zeitgründen schon länger nicht
mehr damit beschäftigen), das Problem ist, dass ich mit meinen selbst
erarbeiteten C Kenntnissen nicht bei den UART Treibern und Interrupts
durchsehe um sie so zu verändern das es passt (einfache Vergrößerung der
Buffer reicht nicht). Ich müsste die Daten mehrmals anfordern und dann
stückchenweise speichern.
Ich hoffe mir sind keine Fehler unterlaufen, das letzte mal hab ich
irgendwann im Sommer damit rumgespielt.
Was willst du eigentlich machen, vielleicht können wir ja auch zusammen
was machen über chat (irc...) in irgendwelchen Ferien.
Falls du noch fragen hast einfach wieder schreiben, ich guck immer mal
wieder rein.
Chris J. schrieb:
> Im Anhang ist meine Version, hab gerade noch mal compiliert und> geflasht
Bist du sicher, dass das mitgelieferte Compilat aus dem Source im Anhang
entstanden ist? Das Compilat laeuft, aber wenn ich selber aus dem Source
compile und dann flashe bleibt der ARM beim ersten Zugriff auf den
Webserver stehen.
Ja, da bin ich mir ziemlich sicher, hast du auch FreeRTOSV5.0.2,
ansonsten überall Debug Ausgaben über die Serielle Schnittelle
hinzufügen und dann gegebenenfalls die Funktion auskommentieren bei der
es stehen bleibt. Vielleicht guck ich mir in Semesterferien im März mal
an was alles Neues zu FreeRTOS V6 hinzugekommen ist und passe das dann
nochmal dafür an.
Es kann auch sein das es bei einer neueren Version von
gcc/Yagarto/WinARM und der alten FreeRTOSV5.0.2 Version
Inkompatibilitäten gibt. Ich hab hier noch einen Snapshot von der
Virtuellen Maschine die ich damals zum Entwicken benutzt hatte mit einen
Ordner yagarto-tools-20070303, vielleicht hilft das weiter, ansonsten
würde ich es wirklich mit aktuellen Versionen Testen. Aus Zeitmangel
kann ich mir das jetzt nicht genauer angucken, in 3 Jahren hat sich viel
getan.
Hallo
Ich habe leider sehr wenig Erfahrung beim Programmieren von
Mikrocontrollern, muss aber nun ein Programm schreiben, welches über
einen Timer- gesteuerten Interrupt eine Variable (z.B. vom ADC)
ausliest. Hat jemand vielleicht ein kleines Programm (oder
funktionierenden Ausgangspunkt), was wirklich nur das macht? Auch mit
Hilfe einiger Beispiele (die meistens viel zu Umfangreich sind) schaffe
ich das nicht.
Ich arbeite an einem OLIMEX SAM7X256.
mit freundlichen Grüßen
Michael
Hallo Michael,
ich kann dir etwas Schreiben bzw. Helfen, denn seit einigen Wochen
beschäftige ich mich intensiv mit dem OLIMEX SAM7-EX256-Board(Halt nur
Abends wenn ich Zeit habe).
Hilfreich war das Buch "C-Programming for embedded Microcontrollers"
Bisher spielte ich mit folgende Funtkionen und habe diese Verstanden:
-DebugAusgabe über DBGU-Schnittstelle
-per Jostick oder Taster auf dem Summer Töne erzeugt
-ADC->Einlesen Temperatursensor mit Wertausgabe auf DBGU-Schnittstelle
-Nokiadisplay ansteuern-> Ausgabe des Temperatursensorwert auf Display
Momentan bin ich dabei einen Webserver mit FreeRTOS zu
programmieren/konfigurieren.
Ich nutze Eclipse mit Yagartoo-Toolchain.
Gruß Daniel
Hallo Daniel
Danke für deine Rückmeldung. Ich würde mich sehr freuen, wenn du mich
ein Wenig unterstützen könntest.
Ich habe bereits einen Ansatz, damit du siehst was ich in etwa benötige.
Bei dem angefügten Beispiel habe ich den oben angebotenen Ausgangspunkt
gehalten und versucht den PIT und den AIC zu initialisieren und im
Interupthandler das LCD Display auszuschalten.
Könntest du das einmal durchsehn und sagen ob das soweit passt bzw was
falsch ist?
Vielen Dank im Voraus
mfg
Michael
Hallo!
Ich bins nochmal! Ich bin schon am verzweifeln weil ich keinen Interrupt
zusammenbekomme! Kann mir bitte jemand helfen?
Hier ist die initialisierung:
1
// Konfigurieren des AIC
2
volatileAT91PS_AICpAIC=AT91C_BASE_AIC;// pointer zur AIC data structure
3
4
pAIC->AIC_IDCR=(1<<AT91C_ID_TC0);// Disable Timer interrupt in AIC