<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nezaya</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nezaya"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Nezaya"/>
	<updated>2026-04-10T21:41:30Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Toolchain_build.png&amp;diff=39298</id>
		<title>Datei:Toolchain build.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Toolchain_build.png&amp;diff=39298"/>
		<updated>2009-09-24T20:46:08Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Grafische Darstellung des Buildprozesses mit der GNU ARM Toolchain&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Grafische Darstellung des Buildprozesses mit der GNU ARM Toolchain&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=39278</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=39278"/>
		<updated>2009-09-24T13:31:43Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Änderungshinweis nach oben verschoben.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel wird zurzeit erweitert und überarbeitet um allgemein das Einrichten einer Entwicklungsumgebung für ARM (speziell AT91SAM7) zu beschreiben.&lt;br /&gt;
Die Einrichtung der Toolchain wird dann am speziell Beispiel eines Olimex SAM7H256 Boards zusammen mit dem Olimex JTAG TINY, openocd und der IDE Netbeans sowohl Windows als auch Linux (Debian) beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll später einen ersten Einstig in die ARM Entwicklung bieten. Dazu gehören auch Erklärungen zur Speicherarchitektur, Linkerscripte, usw... &lt;br /&gt;
&lt;br /&gt;
Ebenfalls sollen die Tools SAM-BA für Windows, sowie deren &amp;quot;Äquivalent&amp;quot; sam7utils für Linux erläutert werden. Die Anleitung soll allgemein genug gehalten sein, um auch die Nutzung anderer Hard- oder Software zu erlauben. Dazu sollen Hinweise an den entsprechenden Stellen in der Konfiguration die nötigen Hintergrundinformationen bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Wer möchte darf gerne beim Schreiben und Debuggen des Artikels mithelfen. Auch für Anregungen bin ich dankbar. Geschickt wäre allerdings eine vorherige Absprache.&lt;br /&gt;
&lt;br /&gt;
nezaya&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit openocd unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shutdown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
Das fertige Projekt, mit dem ab jetzt hier gearbeitet wird, kann [[Media:NetbeansARMProjekt.zip|hier]] heruntergeladen werden. Es basiert, wie zuvor beschrieben, auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch. Jedoch wurden einige Veränderungen und Anpassungen an Netbeans vorgenommen, sowie einige Dateien zur besseren Verständlichkeit umbenannt.&lt;br /&gt;
&lt;br /&gt;
===Makefile===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
===Controller programmieren===&lt;br /&gt;
Nach dem erfolgreichen Build des Projekts liegt das Ergebniss der vorgehenden Bemühungen in Form der Datei &amp;quot;main.bin&amp;quot; im Projektverzeichniss.&lt;br /&gt;
&lt;br /&gt;
Diese gilt es jetzt noch auf den Controller zu übertragen, so dass sie dort ausgeführt werden kann. Hierbei wird auf zwei Methoden eingegangen. Zum einen die Variante der Programmierung über JTAG und OpenOCD, zum anderen die Variante über den SAM-BA Bootloader. &lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels OpenOCD JTAG====&lt;br /&gt;
Zum Programmieren reicht es im Verzeichniss &amp;quot;E:\arm\&amp;quot; den Befehl &lt;br /&gt;
openocd -f at91sam7s256-armusbocd-flash-program.cfg in der Konsole (CMD) auszuführen. Je nach Art der Installation muss statt openocd der Befehl openocd-ftd2xx verwendet werden.  &lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; enthält Befehle die OpenOCD ausführt. In ihr wird auf eine weitere Datei &amp;quot;script.ocd&amp;quot; verwiesen. Diese enthält die eigentlichen Befehle zum Programmieren der Datei &amp;quot;main.bin&amp;quot; auf den Controller. &lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgreichen Durchlaufen des OpenOCD-Aufrufs, ist das Programm in den Controller übertragen. Auf der Konsole sollte dann folgendes zu sehen sein. &lt;br /&gt;
&lt;br /&gt;
Erscheint eine Ausgabe wie folgt dargestellt, sind Teile des zu beschreibenden Speichers über sogenannte Lock-Bits gesperrt. Dies passiert beispielsweise dann, wenn man den SAM-BA Bootloader über Chip-Reset in den ARM geladen hat. Der Bootloader versucht sich dann nämlich vor dem überschreiben zu schützen. Da wir jedoch genau in die Speicherregion schreiben wollen müssen die Lock-Bits gelöscht werden. Dazu werden in der Datei &amp;quot;script.ocd&amp;quot; die beiden Zeilen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # mww 0xffffff64 0x5a000004	#Lockbit 0 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
 # mww 0xffffff64 0x5a002004	#Lockbit 1 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auskommentiert ( das führende # entfernt) und OpenOCD erneut aufgerufen. Danach sollte man allerdings den Ursprungszustand wieder herstellen, da sonst bei jedem Programmieren eine Löschung der Lock-Bits vorgenommen wird, obwohl das nicht nötig ist. Theoretisch kann ein zu häufiges Schreiben auf diese Speicherstellen den Controller zerstören.&lt;br /&gt;
&lt;br /&gt;
Nach einem erneuten Ausführen des obigen Befehls sollte dann alles klappen. Das Programm ist nun im Controller und wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels SAM-BA====&lt;br /&gt;
tbc.&lt;br /&gt;
&lt;br /&gt;
(für Linux evt. interessant sam7utils [[http://oss.tekno.us/sam7utils/download.php]] als SAM-BA für Linux)&lt;br /&gt;
&lt;br /&gt;
===Debugging der Anwendung===&lt;br /&gt;
==== mit Netbeans ====&lt;br /&gt;
Mit der Nightly Build 200909221401 von Netbeans ist die (funktionierende) Möglichkeit hinzugekommen zu einem GDBServer zu verbinden. Damit ermöglicht Netbeans Debugging im Zusammenspiel mit OpenOCD. Eine detaillierte Beschreibung folgt noch.&lt;br /&gt;
&lt;br /&gt;
==== mit GDB(tui) ====&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO/Hinweise=&lt;br /&gt;
&lt;br /&gt;
Alte Todoliste (obsolet)&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Einstellungen der Compiler und Pfade für vorhandene Bibliotheken erläutern&lt;br /&gt;
*Build-Konfiguration bei der man wählen kann, ob für Flash oder RAM kompiliert wird&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=ARM_Entwicklung_unter_Windows_Vista&amp;diff=39277</id>
		<title>ARM Entwicklung unter Windows Vista</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=ARM_Entwicklung_unter_Windows_Vista&amp;diff=39277"/>
		<updated>2009-09-24T13:22:26Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: hat „ARM Entwicklung unter Windows Vista“ nach „Einstieg in die ARM Entwicklung“ verschoben: Der bisherige Titel ist obsolet, da der Artikel jetzt allgemein den Einstieg in die ARM Entwicklung beschreibt / beschreiben soll.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Einstieg in die ARM Entwicklung]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=39276</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=39276"/>
		<updated>2009-09-24T13:22:26Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: hat „ARM Entwicklung unter Windows Vista“ nach „Einstieg in die ARM Entwicklung“ verschoben: Der bisherige Titel ist obsolet, da der Artikel jetzt allgemein den Einstieg in die ARM Entwicklung beschreibt / beschreiben soll.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shutdown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
Das fertige Projekt, mit dem ab jetzt hier gearbeitet wird, kann [[Media:NetbeansARMProjekt.zip|hier]] heruntergeladen werden. Es basiert, wie zuvor beschrieben, auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch. Jedoch wurden einige Veränderungen und Anpassungen an Netbeans vorgenommen, sowie einige Dateien zur besseren Verständlichkeit umbenannt.&lt;br /&gt;
&lt;br /&gt;
===Makefile===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
===Controller programmieren===&lt;br /&gt;
Nach dem erfolgreichen Build des Projekts liegt das Ergebniss der vorgehenden Bemühungen in Form der Datei &amp;quot;main.bin&amp;quot; im Projektverzeichniss.&lt;br /&gt;
&lt;br /&gt;
Diese gilt es jetzt noch auf den Controller zu übertragen, so dass sie dort ausgeführt werden kann. Hierbei wird auf zwei Methoden eingegangen. Zum einen die Variante der Programmierung über JTAG und OpenOCD, zum anderen die Variante über den SAM-BA Bootloader. &lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels OpenOCD JTAG====&lt;br /&gt;
Zum Programmieren reicht es im Verzeichniss &amp;quot;E:\arm\&amp;quot; den Befehl &lt;br /&gt;
openocd -f at91sam7s256-armusbocd-flash-program.cfg in der Konsole (CMD) auszuführen. Je nach Art der Installation muss statt openocd der Befehl openocd-ftd2xx verwendet werden.  &lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; enthält Befehle die OpenOCD ausführt. In ihr wird auf eine weitere Datei &amp;quot;script.ocd&amp;quot; verwiesen. Diese enthält die eigentlichen Befehle zum Programmieren der Datei &amp;quot;main.bin&amp;quot; auf den Controller. &lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgreichen Durchlaufen des OpenOCD-Aufrufs, ist das Programm in den Controller übertragen. Auf der Konsole sollte dann folgendes zu sehen sein. &lt;br /&gt;
&lt;br /&gt;
Erscheint eine Ausgabe wie folgt dargestellt, sind Teile des zu beschreibenden Speichers über sogenannte Lock-Bits gesperrt. Dies passiert beispielsweise dann, wenn man den SAM-BA Bootloader über Chip-Reset in den ARM geladen hat. Der Bootloader versucht sich dann nämlich vor dem überschreiben zu schützen. Da wir jedoch genau in die Speicherregion schreiben wollen müssen die Lock-Bits gelöscht werden. Dazu werden in der Datei &amp;quot;script.ocd&amp;quot; die beiden Zeilen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # mww 0xffffff64 0x5a000004	#Lockbit 0 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
 # mww 0xffffff64 0x5a002004	#Lockbit 1 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auskommentiert ( das führende # entfernt) und OpenOCD erneut aufgerufen. Danach sollte man allerdings den Ursprungszustand wieder herstellen, da sonst bei jedem Programmieren eine Löschung der Lock-Bits vorgenommen wird, obwohl das nicht nötig ist. Theoretisch kann ein zu häufiges Schreiben auf diese Speicherstellen den Controller zerstören.&lt;br /&gt;
&lt;br /&gt;
Nach einem erneuten Ausführen des obigen Befehls sollte dann alles klappen. Das Programm ist nun im Controller und wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels SAM-BA====&lt;br /&gt;
tbc.&lt;br /&gt;
&lt;br /&gt;
(für Linux evt. interessant sam7utils [[http://oss.tekno.us/sam7utils/download.php]] als SAM-BA für Linux)&lt;br /&gt;
&lt;br /&gt;
===Debugging der Anwendung===&lt;br /&gt;
==== mit Netbeans ====&lt;br /&gt;
Mit der Nightly Build 200909221401 von Netbeans ist die (funktionierende) Möglichkeit hinzugekommen zu einem GDBServer zu verbinden. Damit ermöglicht Netbeans Debugging im Zusammenspiel mit OpenOCD. Eine detaillierte Beschreibung folgt noch.&lt;br /&gt;
&lt;br /&gt;
==== mit GDB(tui) ====&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO/Hinweise=&lt;br /&gt;
&lt;br /&gt;
Der Artikel wird zurzeit/demnächst erweitert um allgemein das Einrichten einer Entwicklungsumgebung für ARM (speziell AT91SAM7). Die Einrichtung der Toolchain wird dann am speziell Beispiel eines Olimex SAM7H256 Boards zusammen mit dem Olimex JTAG TINY, openocd und der IDE Netbeans sowohl Windows als auch Linux (Debian) beschrieben werden. Er wird dann konsequenterweise auch seinen Titel ändern.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll später einen ersten Einstig in die ARM Entwicklung bieten. Dazu gehören auch Erklärungen zur Speicherarchitektur, Linkerscripte, usw... &lt;br /&gt;
&lt;br /&gt;
Ebenfalls sollen die Tools SAM-BA für Windows, sowie deren &amp;quot;Äquivalent&amp;quot; sam7utils für Linux erläutert werden. Die Anleitung soll allgemein genug gehalten sein, um auch die Nutzung anderer Hard- oder Software zu erlauben. Dazu sollen Hinweise an den entsprechenden Stellen in der Konfiguration die nötigen Hintergrundinformationen bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Wer möchte darf gerne beim Schreiben und Debuggen des Artikels mithelfen. Auch für Anregungen bin ich dankbar. Geschickt wäre allerdings eine vorherige Absprache.&lt;br /&gt;
nezaya&lt;br /&gt;
&lt;br /&gt;
Alte Todoliste (obsolet)&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Einstellungen der Compiler und Pfade für vorhandene Bibliotheken erläutern&lt;br /&gt;
*Build-Konfiguration bei der man wählen kann, ob für Flash oder RAM kompiliert wird&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=39275</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=39275"/>
		<updated>2009-09-24T13:19:57Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: /* Debugging der Anwendung */  Hinweis auf Netbeans Funktionalität&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shutdown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
Das fertige Projekt, mit dem ab jetzt hier gearbeitet wird, kann [[Media:NetbeansARMProjekt.zip|hier]] heruntergeladen werden. Es basiert, wie zuvor beschrieben, auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch. Jedoch wurden einige Veränderungen und Anpassungen an Netbeans vorgenommen, sowie einige Dateien zur besseren Verständlichkeit umbenannt.&lt;br /&gt;
&lt;br /&gt;
===Makefile===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
===Controller programmieren===&lt;br /&gt;
Nach dem erfolgreichen Build des Projekts liegt das Ergebniss der vorgehenden Bemühungen in Form der Datei &amp;quot;main.bin&amp;quot; im Projektverzeichniss.&lt;br /&gt;
&lt;br /&gt;
Diese gilt es jetzt noch auf den Controller zu übertragen, so dass sie dort ausgeführt werden kann. Hierbei wird auf zwei Methoden eingegangen. Zum einen die Variante der Programmierung über JTAG und OpenOCD, zum anderen die Variante über den SAM-BA Bootloader. &lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels OpenOCD JTAG====&lt;br /&gt;
Zum Programmieren reicht es im Verzeichniss &amp;quot;E:\arm\&amp;quot; den Befehl &lt;br /&gt;
openocd -f at91sam7s256-armusbocd-flash-program.cfg in der Konsole (CMD) auszuführen. Je nach Art der Installation muss statt openocd der Befehl openocd-ftd2xx verwendet werden.  &lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; enthält Befehle die OpenOCD ausführt. In ihr wird auf eine weitere Datei &amp;quot;script.ocd&amp;quot; verwiesen. Diese enthält die eigentlichen Befehle zum Programmieren der Datei &amp;quot;main.bin&amp;quot; auf den Controller. &lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgreichen Durchlaufen des OpenOCD-Aufrufs, ist das Programm in den Controller übertragen. Auf der Konsole sollte dann folgendes zu sehen sein. &lt;br /&gt;
&lt;br /&gt;
Erscheint eine Ausgabe wie folgt dargestellt, sind Teile des zu beschreibenden Speichers über sogenannte Lock-Bits gesperrt. Dies passiert beispielsweise dann, wenn man den SAM-BA Bootloader über Chip-Reset in den ARM geladen hat. Der Bootloader versucht sich dann nämlich vor dem überschreiben zu schützen. Da wir jedoch genau in die Speicherregion schreiben wollen müssen die Lock-Bits gelöscht werden. Dazu werden in der Datei &amp;quot;script.ocd&amp;quot; die beiden Zeilen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # mww 0xffffff64 0x5a000004	#Lockbit 0 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
 # mww 0xffffff64 0x5a002004	#Lockbit 1 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auskommentiert ( das führende # entfernt) und OpenOCD erneut aufgerufen. Danach sollte man allerdings den Ursprungszustand wieder herstellen, da sonst bei jedem Programmieren eine Löschung der Lock-Bits vorgenommen wird, obwohl das nicht nötig ist. Theoretisch kann ein zu häufiges Schreiben auf diese Speicherstellen den Controller zerstören.&lt;br /&gt;
&lt;br /&gt;
Nach einem erneuten Ausführen des obigen Befehls sollte dann alles klappen. Das Programm ist nun im Controller und wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels SAM-BA====&lt;br /&gt;
tbc.&lt;br /&gt;
&lt;br /&gt;
(für Linux evt. interessant sam7utils [[http://oss.tekno.us/sam7utils/download.php]] als SAM-BA für Linux)&lt;br /&gt;
&lt;br /&gt;
===Debugging der Anwendung===&lt;br /&gt;
==== mit Netbeans ====&lt;br /&gt;
Mit der Nightly Build 200909221401 von Netbeans ist die (funktionierende) Möglichkeit hinzugekommen zu einem GDBServer zu verbinden. Damit ermöglicht Netbeans Debugging im Zusammenspiel mit OpenOCD. Eine detaillierte Beschreibung folgt noch.&lt;br /&gt;
&lt;br /&gt;
==== mit GDB(tui) ====&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO/Hinweise=&lt;br /&gt;
&lt;br /&gt;
Der Artikel wird zurzeit/demnächst erweitert um allgemein das Einrichten einer Entwicklungsumgebung für ARM (speziell AT91SAM7). Die Einrichtung der Toolchain wird dann am speziell Beispiel eines Olimex SAM7H256 Boards zusammen mit dem Olimex JTAG TINY, openocd und der IDE Netbeans sowohl Windows als auch Linux (Debian) beschrieben werden. Er wird dann konsequenterweise auch seinen Titel ändern.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll später einen ersten Einstig in die ARM Entwicklung bieten. Dazu gehören auch Erklärungen zur Speicherarchitektur, Linkerscripte, usw... &lt;br /&gt;
&lt;br /&gt;
Ebenfalls sollen die Tools SAM-BA für Windows, sowie deren &amp;quot;Äquivalent&amp;quot; sam7utils für Linux erläutert werden. Die Anleitung soll allgemein genug gehalten sein, um auch die Nutzung anderer Hard- oder Software zu erlauben. Dazu sollen Hinweise an den entsprechenden Stellen in der Konfiguration die nötigen Hintergrundinformationen bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Wer möchte darf gerne beim Schreiben und Debuggen des Artikels mithelfen. Auch für Anregungen bin ich dankbar. Geschickt wäre allerdings eine vorherige Absprache.&lt;br /&gt;
nezaya&lt;br /&gt;
&lt;br /&gt;
Alte Todoliste (obsolet)&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Einstellungen der Compiler und Pfade für vorhandene Bibliotheken erläutern&lt;br /&gt;
*Build-Konfiguration bei der man wählen kann, ob für Flash oder RAM kompiliert wird&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=39273</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=39273"/>
		<updated>2009-09-24T13:14:41Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shutdown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
Das fertige Projekt, mit dem ab jetzt hier gearbeitet wird, kann [[Media:NetbeansARMProjekt.zip|hier]] heruntergeladen werden. Es basiert, wie zuvor beschrieben, auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch. Jedoch wurden einige Veränderungen und Anpassungen an Netbeans vorgenommen, sowie einige Dateien zur besseren Verständlichkeit umbenannt.&lt;br /&gt;
&lt;br /&gt;
===Makefile===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
===Controller programmieren===&lt;br /&gt;
Nach dem erfolgreichen Build des Projekts liegt das Ergebniss der vorgehenden Bemühungen in Form der Datei &amp;quot;main.bin&amp;quot; im Projektverzeichniss.&lt;br /&gt;
&lt;br /&gt;
Diese gilt es jetzt noch auf den Controller zu übertragen, so dass sie dort ausgeführt werden kann. Hierbei wird auf zwei Methoden eingegangen. Zum einen die Variante der Programmierung über JTAG und OpenOCD, zum anderen die Variante über den SAM-BA Bootloader. &lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels OpenOCD JTAG====&lt;br /&gt;
Zum Programmieren reicht es im Verzeichniss &amp;quot;E:\arm\&amp;quot; den Befehl &lt;br /&gt;
openocd -f at91sam7s256-armusbocd-flash-program.cfg in der Konsole (CMD) auszuführen. Je nach Art der Installation muss statt openocd der Befehl openocd-ftd2xx verwendet werden.  &lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; enthält Befehle die OpenOCD ausführt. In ihr wird auf eine weitere Datei &amp;quot;script.ocd&amp;quot; verwiesen. Diese enthält die eigentlichen Befehle zum Programmieren der Datei &amp;quot;main.bin&amp;quot; auf den Controller. &lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgreichen Durchlaufen des OpenOCD-Aufrufs, ist das Programm in den Controller übertragen. Auf der Konsole sollte dann folgendes zu sehen sein. &lt;br /&gt;
&lt;br /&gt;
Erscheint eine Ausgabe wie folgt dargestellt, sind Teile des zu beschreibenden Speichers über sogenannte Lock-Bits gesperrt. Dies passiert beispielsweise dann, wenn man den SAM-BA Bootloader über Chip-Reset in den ARM geladen hat. Der Bootloader versucht sich dann nämlich vor dem überschreiben zu schützen. Da wir jedoch genau in die Speicherregion schreiben wollen müssen die Lock-Bits gelöscht werden. Dazu werden in der Datei &amp;quot;script.ocd&amp;quot; die beiden Zeilen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # mww 0xffffff64 0x5a000004	#Lockbit 0 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
 # mww 0xffffff64 0x5a002004	#Lockbit 1 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auskommentiert ( das führende # entfernt) und OpenOCD erneut aufgerufen. Danach sollte man allerdings den Ursprungszustand wieder herstellen, da sonst bei jedem Programmieren eine Löschung der Lock-Bits vorgenommen wird, obwohl das nicht nötig ist. Theoretisch kann ein zu häufiges Schreiben auf diese Speicherstellen den Controller zerstören.&lt;br /&gt;
&lt;br /&gt;
Nach einem erneuten Ausführen des obigen Befehls sollte dann alles klappen. Das Programm ist nun im Controller und wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels SAM-BA====&lt;br /&gt;
tbc.&lt;br /&gt;
&lt;br /&gt;
(für Linux evt. interessant sam7utils [[http://oss.tekno.us/sam7utils/download.php]] als SAM-BA für Linux)&lt;br /&gt;
&lt;br /&gt;
===Debugging der Anwendung (zurzeit noch ohne Netbeans Unterstützung)===&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO/Hinweise=&lt;br /&gt;
&lt;br /&gt;
Der Artikel wird zurzeit/demnächst erweitert um allgemein das Einrichten einer Entwicklungsumgebung für ARM (speziell AT91SAM7). Die Einrichtung der Toolchain wird dann am speziell Beispiel eines Olimex SAM7H256 Boards zusammen mit dem Olimex JTAG TINY, openocd und der IDE Netbeans sowohl Windows als auch Linux (Debian) beschrieben werden. Er wird dann konsequenterweise auch seinen Titel ändern.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll später einen ersten Einstig in die ARM Entwicklung bieten. Dazu gehören auch Erklärungen zur Speicherarchitektur, Linkerscripte, usw... &lt;br /&gt;
&lt;br /&gt;
Ebenfalls sollen die Tools SAM-BA für Windows, sowie deren &amp;quot;Äquivalent&amp;quot; sam7utils für Linux erläutert werden. Die Anleitung soll allgemein genug gehalten sein, um auch die Nutzung anderer Hard- oder Software zu erlauben. Dazu sollen Hinweise an den entsprechenden Stellen in der Konfiguration die nötigen Hintergrundinformationen bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Wer möchte darf gerne beim Schreiben und Debuggen des Artikels mithelfen. Auch für Anregungen bin ich dankbar. Geschickt wäre allerdings eine vorherige Absprache.&lt;br /&gt;
nezaya&lt;br /&gt;
&lt;br /&gt;
Alte Todoliste (obsolet)&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Einstellungen der Compiler und Pfade für vorhandene Bibliotheken erläutern&lt;br /&gt;
*Build-Konfiguration bei der man wählen kann, ob für Flash oder RAM kompiliert wird&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=39270</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=39270"/>
		<updated>2009-09-24T13:13:51Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: /* TODO */  Ziele des Artikels neu definiert und auf bevorstehende Änderungen hingewiesen.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shutdown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
Das fertige Projekt, mit dem ab jetzt hier gearbeitet wird, kann [[Media:NetbeansARMProjekt.zip|hier]] heruntergeladen werden. Es basiert, wie zuvor beschrieben, auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch. Jedoch wurden einige Veränderungen und Anpassungen an Netbeans vorgenommen, sowie einige Dateien zur besseren Verständlichkeit umbenannt.&lt;br /&gt;
&lt;br /&gt;
===Makefile===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
===Controller programmieren===&lt;br /&gt;
Nach dem erfolgreichen Build des Projekts liegt das Ergebniss der vorgehenden Bemühungen in Form der Datei &amp;quot;main.bin&amp;quot; im Projektverzeichniss.&lt;br /&gt;
&lt;br /&gt;
Diese gilt es jetzt noch auf den Controller zu übertragen, so dass sie dort ausgeführt werden kann. Hierbei wird auf zwei Methoden eingegangen. Zum einen die Variante der Programmierung über JTAG und OpenOCD, zum anderen die Variante über den SAM-BA Bootloader. &lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels OpenOCD JTAG====&lt;br /&gt;
Zum Programmieren reicht es im Verzeichniss &amp;quot;E:\arm\&amp;quot; den Befehl &lt;br /&gt;
openocd -f at91sam7s256-armusbocd-flash-program.cfg in der Konsole (CMD) auszuführen. Je nach Art der Installation muss statt openocd der Befehl openocd-ftd2xx verwendet werden.  &lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; enthält Befehle die OpenOCD ausführt. In ihr wird auf eine weitere Datei &amp;quot;script.ocd&amp;quot; verwiesen. Diese enthält die eigentlichen Befehle zum Programmieren der Datei &amp;quot;main.bin&amp;quot; auf den Controller. &lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgreichen Durchlaufen des OpenOCD-Aufrufs, ist das Programm in den Controller übertragen. Auf der Konsole sollte dann folgendes zu sehen sein. &lt;br /&gt;
&lt;br /&gt;
Erscheint eine Ausgabe wie folgt dargestellt, sind Teile des zu beschreibenden Speichers über sogenannte Lock-Bits gesperrt. Dies passiert beispielsweise dann, wenn man den SAM-BA Bootloader über Chip-Reset in den ARM geladen hat. Der Bootloader versucht sich dann nämlich vor dem überschreiben zu schützen. Da wir jedoch genau in die Speicherregion schreiben wollen müssen die Lock-Bits gelöscht werden. Dazu werden in der Datei &amp;quot;script.ocd&amp;quot; die beiden Zeilen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # mww 0xffffff64 0x5a000004	#Lockbit 0 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
 # mww 0xffffff64 0x5a002004	#Lockbit 1 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auskommentiert ( das führende # entfernt) und OpenOCD erneut aufgerufen. Danach sollte man allerdings den Ursprungszustand wieder herstellen, da sonst bei jedem Programmieren eine Löschung der Lock-Bits vorgenommen wird, obwohl das nicht nötig ist. Theoretisch kann ein zu häufiges Schreiben auf diese Speicherstellen den Controller zerstören.&lt;br /&gt;
&lt;br /&gt;
Nach einem erneuten Ausführen des obigen Befehls sollte dann alles klappen. Das Programm ist nun im Controller und wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels SAM-BA====&lt;br /&gt;
tbc.&lt;br /&gt;
&lt;br /&gt;
(für Linux evt. interessant sam7utils [[http://oss.tekno.us/sam7utils/download.php]] als SAM-BA für Linux)&lt;br /&gt;
&lt;br /&gt;
===Debugging der Anwendung (zurzeit noch ohne Netbeans Unterstützung)===&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
&lt;br /&gt;
Der Artikel wird zurzeit/demnächst erweitert um allgemein das Einrichten einer Entwicklungsumgebung für ARM (speziell AT91SAM7). Die Einrichtung der Toolchain wird dann am speziell Beispiel eines Olimex SAM7H256 Boards zusammen mit dem Olimex JTAG TINY, openocd und der IDE Netbeans sowohl Windows als auch Linux (Debian) beschrieben werden. Er wird dann konsequenterweise auch seinen Titel ändern.&lt;br /&gt;
&lt;br /&gt;
Der Artikel soll später einen ersten Einstig in die ARM Entwicklung bieten. Dazu gehören auch Erklärungen zur Speicherarchitektur, Linkerscripte, usw... &lt;br /&gt;
&lt;br /&gt;
Ebenfalls sollen die Tools SAM-BA für Windows, sowie deren &amp;quot;Äquivalent&amp;quot; sam7utils für Linux erläutert werden. Die Anleitung soll allgemein genug gehalten sein, um auch die Nutzung anderer Hard- oder Software zu erlauben. Dazu sollen Hinweise an den entsprechenden Stellen in der Konfiguration die nötigen Hintergrundinformationen bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Wer möchte darf gerne beim Schreiben und Debuggen des Artikels mithelfen. Auch für Anregungen bin ich dankbar. Geschickt wäre allerdings eine vorherige Absprache.&lt;br /&gt;
nezaya&lt;br /&gt;
&lt;br /&gt;
Alte Todoliste (obsolet)&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Einstellungen der Compiler und Pfade für vorhandene Bibliotheken erläutern&lt;br /&gt;
*Build-Konfiguration bei der man wählen kann, ob für Flash oder RAM kompiliert wird&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=35621</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=35621"/>
		<updated>2009-04-09T18:26:20Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Änderung 35620 von Nezaya (Diskussion) wurde rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
Das fertige Projekt, mit dem ab jetzt hier gearbeitet wird, kann [[Media:NetbeansARMProjekt.zip|hier]] heruntergeladen werden. Es basiert, wie zuvor beschrieben, auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch. Jedoch wurden einige Veränderungen und Anpassungen an Netbeans vorgenommen, sowie einige Dateien zur besseren Verständlichkeit umbenannt.&lt;br /&gt;
&lt;br /&gt;
===Makefile===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
===Controller programmieren===&lt;br /&gt;
Nach dem erfolgreichen Build des Projekts liegt das Ergebniss der vorgehenden Bemühungen in Form der Datei &amp;quot;main.bin&amp;quot; im Projektverzeichniss.&lt;br /&gt;
&lt;br /&gt;
Diese gilt es jetzt noch auf den Controller zu übertragen, so dass sie dort ausgeführt werden kann. Hierbei wird auf zwei Methoden eingegangen. Zum einen die Variante der Programmierung über JTAG und OpenOCD, zum anderen die Variante über den SAM-BA Bootloader. &lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels OpenOCD JTAG====&lt;br /&gt;
Zum Programmieren reicht es im Verzeichniss &amp;quot;E:\arm\&amp;quot; den Befehl &lt;br /&gt;
openocd -f at91sam7s256-armusbocd-flash-program.cfg in der Konsole (CMD) auszuführen. Je nach Art der Installation muss statt openocd der Befehl openocd-ftd2xx verwendet werden.  &lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; enthält Befehle die OpenOCD ausführt. In ihr wird auf eine weitere Datei &amp;quot;script.ocd&amp;quot; verwiesen. Diese enthält die eigentlichen Befehle zum Programmieren der Datei &amp;quot;main.bin&amp;quot; auf den Controller. &lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgreichen Durchlaufen des OpenOCD-Aufrufs, ist das Programm in den Controller übertragen. Auf der Konsole sollte dann folgendes zu sehen sein. &lt;br /&gt;
&lt;br /&gt;
Erscheint eine Ausgabe wie folgt dargestellt, sind Teile des zu beschreibenden Speichers über sogenannte Lock-Bits gesperrt. Dies passiert beispielsweise dann, wenn man den SAM-BA Bootloader über Chip-Reset in den ARM geladen hat. Der Bootloader versucht sich dann nämlich vor dem überschreiben zu schützen. Da wir jedoch genau in die Speicherregion schreiben wollen müssen die Lock-Bits gelöscht werden. Dazu werden in der Datei &amp;quot;script.ocd&amp;quot; die beiden Zeilen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # mww 0xffffff64 0x5a000004	#Lockbit 0 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
 # mww 0xffffff64 0x5a002004	#Lockbit 1 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auskommentiert ( das führende # entfernt) und OpenOCD erneut aufgerufen. Danach sollte man allerdings den Ursprungszustand wieder herstellen, da sonst bei jedem Programmieren eine Löschung der Lock-Bits vorgenommen wird, obwohl das nicht nötig ist. Theoretisch kann ein zu häufiges Schreiben auf diese Speicherstellen den Controller zerstören.&lt;br /&gt;
&lt;br /&gt;
Nach einem erneuten Ausführen des obigen Befehls sollte dann alles klappen. Das Programm ist nun im Controller und wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels SAM-BA====&lt;br /&gt;
tbc.&lt;br /&gt;
&lt;br /&gt;
(für Linux evt. interessant sam7utils [[http://oss.tekno.us/sam7utils/download.php]] als SAM-BA für Linux)&lt;br /&gt;
&lt;br /&gt;
===Debugging der Anwendung (zurzeit noch ohne Netbeans Unterstützung)===&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Einstellungen der Compiler und Pfade für vorhandene Bibliotheken erläutern&lt;br /&gt;
*Build-Konfiguration bei der man wählen kann, ob für Flash oder RAM kompiliert wird&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=35620</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=35620"/>
		<updated>2009-04-09T18:21:40Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: /* Treiberinstallation Atmel SAM-BA */  Hinweis auf x64 Treiber für SAM-BA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
Inzwischen scheint sich jedoch etwas an der x64 Treiberfront zu tun. Siehe &lt;br /&gt;
[http://www.makingthings.com/forum/bugs-requests/mc-vista-x64-driver MC Vista x64 driver].&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
Das fertige Projekt, mit dem ab jetzt hier gearbeitet wird, kann [[Media:NetbeansARMProjekt.zip|hier]] heruntergeladen werden. Es basiert, wie zuvor beschrieben, auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch. Jedoch wurden einige Veränderungen und Anpassungen an Netbeans vorgenommen, sowie einige Dateien zur besseren Verständlichkeit umbenannt.&lt;br /&gt;
&lt;br /&gt;
===Makefile===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
===Controller programmieren===&lt;br /&gt;
Nach dem erfolgreichen Build des Projekts liegt das Ergebniss der vorgehenden Bemühungen in Form der Datei &amp;quot;main.bin&amp;quot; im Projektverzeichniss.&lt;br /&gt;
&lt;br /&gt;
Diese gilt es jetzt noch auf den Controller zu übertragen, so dass sie dort ausgeführt werden kann. Hierbei wird auf zwei Methoden eingegangen. Zum einen die Variante der Programmierung über JTAG und OpenOCD, zum anderen die Variante über den SAM-BA Bootloader. &lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels OpenOCD JTAG====&lt;br /&gt;
Zum Programmieren reicht es im Verzeichniss &amp;quot;E:\arm\&amp;quot; den Befehl &lt;br /&gt;
openocd -f at91sam7s256-armusbocd-flash-program.cfg in der Konsole (CMD) auszuführen. Je nach Art der Installation muss statt openocd der Befehl openocd-ftd2xx verwendet werden.  &lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; enthält Befehle die OpenOCD ausführt. In ihr wird auf eine weitere Datei &amp;quot;script.ocd&amp;quot; verwiesen. Diese enthält die eigentlichen Befehle zum Programmieren der Datei &amp;quot;main.bin&amp;quot; auf den Controller. &lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgreichen Durchlaufen des OpenOCD-Aufrufs, ist das Programm in den Controller übertragen. Auf der Konsole sollte dann folgendes zu sehen sein. &lt;br /&gt;
&lt;br /&gt;
Erscheint eine Ausgabe wie folgt dargestellt, sind Teile des zu beschreibenden Speichers über sogenannte Lock-Bits gesperrt. Dies passiert beispielsweise dann, wenn man den SAM-BA Bootloader über Chip-Reset in den ARM geladen hat. Der Bootloader versucht sich dann nämlich vor dem überschreiben zu schützen. Da wir jedoch genau in die Speicherregion schreiben wollen müssen die Lock-Bits gelöscht werden. Dazu werden in der Datei &amp;quot;script.ocd&amp;quot; die beiden Zeilen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # mww 0xffffff64 0x5a000004	#Lockbit 0 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
 # mww 0xffffff64 0x5a002004	#Lockbit 1 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auskommentiert ( das führende # entfernt) und OpenOCD erneut aufgerufen. Danach sollte man allerdings den Ursprungszustand wieder herstellen, da sonst bei jedem Programmieren eine Löschung der Lock-Bits vorgenommen wird, obwohl das nicht nötig ist. Theoretisch kann ein zu häufiges Schreiben auf diese Speicherstellen den Controller zerstören.&lt;br /&gt;
&lt;br /&gt;
Nach einem erneuten Ausführen des obigen Befehls sollte dann alles klappen. Das Programm ist nun im Controller und wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels SAM-BA====&lt;br /&gt;
tbc.&lt;br /&gt;
&lt;br /&gt;
(für Linux evt. interessant sam7utils [[http://oss.tekno.us/sam7utils/download.php]] als SAM-BA für Linux)&lt;br /&gt;
&lt;br /&gt;
===Debugging der Anwendung (zurzeit noch ohne Netbeans Unterstützung)===&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Einstellungen der Compiler und Pfade für vorhandene Bibliotheken erläutern&lt;br /&gt;
*Build-Konfiguration bei der man wählen kann, ob für Flash oder RAM kompiliert wird&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=33445</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=33445"/>
		<updated>2008-12-25T21:44:56Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: /* Netbeans Projekt erzeugen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
Das fertige Projekt, mit dem ab jetzt hier gearbeitet wird, kann [[Media:NetbeansARMProjekt.zip|hier]] heruntergeladen werden. Es basiert, wie zuvor beschrieben, auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch. Jedoch wurden einige Veränderungen und Anpassungen an Netbeans vorgenommen, sowie einige Dateien zur besseren Verständlichkeit umbenannt.&lt;br /&gt;
&lt;br /&gt;
===Makefile===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
===Controller programmieren===&lt;br /&gt;
Nach dem erfolgreichen Build des Projekts liegt das Ergebniss der vorgehenden Bemühungen in Form der Datei &amp;quot;main.bin&amp;quot; im Projektverzeichniss.&lt;br /&gt;
&lt;br /&gt;
Diese gilt es jetzt noch auf den Controller zu übertragen, so dass sie dort ausgeführt werden kann. Hierbei wird auf zwei Methoden eingegangen. Zum einen die Variante der Programmierung über JTAG und OpenOCD, zum anderen die Variante über den SAM-BA Bootloader. &lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels OpenOCD JTAG====&lt;br /&gt;
Zum Programmieren reicht es im Verzeichniss &amp;quot;E:\arm\&amp;quot; den Befehl &lt;br /&gt;
openocd -f at91sam7s256-armusbocd-flash-program.cfg in der Konsole (CMD) auszuführen. Je nach Art der Installation muss statt openocd der Befehl openocd-ftd2xx verwendet werden.  &lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; enthält Befehle die OpenOCD ausführt. In ihr wird auf eine weitere Datei &amp;quot;script.ocd&amp;quot; verwiesen. Diese enthält die eigentlichen Befehle zum Programmieren der Datei &amp;quot;main.bin&amp;quot; auf den Controller. &lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgreichen Durchlaufen des OpenOCD-Aufrufs, ist das Programm in den Controller übertragen. Auf der Konsole sollte dann folgendes zu sehen sein. &lt;br /&gt;
&lt;br /&gt;
Erscheint eine Ausgabe wie folgt dargestellt, sind Teile des zu beschreibenden Speichers über sogenannte Lock-Bits gesperrt. Dies passiert beispielsweise dann, wenn man den SAM-BA Bootloader über Chip-Reset in den ARM geladen hat. Der Bootloader versucht sich dann nämlich vor dem überschreiben zu schützen. Da wir jedoch genau in die Speicherregion schreiben wollen müssen die Lock-Bits gelöscht werden. Dazu werden in der Datei &amp;quot;script.ocd&amp;quot; die beiden Zeilen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # mww 0xffffff64 0x5a000004	#Lockbit 0 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
 # mww 0xffffff64 0x5a002004	#Lockbit 1 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auskommentiert ( das führende # entfernt) und OpenOCD erneut aufgerufen. Danach sollte man allerdings den Ursprungszustand wieder herstellen, da sonst bei jedem Programmieren eine Löschung der Lock-Bits vorgenommen wird, obwohl das nicht nötig ist. Theoretisch kann ein zu häufiges Schreiben auf diese Speicherstellen den Controller zerstören.&lt;br /&gt;
&lt;br /&gt;
Nach einem erneuten Ausführen des obigen Befehls sollte dann alles klappen. Das Programm ist nun im Controller und wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels SAM-BA====&lt;br /&gt;
tbc.&lt;br /&gt;
&lt;br /&gt;
(für Linux evt. interessant sam7utils [[http://oss.tekno.us/sam7utils/download.php]] als SAM-BA für Linux)&lt;br /&gt;
&lt;br /&gt;
===Debugging der Anwendung (zurzeit noch ohne Netbeans Unterstützung)===&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Einstellungen der Compiler und Pfade für vorhandene Bibliotheken erläutern&lt;br /&gt;
*Build-Konfiguration bei der man wählen kann, ob für Flash oder RAM kompiliert wird&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=33444</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=33444"/>
		<updated>2008-12-25T21:43:44Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: /* Ein Beispielprojekt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
Das fertige Projekt mit dem ab jetzt hier gearbeitet wird kann [[Media:NetbeansARMProjekt.zip|hier]] heruntergeladen werden. Es basiert wie zuvor beschrieben auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch. Jedoch wurden einige Veränderungen und Anpassungen an Netbeans vorgenommen, sowie einige Dateien zur besseren Verständlichkeit umbenannt.&lt;br /&gt;
===Makefile===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
===Controller programmieren===&lt;br /&gt;
Nach dem erfolgreichen Build des Projekts liegt das Ergebniss der vorgehenden Bemühungen in Form der Datei &amp;quot;main.bin&amp;quot; im Projektverzeichniss.&lt;br /&gt;
&lt;br /&gt;
Diese gilt es jetzt noch auf den Controller zu übertragen, so dass sie dort ausgeführt werden kann. Hierbei wird auf zwei Methoden eingegangen. Zum einen die Variante der Programmierung über JTAG und OpenOCD, zum anderen die Variante über den SAM-BA Bootloader. &lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels OpenOCD JTAG====&lt;br /&gt;
Zum Programmieren reicht es im Verzeichniss &amp;quot;E:\arm\&amp;quot; den Befehl &lt;br /&gt;
openocd -f at91sam7s256-armusbocd-flash-program.cfg in der Konsole (CMD) auszuführen. Je nach Art der Installation muss statt openocd der Befehl openocd-ftd2xx verwendet werden.  &lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; enthält Befehle die OpenOCD ausführt. In ihr wird auf eine weitere Datei &amp;quot;script.ocd&amp;quot; verwiesen. Diese enthält die eigentlichen Befehle zum Programmieren der Datei &amp;quot;main.bin&amp;quot; auf den Controller. &lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgreichen Durchlaufen des OpenOCD-Aufrufs, ist das Programm in den Controller übertragen. Auf der Konsole sollte dann folgendes zu sehen sein. &lt;br /&gt;
&lt;br /&gt;
Erscheint eine Ausgabe wie folgt dargestellt, sind Teile des zu beschreibenden Speichers über sogenannte Lock-Bits gesperrt. Dies passiert beispielsweise dann, wenn man den SAM-BA Bootloader über Chip-Reset in den ARM geladen hat. Der Bootloader versucht sich dann nämlich vor dem überschreiben zu schützen. Da wir jedoch genau in die Speicherregion schreiben wollen müssen die Lock-Bits gelöscht werden. Dazu werden in der Datei &amp;quot;script.ocd&amp;quot; die beiden Zeilen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # mww 0xffffff64 0x5a000004	#Lockbit 0 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
 # mww 0xffffff64 0x5a002004	#Lockbit 1 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auskommentiert ( das führende # entfernt) und OpenOCD erneut aufgerufen. Danach sollte man allerdings den Ursprungszustand wieder herstellen, da sonst bei jedem Programmieren eine Löschung der Lock-Bits vorgenommen wird, obwohl das nicht nötig ist. Theoretisch kann ein zu häufiges Schreiben auf diese Speicherstellen den Controller zerstören.&lt;br /&gt;
&lt;br /&gt;
Nach einem erneuten Ausführen des obigen Befehls sollte dann alles klappen. Das Programm ist nun im Controller und wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels SAM-BA====&lt;br /&gt;
tbc.&lt;br /&gt;
&lt;br /&gt;
(für Linux evt. interessant sam7utils [[http://oss.tekno.us/sam7utils/download.php]] als SAM-BA für Linux)&lt;br /&gt;
&lt;br /&gt;
===Debugging der Anwendung (zurzeit noch ohne Netbeans Unterstützung)===&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Einstellungen der Compiler und Pfade für vorhandene Bibliotheken erläutern&lt;br /&gt;
*Build-Konfiguration bei der man wählen kann, ob für Flash oder RAM kompiliert wird&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:NetbeansARMProjekt.zip&amp;diff=33443</id>
		<title>Datei:NetbeansARMProjekt.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:NetbeansARMProjekt.zip&amp;diff=33443"/>
		<updated>2008-12-25T21:43:14Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Netbeans Beispielprojekt für den Artikel &amp;quot;ARM Entwicklung unter Windows Vista&amp;quot;. Basierend auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Netbeans Beispielprojekt für den Artikel &amp;quot;ARM Entwicklung unter Windows Vista&amp;quot;. Basierend auf dem Beispielprojekt zu &amp;quot;Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch.&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=33442</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=33442"/>
		<updated>2008-12-25T21:26:14Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Anleitung zum Programmieren des Controllers begonnen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
===Controller programmieren===&lt;br /&gt;
Nach dem erfolgreichen Build des Projekts liegt das Ergebniss der vorgehenden Bemühungen in Form der Datei &amp;quot;main.bin&amp;quot; im Projektverzeichniss.&lt;br /&gt;
&lt;br /&gt;
Diese gilt es jetzt noch auf den Controller zu übertragen, so dass sie dort ausgeführt werden kann. Hierbei wird auf zwei Methoden eingegangen. Zum einen die Variante der Programmierung über JTAG und OpenOCD, zum anderen die Variante über den SAM-BA Bootloader. &lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels OpenOCD JTAG====&lt;br /&gt;
Zum Programmieren reicht es im Verzeichniss &amp;quot;E:\arm\&amp;quot; den Befehl &lt;br /&gt;
openocd -f at91sam7s256-armusbocd-flash-program.cfg in der Konsole (CMD) auszuführen. Je nach Art der Installation muss statt openocd der Befehl openocd-ftd2xx verwendet werden.  &lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdatei &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; enthält Befehle die OpenOCD ausführt. In ihr wird auf eine weitere Datei &amp;quot;script.ocd&amp;quot; verwiesen. Diese enthält die eigentlichen Befehle zum Programmieren der Datei &amp;quot;main.bin&amp;quot; auf den Controller. &lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgreichen Durchlaufen des OpenOCD-Aufrufs, ist das Programm in den Controller übertragen. Auf der Konsole sollte dann folgendes zu sehen sein. &lt;br /&gt;
&lt;br /&gt;
Erscheint eine Ausgabe wie folgt dargestellt, sind Teile des zu beschreibenden Speichers über sogenannte Lock-Bits gesperrt. Dies passiert beispielsweise dann, wenn man den SAM-BA Bootloader über Chip-Reset in den ARM geladen hat. Der Bootloader versucht sich dann nämlich vor dem überschreiben zu schützen. Da wir jedoch genau in die Speicherregion schreiben wollen müssen die Lock-Bits gelöscht werden. Dazu werden in der Datei &amp;quot;script.ocd&amp;quot; die beiden Zeilen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # mww 0xffffff64 0x5a000004	#Lockbit 0 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
 # mww 0xffffff64 0x5a002004	#Lockbit 1 löschen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auskommentiert ( das führende # entfernt) und OpenOCD erneut aufgerufen. Danach sollte man allerdings den Ursprungszustand wieder herstellen, da sonst bei jedem Programmieren eine Löschung der Lock-Bits vorgenommen wird, obwohl das nicht nötig ist. Theoretisch kann ein zu häufiges Schreiben auf diese Speicherstellen den Controller zerstören.&lt;br /&gt;
&lt;br /&gt;
Nach einem erneuten Ausführen des obigen Befehls sollte dann alles klappen. Das Programm ist nun im Controller und wird ausgeführt.&lt;br /&gt;
&lt;br /&gt;
====Programmierung mittels SAM-BA====&lt;br /&gt;
&lt;br /&gt;
===Debugging der Anwendung (zurzeit noch ohne Netbeans Unterstützung)===&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Einstellungen der Compiler und Pfade für vorhandene Bibliotheken erläutern&lt;br /&gt;
*Build-Konfiguration bei der man wählen kann, ob für Flash oder RAM kompiliert wird&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=33422</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=33422"/>
		<updated>2008-12-24T18:01:39Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Build-Ausgaben hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildOk.jpg|700px|Erfolgreicher erster Build]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansARMDemoBuildErr.jpg|700px|Fehlgeschlagener Build aufgrund des oben erwähnten Fehler im MSYS/MinGW Systems]]&lt;br /&gt;
&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:NetbeansARMDemoBuildOk.jpg&amp;diff=33421</id>
		<title>Datei:NetbeansARMDemoBuildOk.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:NetbeansARMDemoBuildOk.jpg&amp;diff=33421"/>
		<updated>2008-12-24T17:57:03Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Erfolgreicher erster Build&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:NetbeansARMDemoBuildOk.jpg&amp;diff=33420</id>
		<title>Datei:NetbeansARMDemoBuildOk.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:NetbeansARMDemoBuildOk.jpg&amp;diff=33420"/>
		<updated>2008-12-24T17:56:35Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Erfolgreicher erste Build&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Erfolgreicher erste Build&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:NetbeansARMDemoBuildErr.jpg&amp;diff=33419</id>
		<title>Datei:NetbeansARMDemoBuildErr.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:NetbeansARMDemoBuildErr.jpg&amp;diff=33419"/>
		<updated>2008-12-24T17:56:01Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Fehlgeschlagener Build aufgrund eines Fehlers im MSYS/MinGW Systems.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fehlgeschlagener Build aufgrund eines Fehlers im MSYS/MinGW Systems.&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=33418</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=33418"/>
		<updated>2008-12-24T17:44:40Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Bilder zur Veranschaulichung des Vorgehens hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-09-28&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.12&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.8 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash-program.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle, beispielsweise &amp;quot;E:\arm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Zum Erstellen eines neuen Projekts wird Netbeans gestartet und man wählt im Dateimenü den Punkt &amp;quot;Neues Projekt&amp;quot; aus.&lt;br /&gt;
[[Bild:NetbeansCNewProject0.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1]]&lt;br /&gt;
[[Bild:NetbeansCNewProject1.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject2.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject3.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject4.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:NetbeansCNewProject5.jpg|thumb|200px|Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6]]&lt;br /&gt;
&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject5.jpg&amp;diff=33417</id>
		<title>Datei:NetbeansCNewProject5.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject5.jpg&amp;diff=33417"/>
		<updated>2008-12-24T17:41:11Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Erstellung eines neuen Netbeans C/C++ Projekts Schritt 6&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject4.jpg&amp;diff=33416</id>
		<title>Datei:NetbeansCNewProject4.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject4.jpg&amp;diff=33416"/>
		<updated>2008-12-24T17:40:45Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Erstellung eines neuen Netbeans C/C++ Projekts Schritt 5&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject3.jpg&amp;diff=33415</id>
		<title>Datei:NetbeansCNewProject3.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject3.jpg&amp;diff=33415"/>
		<updated>2008-12-24T17:40:22Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Erstellung eines neuen Netbeans C/C++ Projekts Schritt 4&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject2.jpg&amp;diff=33414</id>
		<title>Datei:NetbeansCNewProject2.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject2.jpg&amp;diff=33414"/>
		<updated>2008-12-24T17:39:55Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Erstellung eines neuen Netbeans C/C++ Projekts Schritt 3&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject1.jpg&amp;diff=33413</id>
		<title>Datei:NetbeansCNewProject1.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject1.jpg&amp;diff=33413"/>
		<updated>2008-12-24T17:39:28Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Erstellung eines neuen Netbeans C/C++ Projekts Schritt 2&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject0.jpg&amp;diff=33412</id>
		<title>Datei:NetbeansCNewProject0.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:NetbeansCNewProject0.jpg&amp;diff=33412"/>
		<updated>2008-12-24T17:38:52Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Erstellung eines neuen Netbeans C/C++ Projekts Schritt 1&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28846</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28846"/>
		<updated>2008-06-29T17:30:40Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: /* Yagarto Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-08-04&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.11&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools-20070303\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfadnamen führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools-20070303\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP v1.11&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.7 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools-20070303\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]][[Kategorie:Wettbewerb]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28845</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28845"/>
		<updated>2008-06-29T17:29:18Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Bilder zur Erklärung des Speicheraufbaus und des Linker-Scripts hinzugefügt. Beschreibung fehlt noch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-08-04&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.11&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools-20070303\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfad führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt.Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools-20070303\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP v1.11&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.7 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools-20070303\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
&lt;br /&gt;
===Linker Script===&lt;br /&gt;
[[Bild:MemoryMapping.gif|thumb|200px|Speicherbereiche der Atmel AT91SAM7 Controller-Serie mit Start- und Endadressen]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryAreas.gif|thumb|200px|Speicherverwendung durch das Linker-Script]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:MemoryLocation.gif|thumb|200px|Auszug des Speichers mit Positionen der einzelnen Datenfelder]]&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]][[Kategorie:Wettbewerb]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:MemoryLocation.gif&amp;diff=28844</id>
		<title>Datei:MemoryLocation.gif</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:MemoryLocation.gif&amp;diff=28844"/>
		<updated>2008-06-29T17:16:57Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Memory Structure of the Atmel AT91SAM7 Microcontroller Series

Own creation based on information provided in Datasheets for Atmel AT91SAM7 Series&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Memory Structure of the Atmel AT91SAM7 Microcontroller Series&lt;br /&gt;
&lt;br /&gt;
Own creation based on information provided in Datasheets for Atmel AT91SAM7 Series&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:MemoryMapping.gif&amp;diff=28843</id>
		<title>Datei:MemoryMapping.gif</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:MemoryMapping.gif&amp;diff=28843"/>
		<updated>2008-06-29T17:16:14Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Memory Structure of the Atmel AT91SAM7 Microcontroller Series

Own creation based on information provided in Datasheets for Atmel AT91SAM7 Series&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Memory Structure of the Atmel AT91SAM7 Microcontroller Series&lt;br /&gt;
&lt;br /&gt;
Own creation based on information provided in Datasheets for Atmel AT91SAM7 Series&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:MemoryAreas.gif&amp;diff=28842</id>
		<title>Datei:MemoryAreas.gif</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:MemoryAreas.gif&amp;diff=28842"/>
		<updated>2008-06-29T17:13:41Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Memory Areas of the Atmel AT91SAM7 Microcontroller Series
Own creation based on information provided in Datasheets for Atmel AT91SAM7 Series&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Memory Areas of the Atmel AT91SAM7 Microcontroller Series&lt;br /&gt;
Own creation based on information provided in Datasheets for Atmel AT91SAM7 Series&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28821</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28821"/>
		<updated>2008-06-28T17:33:00Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Bescheibung des Beispielprojekts begonnen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-08-04&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.11&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools-20070303\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfad führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt.Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools-20070303\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP v1.11&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.7 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch.&lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools-20070303\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
Um mit der Entwicklungsumgebung vertraut zu werden lädt man die Beispiele der Atmel Applicaton Note &amp;quot;Using Open Source Tools for AT91SAM7 Cross Development&amp;quot; herunter. Zu finden sind diese auf der Atmel Homepage unter &amp;quot;Products &amp;gt; AT91SAM 32-bit ARM-based Microcontrollers &amp;gt; Application Notes&amp;quot; und dort im Abschnitt &amp;quot;Development Tools&amp;quot;. Die im ZIP-File enthaltenen Beispiele und die Dokumentation ist für weitere Projekte ein sinnvoller Anlaufpunkt. &lt;br /&gt;
&lt;br /&gt;
Aus dem Zip-File entpackt man den Ordner &amp;quot;demo_at91sam7_blink_flash&amp;quot; und die beiden Dateien &amp;quot;at91sam7s256-armusbocd-flash.cfg&amp;quot; und &amp;quot;at91sam7s256-armusbocd.cfg&amp;quot; an eine beliebige Stelle.&lt;br /&gt;
&lt;br /&gt;
===Netbeans Projekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]][[Kategorie:Wettbewerb]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28818</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28818"/>
		<updated>2008-06-28T15:59:33Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: TODO Liste hinzgefügt und Beschreibung der Netbeans Einrichtung angefangen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-08-04&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.11&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools-20070303\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfad führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt.Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools-20070303\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP v1.11&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.7 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch&amp;lt;/ref&amp;gt; Tutorial von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Vorallem im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. &lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus. Im Options-Fenster wahlt man die Konfiguration für C/C++ aus. Der erste Listenreiter enthält Angaben zu den Build-Tools. Hier kann man sogennannte Tool-Collections zusammenstellen. Evt. besteht bereist eine Collection, da Netbeans beim ersten Start in Pfad nach Compilern sucht und automatisch eine Collection erstellt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Button Add lässt sich eine neue Collection erstellen. Als Base Direktory wird &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin&amp;quot; gewählt. Für den Namen kann beispielsweise &amp;quot;Yagarto ARM&amp;quot; vergeben werden. Die Collection Family kann auf GNU stehen bleiben.&lt;br /&gt;
Nach einem Klick auf OK, wird die neue Collection angelegt. Jedoch findet Netbeans die Compiler-Executables nicht, da es z.B. nach gcc sucht, die Compiler aber den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe&amp;quot;. C++-Compiler ist &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe&amp;quot;. Make findet sich in &amp;quot;C:\Program Files\Devel\ARM\yagarto-tools-20070303\bin\make.exe&amp;quot; und der Debugger in &amp;quot;C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gdb.exe&amp;quot;. Ein Fortran-Compiler wird nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
* Nach selbiger Vorgehensweise lässt sich auch die WinAVR-Toolchain mit Netbeans nutzen.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden. Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
=TODO=&lt;br /&gt;
*Bilder zur Erläuterung einfügen?&lt;br /&gt;
*Beschreibungen verbessern&lt;br /&gt;
*Auf weitere Projekt Optionen in Netbeans eingehen&lt;br /&gt;
*Debugging in Netbeans erläutern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]][[Kategorie:Wettbewerb]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28817</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28817"/>
		<updated>2008-06-28T15:36:23Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Einrichtung und Test von OpenOCD geschrieben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-08-04&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.11&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools-20070303\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfad führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt.Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools-20070303\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert.&lt;br /&gt;
&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
Das Atmel ISP Tool wird in &amp;quot;.\AT91-ISP v1.11&amp;quot; installiert.&lt;br /&gt;
Es bringt zwei Programme mit sich. SAM-BA V2.7 und SAM-PROG v2.4. SAM-PROG erlaubt den einfachen Download den Download von Binaries in den Controller, während SAM-BA auch Speicherinhalte anzeigen und auslesen und bearbeiten kann. Zudem lassen sich über TCL-Scripte Befehle automatisiert ausführen. Unter Windows Vista x64 fehlen leider die USB-Treiber für den USB-Bootloader, so dass SAM-BA hier leider noch nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
Zuerst ist es sinvoll die Installation der Software auf grundlegende Funktion zu testen. Zur Überprüfung der Funktionalität des JTAG-Interfaces wechselt man in den bin-Ordner im Installationsverzeichnis von OpenOCD. Dort wird ein Terminal geöffnet. (Am schnellsten geht das mit einem Rechtsklick + Shift im Ordner und dann &amp;quot;Open Command Window here&amp;quot;.)&lt;br /&gt;
Nach dem Anschließen des Target Boards an den USB-OCD-Tiny Adapter und dessen Verbindung zum PC ruft man das Programm openodc-ftd2xx.exe auf. Ohne weitere Paramter beschwert sich OpenOCD dass es kein Script-File finden kann. Um ein Scriptfile anzugeben benötigt man den Parameter -f gefolgt vom Dateinamen des Scripts. Im Falle des verwendeten AT91SAM7S256 liefert OpenOCD bereits ein Script (sam7s_armusbocd.cfg) mit. Es liegt im Unterordner scripts\sam7s256. Der neue Aufruf lautet jetzt openocd-ftd2xx.exe -f scripts\sam7s256\sam7s_armusbocd.cfg. Allerdings ist die USB-Vid im Script für das USB-OCD-JTAG eingestellt. Bei Verwendung des USB-OCD-TINY muss diese noch von 0x003 auf 0x004 geändert werden. Ebenfalls muss in der Zeile &amp;quot;ft2232_device_desc&amp;quot; der Eintrag &amp;quot;Olimex OpenOCD JTAG A&amp;quot; in &amp;quot;Olimex OpenOCD JTAG TINY A&amp;quot; geändert werden. Um beide Tools USB-OCD ohne fortwährende Änderungen an der Script-Datei verwenden zu können bietet es sich an eine Kopie als sam7s_armusbocdtiny.cfg abzuspeichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte ein Aufruf von OpenOCD die Ausgabe &amp;quot;JTAG Device found ausgeben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Warscheinlich wird es dann mit &amp;quot;couldn&#039;t open script file&amp;quot; stehenbleiben. Das liegt daran, dass im sam7s256 Script auf eine weiteres Script mit dem Namen &amp;quot;sam7s_reset.script&amp;quot; verwiesen wird, welches sich im Ordner ./prj/ befinden soll. Ein Beispiel reset-Script liegt im selben Ordner wie das sam7s-Script auch. Später kann man dieses einfach in sein Projekt übernehmen und ggf. Inhalt und Pfade anpassen. Jetzt kann die Meldung erstmal ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Verbindung zum OpenOCD-Sever zu prüfen wird Putty geöffnet und eine Telnet-Verbindung zum localhost auf Port 4444 aufgebaut. Bei erfolgreichem Verbindungsaufbau sollte als Begrüßung &amp;quot;Open On-Chip Debugger&amp;quot; und eine Eingabezeile im Putty-Fenster erscheinen. Die Eingabe von &amp;quot;help&amp;quot; liefert eine Liste der verfügbaren Kommandos. Prinzipiell ist hiermit bereits ein Debugging möglich. Ein testweises &amp;quot;poll&amp;quot;-Kommando sollte Anzeigen, dass der Controller im Zustand halted ist. Mit &amp;quot;shudown&amp;quot; wird der OpenOCD-Server beendet und die Telnet-Verbindung getrennt. Sind bis hier her keine Fehler aufgetreten funktioniert die JTAG Verbindung zum Target. Als nächstes steht die Einrichtung der Compiler in Netbeans an.&lt;br /&gt;
&lt;br /&gt;
* Bis hierhin kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain unter Windows Vista angesehen werden. Er ergänzt damit das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch&amp;lt;/ref&amp;gt; Tutorial von James P. Lynch, das bei Atmel heruntergeladen werden kann. In diesem ist ausfühlich die Benutzung von Eclipse als IDE zur ARM Entwicklung beschrieben. Vorallem im Debugging ist Eclipse zurzeit der Netbeans Lösung vorraus, da bei Netbeans das Debugging noch nicht funktioniert. &lt;br /&gt;
&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden. Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]][[Kategorie:Wettbewerb]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28816</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28816"/>
		<updated>2008-06-28T14:31:52Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Fehlende USB-VID und PID von FTDI hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath [http://openocd.berlios.de/web] eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-08-04&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.11&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite [http://ftdichip.com] die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID 0403, PID 6001 und 6010) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools-20070303\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfad führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt.Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter [http://www.madwizard.org/electronics/articles/winavrvista]. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools-20070303\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
===Putty===&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
==Ein Beispielprojekt==&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki ([[ARM_GCC_toolchain_for_Linux_and_Mac_OS_X]]) genommen werden. OpenOCD ist z.B Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
&lt;br /&gt;
Abgesehen von dem Abschnitt über die Konfiguration von Netbeans kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain angesehen werden. Er ergänzt dann das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C&amp;quot; von James P. Lynch&amp;lt;/ref&amp;gt; Tutorial von James P. Lynch, das bei Atmel heruntergeladen werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden. Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]][[Kategorie:Wettbewerb]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28815</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28815"/>
		<updated>2008-06-28T14:18:26Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: /* Yagarto Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath ([http://openocd.berlios.de/web]) eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-08-04&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.11&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite (http://ftdichip.com) die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID, PID) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools-20070303\” installiert.&lt;br /&gt;
&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfad führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt.Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter http://www.madwizard.org/electronics/articles/winavrvista. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools-20070303\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
Putty&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
===Ein Beispielprojekt===&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki (http://www.mikrocontroller.net/articles/ARM_GCC_toolchain_for_Linux_and_Mac_OS_X) genommen werden. OpenOCD ist Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
Abgesehen von dem Abschnitt über die Konfiguration von Netbeans kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain angesehen werden. Er ergänzt dann das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C” Tutorial von James P. Lynch, das bei Atmel heruntergeladen werden kann.&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden. Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]][[Kategorie:Wettbewerb]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28814</id>
		<title>Einstieg in die ARM Entwicklung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Einstieg_in_die_ARM_Entwicklung&amp;diff=28814"/>
		<updated>2008-06-28T14:16:42Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Erste Version eingestellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel beschreibt die Einrichtung und Inbetriebnahme von OpenOCD zusammen mit Yagarto unter Windows Vista und Windows Vista x64. Vor allem im Bezug auf die Toolchain lauern unter Vista (besonders x64) verschieden Fallen die mit Hilfe des Artikels umschifft werden können. Als IDE für die grafische Entwicklung wird Netbeans beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Beschreibung der eingesetzten Tools==&lt;br /&gt;
Als Zielhardware zur Beschreibung dient ein Atmel AT91SAM7S256, auf einem Olimex SAM7-H256 Board. Die Anleitung ist aber auch auf andere ARM-Targets anwendbar. Auf die Unterschiede zwischen den eingesetzten Controller wird gezielt hingewiesen. Zur Programmierung wird Atmels SAM-BA Tool, sowie das JTAG-Interface ARM-USB-Tiny von Olimex eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Software kommen Entwicklungstools aus der Yagarto-Toolchain von Michael Fischer zu Einsatz. Die Toolchain kann unter www.yagarto.de heruntergeladen werden. Sie enthält neben den OnChipDebugger Tool OpenOCD von Dominic Rath ([http://openocd.berlios.de/web]) eine komplette GNU-Compiler-Collection zum Erstellen von C Programmen für ARM 7 und ARM 9 Targets.&lt;br /&gt;
&lt;br /&gt;
Die Yagarto-Toolchain besteht aus vier Paketen. Das Paket „Open On-Chip Debugger” enthält den On-Chip-Debugger OpenOCD. Die „Yagarto Tools“, stellen grundlegende Linux Tools wie make und sh zu Verfügung. Das Paket „YAGARTO GNU ARM Toolchain“ schließlich enthält Compiler, Debugger und die restliche Entwicklungsumgebung. Im vierten Paket „Integrated Development Environment“ befinedet sich eine Version von Eclipse, die speziell für die ARM Entwicklung geeignet ist. Auf dieses Paket kann im vorliegenden Fall verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Als grafische Oberfläche für die Entwicklung wird Netbeans mit C/C++ Pack eingesetzt. Die hier beschriebenen Installationshinweise für die Toolchain gelten aber auch für die Verwendung einer anderen IDE wie z.B. Eclipse&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;sortable&amp;quot; id=&amp;quot;table 1&amp;quot;&lt;br /&gt;
|+border=&amp;quot;1&amp;quot;| Tabelle 1: Eingesetze Software und deren Versionsnummern&lt;br /&gt;
|-&lt;br /&gt;
!Software&lt;br /&gt;
!Version&lt;br /&gt;
|-&lt;br /&gt;
|Open On-Chip Debugger&lt;br /&gt;
|R717 2008-06-19&lt;br /&gt;
|-&lt;br /&gt;
|Yagarto Tools&lt;br /&gt;
|2007-03-03&lt;br /&gt;
|-&lt;br /&gt;
|YAGARTO GNU ARM Toolchain&lt;br /&gt;
|2008-08-04&lt;br /&gt;
|-	&lt;br /&gt;
|Netbeans IDE + C/C++ Pack&lt;br /&gt;
|6.1&lt;br /&gt;
|-&lt;br /&gt;
|Putty&lt;br /&gt;
|beta 0.60&lt;br /&gt;
|-&lt;br /&gt;
|ATMEL AT91-ISP&lt;br /&gt;
|v1.11&lt;br /&gt;
|-&lt;br /&gt;
|Windows Vista Command Shell (cmd)&lt;br /&gt;
|6.0.6001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hardwareinstallation==&lt;br /&gt;
Das verwendete SAM7-H256 Board von Olimex kann auf zwei Arten angesprochen werden. Über den Atmel eigenen SAM-BA Booaloader im Controller über USB (theoretisch kann SAM-BA auch eine UART, CAN oder JTAG Verbindung verwenden, dies wird hier aber nicht betrachtet) oder über das standardisierte 20-Pin-JTAG-Interface. Für die Verbindung mit SAM-BA muss der Treiber für den SAM-BA Bootloader installiert werden. Für die JTAG-Verbindung ist der Treiber für das USB-OCD-TINY von Olimex nötig.&lt;br /&gt;
===Treiberinstallation USB-OCD(-TINY)===&lt;br /&gt;
Für die 32 Bit Version von Windows Vista liefert Olimex Treiber für die USB-OCD-Adapter mit, bzw. diese können auf der Homepage herunter geladen werden. Die Treiber können einfach installiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Vista x64 sind keine Treiber verfügbar, jedoch kann man die Treiber für den im USB-OCD eingesetzten FTDI-Chip verwenden. Dazu werden von der FTDI-Webseite (http://ftdichip.com) die aktuellen VCP bzw. D2XX Treiber (beide Links verweisen auf dieselbe Datei) herunterzuladen. Zu der Zeit als dieses Tutorial geschrieben wurde ist die Treiberversion 2.04.06 vom 20.03.2008 aktuell. Die heruntergeladene ZIP-Datei muss entpackt werden und im so entstandenen Ordner „CDM 2.04.06 WHQL Certified“ die Dateien „ftdibus.inf“und ftdiport.inf angepasst werden. Die Anpassungen betreffen die USB VID und PID, sowie den Device-String. Die VID und PID muss von den Werten von FTDI (VID, PID) auf die von Olimex geändert werden. Suchen und ersetzen in einem einfachen Editor sollte ausreichen. Für das USB-OCD ist die neue VID 15BA und die PID 0003. Für das USB-OCD-Tiny gilt die VID 15BA und die PID 0004. Danach müssen noch die Device-Strings in beiden Dateien wie nachfolgend dargestellt angepasst werden. Nach der Änderung sollte z.B. der Abschnitt „Strings“ der ftdiport.inf-Datei folgende Zeilen enthalten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
FTDI=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk&amp;quot;&lt;br /&gt;
PortsClassName = &amp;quot;Ports (COM &amp;amp; LPT)”&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG TINY PORT&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Port Driver&amp;quot;&lt;br /&gt;
SerEnum.SvcDesc=&amp;quot;Serenum Filter Driver&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ftdibus.inf sollte im Abschnitt „Strings“ folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Strings]&lt;br /&gt;
Ftdi=&amp;quot;FTDI&amp;quot;&lt;br /&gt;
DESC=&amp;quot;CDM Driver Package&amp;quot;&lt;br /&gt;
DriversDisk=&amp;quot;FTDI USB Drivers Disk”&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_00.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 1&amp;quot;&lt;br /&gt;
USB\VID_15BA&amp;amp;PID_0004&amp;amp;MI_01.DeviceDesc=&amp;quot;Olimex OpenOCD JTAG Tiny 2&amp;quot;&lt;br /&gt;
SvcDesc=&amp;quot;USB Serial Converter Driver&amp;quot;&lt;br /&gt;
ClassName=&amp;quot;USB&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem die Dateien entsprechend angepasst wurden kann das USB-OCD-(Tiny) an den USB-Port angeschlossen werden. Wird der Treiber nicht automatisch gefunden muss der Speicherort entsprechend angegeben werden. Die so angepassten Treiber können auch für die 32 Bit Version von Vista verwendet werden, da das Paket beide Versionen unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Treiberinstallation Atmel SAM-BA===&lt;br /&gt;
Zur Installation des USB-Treibers für SAM-BA muss SAM-BA aus dem ROM des AT91SAMS256-Controllers geladen werden. Das zu ist es beim vorliegenden Board nötig, den Test-Jumper zu schließen und den Controller für 10 Sekunden mit Spannung zu versorgen. Danach wird der Test-Jumper wider geöffnet und nach dem Anstecken an den USB-Port startet SAM-BA. Achtung: Bei anderen Atmel-Controllern bzw. Boards die Vorgehensweise der Anleitung entnehmen. SAM-BA funktioniert nur mit Atmel-Controllern.&lt;br /&gt;
Nach dem Anstecken an den USB-Port sollte der PC“Neue Hardware gefunden“ melden. Ist das Programm AT91-ISP korrekt installiert, sollte der Treiber automatisch installiert werden. Für Windows Vista x64 gibt es bisher noch keinen Treiber.&lt;br /&gt;
&lt;br /&gt;
==Softwareinstallation==&lt;br /&gt;
Bei der Installtion der Software gibt bezüglich der Pfade zu beachten, dass Teile der Yagarto Tools Probleme mit Klammern im Dateinamen haben. Dies führt vor allem unter Vista x64 zu Problemen, da das Standard-Verzeichnis unterhalb des Ordners „Progamm Files (x86)“ bzw. „Programme (x86)“ liegt. Mit Leerzeichen kommen die Tools jedoch zurecht, nur das Netbeans C/C++ Pack hat noch an einer Stelle ein Problem damit. Dieses Problem ist jedoch nicht von großer Bedeutung. Eine Installation in den „Program Files“ Ordner bzw. den Ordner „Programme“ in der deutschen Version ist also möglich. Im Folgenden wird davon ausgegangen, dass das Stammverzeichnis der installierten Programme ein Unterverzeichnis von „c:\Program Files\Devel\ARM“ ist.&lt;br /&gt;
===YAGARTO GNU ARM Toolchain===&lt;br /&gt;
Die Toolchain wird in „.\yagarto\“ installiert.&lt;br /&gt;
===Yagarto Tools===&lt;br /&gt;
Die Tools werden in „.\yagarto-tools-20070303\” installiert&lt;br /&gt;
Neben den bereits erwähnten Problemen mit Klammern im Pfad haben die Yagarto Tools noch ein weiteres Problem. Klammer im Pfad führen dazu, dass make unter bestimmten Bedingungen mit einer Exception abstürzt. Doch selbst wenn keine Klammern im Pfad vorhanden sind, kommt es immer noch zu Abstürzen. Dies liegt daran, dass die in den Tools enthaltene Shell „sh.exe“ beim Ausführen mit „sync_with_child“ abstürzt und damit make ebenfalls zum Absturz bringt. Dies geht auf einen Fehler im API-Aufruf „CreateProcess“ in der „msys-1.0.dll“ des zugrundeliegenden MSYS/MinGW Systems auf Vista x64 zurück. Details zu dem Problem, sowie eine gepachte Version der Datei (msys-1.0-vista64.zip) finden sich finden sich unter http://www.madwizard.org/electronics/articles/winavrvista. Mit der gepachten Version wird die msys-1.0.dll im Ordner „.\yagarto-tools-20070303\bin“ ersetzt. Danach sollten die Tools ordnungsgemäß funktionieren. Es gibt zwar bereits eine neuere Version der msys.dll, jedoch noch keine Toolchain die mit dieser übersetzt wurde.&lt;br /&gt;
===Open On-Chip Debugger===&lt;br /&gt;
OpenOCD wird in “.\openocd-r717\” installiert&lt;br /&gt;
===Netbeans IDE===&lt;br /&gt;
Die Netbeans IDE kann an beliebiger Stelle installiert werden. Wer bereits eine aktuelle Java Runtime installiert hat, kann das C/C++ Bundle installieren. Sonst muss entweder zuvor eine Java Runtime installiert werden, oder man benutzt gleich das All-Bundle.&lt;br /&gt;
Putty&lt;br /&gt;
Putty dient als Terminal für testweise Telnet-Verbindungen zum OpenOCD Server. Da Vista von sich aus kein Telnet mehr an Board hat. Es kann unter http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html heruntergeladen werden und ist ohne Installation lauffähig.&lt;br /&gt;
===ATMEL AT91-ISP===&lt;br /&gt;
==Software einrichten==&lt;br /&gt;
===Netbeans C/C++ Pack konfigurieren===&lt;br /&gt;
===Ein Beispielprojekt===&lt;br /&gt;
===Makefile anpassen===&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Die hier aufgeführten Konfigurationseinstellungen zur Einrichtung der Toolchain in Netbeans funktionieren genauso auch unter Linux. Hier kann z.B. die  Toolchain aus dem Mikrocontroller Wiki (http://www.mikrocontroller.net/articles/ARM_GCC_toolchain_for_Linux_and_Mac_OS_X) genommen werden. OpenOCD ist Bestandteil der aktuellen Debian Distribution.&lt;br /&gt;
Sobald der Support eines externen GDB im Netbeans ordentlich funktioniert, wird der Artikel um ein Kapitel über Debugging erweitert.&lt;br /&gt;
Abgesehen von dem Abschnitt über die Konfiguration von Netbeans kann der Artikel als allgemeiner Einrichtungshinweis für die Yagarto-Toolchain angesehen werden. Er ergänzt dann das sehr gute „Using Open Source Tools for AT91SAM7S Cross Development REV C” Tutorial von James P. Lynch, das bei Atmel heruntergeladen werden kann.&lt;br /&gt;
Die Einrichtung der WinAVR Compiler unter Netbeans funktioniert genauso wie hier anhand der ARM-Compiler beschrieben. Damit kann Netbeans auch als IDE für die AVR-Entwicklung auf Windows und Linux verwendet werden. Die Anmerkungen die für die Installation der Yagarto-Tools bezüglich der Dateinamen und des Patchens gemacht wurden gelten auch für die WinAVR-Umgebung unter Vista.&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]][[Kategorie:Wettbewerb]]&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=ZigBeeModule&amp;diff=27852</id>
		<title>ZigBeeModule</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=ZigBeeModule&amp;diff=27852"/>
		<updated>2008-05-09T11:10:16Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Herstellerliste ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ZigBee Hardware-Module =&lt;br /&gt;
Dieser Artikel solle eine Auflistung aktuell am Markt vorhandener ZigBee Hardware geben.&lt;br /&gt;
&lt;br /&gt;
Gelistet werden soll der Name des Moduls, der Hersteller, der zugrundeliegende Chipsatz, Empfangsempfindlichkeit, Sendeleistung, Energieaufnahme, eventuelle Softwarestacks und deren Lizenzen, sowie ein Link zum Datenblatt oder der Produktseite des Herstellers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;hiddentext&amp;gt;generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7&amp;lt;\hiddentext&amp;gt;&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| width=&amp;quot;94&amp;quot; height=&amp;quot;18&amp;quot; | Modul&lt;br /&gt;
| width=&amp;quot;94&amp;quot; | Hersteller&lt;br /&gt;
| width=&amp;quot;40&amp;quot; | Sendel.&lt;br /&gt;
| width=&amp;quot;34&amp;quot; | Empf.&lt;br /&gt;
| width=&amp;quot;64&amp;quot; | Stromaufn.&lt;br /&gt;
| width=&amp;quot;62&amp;quot; | RSSI Range&lt;br /&gt;
| width=&amp;quot;55&amp;quot; | RSSI Aufl.&lt;br /&gt;
| width=&amp;quot;67&amp;quot; | Ansteuerung&lt;br /&gt;
| width=&amp;quot;78&amp;quot; | Antennen&lt;br /&gt;
| width=&amp;quot;246&amp;quot; | Sonstiges&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; height=&amp;quot;18&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
 | dBm&lt;br /&gt;
 | dBm&lt;br /&gt;
 | mA bei 3,3V&lt;br /&gt;
 | dB&lt;br /&gt;
 | dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Xbee Series 2&lt;br /&gt;
 | Digi (Maxstream)&lt;br /&gt;
 | 0&lt;br /&gt;
 | -97&lt;br /&gt;
 | 40&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , nur Punkt zu Punkt verbindugen, Chip eigen&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Xbee Series 1&lt;br /&gt;
 | Digi (Maxstream)&lt;br /&gt;
 | 0&lt;br /&gt;
 | -92&lt;br /&gt;
 | 45&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , nur Punkt zu Punkt verbindugen, Chip eigen&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Xbee Series 1pro&lt;br /&gt;
 | Digi (Maxstream)&lt;br /&gt;
 | 35&lt;br /&gt;
 | -100&lt;br /&gt;
 | 215&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Dk , Leistungsverstärkter integriert, Chip eigen&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | PAN 4555&lt;br /&gt;
 | Panasonic&lt;br /&gt;
 | 0&lt;br /&gt;
 | -98&lt;br /&gt;
 | 44&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , kein Stack (Freescale Stack nutzbar)&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | PAN 4570&lt;br /&gt;
 | Panasonic&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | 41,5&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , kein Stack (Ember Stack nutzbar)&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2000&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | -3&lt;br /&gt;
 | -101&lt;br /&gt;
 | 25&lt;br /&gt;
 | 45&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART, I2C&lt;br /&gt;
 | wire (self)&lt;br /&gt;
 | Chip: CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2100&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | 0&lt;br /&gt;
 | -94&lt;br /&gt;
 | 22&lt;br /&gt;
 | 45&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART, I2C&lt;br /&gt;
 | wire (self)&lt;br /&gt;
 | Chip: CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2200&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | 0&lt;br /&gt;
 | -94&lt;br /&gt;
 | 30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Chip: CC2431&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2300&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | 0&lt;br /&gt;
 | -94&lt;br /&gt;
 | 27&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Chip: CC2431&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ETRX2&lt;br /&gt;
 | Telegesis&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | -&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | STRX2&lt;br /&gt;
 | Telegesis&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | -&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | E/STRX2-PA&lt;br /&gt;
 | Telegesis&lt;br /&gt;
 | 18&lt;br /&gt;
 | -98&lt;br /&gt;
 | -&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Zebra 241X&lt;br /&gt;
 | Sentec Elektronik&lt;br /&gt;
 | 10&lt;br /&gt;
 | -97&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | Freescale Stack nutzbar, Leistungsverstärker&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | AMB 2130&lt;br /&gt;
 | Amber Wireless&lt;br /&gt;
 | 8&lt;br /&gt;
 | -98&lt;br /&gt;
 | 46&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | ATMega 128&lt;br /&gt;
 | MMCX Buchse&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM250 SOC&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | 41,5&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack, nur Chipset&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM260&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 4,5&lt;br /&gt;
 | -100&lt;br /&gt;
 | 34&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | SPI&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack, nur Chipset&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZMN2400&lt;br /&gt;
 | Cirronet&lt;br /&gt;
 | 0&lt;br /&gt;
 | -92&lt;br /&gt;
 | 30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | ATMega&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | Chip: CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZMN2340&lt;br /&gt;
 | Cirronet&lt;br /&gt;
 | 18&lt;br /&gt;
 | -95&lt;br /&gt;
 | 130&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | 8051 uC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Chip: CC2430, Leistungsverstärker&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZDM-A1281-A2&lt;br /&gt;
 | Meshnetics&lt;br /&gt;
 | -3&lt;br /&gt;
 | -101&lt;br /&gt;
 | 19&lt;br /&gt;
 | 81&lt;br /&gt;
 | 5dB&lt;br /&gt;
 | ATMega 128&lt;br /&gt;
 | chip&lt;br /&gt;
 | Chip: AT86RF230, eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZDM-A1281-PN&lt;br /&gt;
 | Meshnetics&lt;br /&gt;
 | 20&lt;br /&gt;
 | -104&lt;br /&gt;
 | 50&lt;br /&gt;
 | 81&lt;br /&gt;
 | 5dB&lt;br /&gt;
 | ATMega 128&lt;br /&gt;
 | self&lt;br /&gt;
 | Chip: AT86RF230, eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | JN5139&lt;br /&gt;
 | Jennic&lt;br /&gt;
 | 3&lt;br /&gt;
 | -95&lt;br /&gt;
 | 37&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | Risc uC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | eigenes Chipset&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | TI CC2430&lt;br /&gt;
 | Texas Instruments&lt;br /&gt;
 | 0&lt;br /&gt;
 | -95&lt;br /&gt;
 | 27&lt;br /&gt;
 | 100&lt;br /&gt;
 | 6dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | SOC mit TI CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | TI CC2431&lt;br /&gt;
 | Texas Instruments&lt;br /&gt;
 | 0&lt;br /&gt;
 | -95&lt;br /&gt;
 | 27&lt;br /&gt;
 | 100&lt;br /&gt;
 | 6dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | SOC mit TI CC2420, mit Location Engine&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
nicht notwendigerweise vollständig. Stand 01.2008&lt;br /&gt;
&lt;br /&gt;
= ZigBee Chipsätze =&lt;br /&gt;
Die Vielzahl der verfügbaren ZigBee Module basiert bei näherer Betrachtung auf wenigen Funk-Chipsätzen. Die folgende Tabelle dient zum Vergleich der Chipsätze um die Auswahl der Funkmodule zu unterstützen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;hiddentext&amp;gt;generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7&amp;lt;\hiddentext&amp;gt;&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| width=&amp;quot;94&amp;quot; height=&amp;quot;18&amp;quot; | Chipset&lt;br /&gt;
| width=&amp;quot;94&amp;quot; | Hersteller&lt;br /&gt;
| width=&amp;quot;40&amp;quot; | Sendel.&lt;br /&gt;
| width=&amp;quot;34&amp;quot; | Empf.&lt;br /&gt;
| width=&amp;quot;64&amp;quot; | Stromaufn.&lt;br /&gt;
| width=&amp;quot;62&amp;quot; | RSSI Range&lt;br /&gt;
| width=&amp;quot;55&amp;quot; | RSSI Aufl.&lt;br /&gt;
| width=&amp;quot;67&amp;quot; | Ansteuerung&lt;br /&gt;
| width=&amp;quot;78&amp;quot; | Antennen&lt;br /&gt;
| width=&amp;quot;246&amp;quot; | Sonstiges&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; height=&amp;quot;18&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
 | dBm&lt;br /&gt;
 | dBm&lt;br /&gt;
 | mA bei 3,3V&lt;br /&gt;
 | dB&lt;br /&gt;
 | dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM250 SOC&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | 41,5&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM260&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 4,5&lt;br /&gt;
 | -100&lt;br /&gt;
 | 34&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | SPI&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | MC13192&lt;br /&gt;
 | Freescale&lt;br /&gt;
 | 3,6&lt;br /&gt;
 | -92&lt;br /&gt;
 | 42&lt;br /&gt;
 | nur LQI &lt;br /&gt;
 | 10dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | AT86RF230&lt;br /&gt;
 | Atmel&lt;br /&gt;
 | 3&lt;br /&gt;
 | -101&lt;br /&gt;
 | 16&lt;br /&gt;
 | 81&lt;br /&gt;
 | 5dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | TI CC2420&lt;br /&gt;
 | Texas Instruments&lt;br /&gt;
 | 0&lt;br /&gt;
 | -95&lt;br /&gt;
 | 17,2&lt;br /&gt;
 | 100&lt;br /&gt;
 | 6dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack (Z-Stack)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
nicht notwendigerweise vollständig. Stand 01.2008&lt;br /&gt;
&lt;br /&gt;
= Hersteller von ZigBee Modulen =&lt;br /&gt;
&lt;br /&gt;
Die folgende Tabelle enthält Hersteller von ZigBee Modulen. Hat der selbe Hersteller für weitere Funktechniken Module im Angebot, so sind diese in der Spalte &amp;quot;Produktpalette&amp;quot; mit aufgelistet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;hiddentext&amp;gt;generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7&amp;lt;\hiddentext&amp;gt;&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| width=&amp;quot;98&amp;quot; height=&amp;quot;13&amp;quot; |  Hersteller&lt;br /&gt;
| width=&amp;quot;152&amp;quot; | Produktpalette&lt;br /&gt;
| width=&amp;quot;124&amp;quot; | Web &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Digi/Maxstream&lt;br /&gt;
 | Zig, ISM&lt;br /&gt;
 | www.maxstream.net &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Panasonic&lt;br /&gt;
 | BT, Zig, ISM, Z-Wave&lt;br /&gt;
 | www.ecom.panasonic.de &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Radiocrafts&lt;br /&gt;
 | Zig, ISM&lt;br /&gt;
 | radiocrafts.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Telegesis&lt;br /&gt;
 | Zig&lt;br /&gt;
 | www.telegesis.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  BM Group&lt;br /&gt;
 | Zig&lt;br /&gt;
 | www.bm-modules.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  senTec&lt;br /&gt;
 | Zig&lt;br /&gt;
 | www.sentec-electronik.de &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Amber Wireless&lt;br /&gt;
 | Zig, BT, ISM&lt;br /&gt;
 | www.amber-wireless.de &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Ember&lt;br /&gt;
 | Zig (nur ICs)&lt;br /&gt;
 | www.ember.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Cirronet&lt;br /&gt;
 | Zig, BT, ISM, WLAN&lt;br /&gt;
 | www.cirronet.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  One RF&lt;br /&gt;
 | Zig, ISM&lt;br /&gt;
 | www.one-rf.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  LS&lt;br /&gt;
 | Zig&lt;br /&gt;
 | www.lsr.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Integration&lt;br /&gt;
 | Zig, ISM&lt;br /&gt;
 | www.compxs.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Cratlon&lt;br /&gt;
 | Zig&lt;br /&gt;
 | www.cratlon.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Helicomm&lt;br /&gt;
 | Zig&lt;br /&gt;
 | www.helicomm.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  livetec GmbH&lt;br /&gt;
 | Zig&lt;br /&gt;
 | wireless-tools.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  RF Solutions&lt;br /&gt;
 | BT, Zig, ISM&lt;br /&gt;
 | www.rfsolution.co.uk &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Atmel&lt;br /&gt;
 | BT, Zig, WLAN, WiMax, DECT&lt;br /&gt;
 | www.atmel.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Meshnetics&lt;br /&gt;
 | Zig&lt;br /&gt;
 | www.meshmetics.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Jennic&lt;br /&gt;
 | Zig&lt;br /&gt;
 | www.jennic.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Telegesis&lt;br /&gt;
 | Zig&lt;br /&gt;
 | www.telegesis.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Microchip&lt;br /&gt;
 | Zig&lt;br /&gt;
 | www.microchip.com &lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;13&amp;quot; |  Chipcon (TI) &lt;br /&gt;
 | Zig, WiMax, ISM&lt;br /&gt;
 | focus.ti.com &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
nicht notwendigerweise vollständig. Stand 01.2008&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=ZigBeeModule&amp;diff=27851</id>
		<title>ZigBeeModule</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=ZigBeeModule&amp;diff=27851"/>
		<updated>2008-05-09T10:55:28Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ZigBee Hardware-Module =&lt;br /&gt;
Dieser Artikel solle eine Auflistung aktuell am Markt vorhandener ZigBee Hardware geben.&lt;br /&gt;
&lt;br /&gt;
Gelistet werden soll der Name des Moduls, der Hersteller, der zugrundeliegende Chipsatz, Empfangsempfindlichkeit, Sendeleistung, Energieaufnahme, eventuelle Softwarestacks und deren Lizenzen, sowie ein Link zum Datenblatt oder der Produktseite des Herstellers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;hiddentext&amp;gt;generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7&amp;lt;\hiddentext&amp;gt;&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| width=&amp;quot;94&amp;quot; height=&amp;quot;18&amp;quot; | Modul&lt;br /&gt;
| width=&amp;quot;94&amp;quot; | Hersteller&lt;br /&gt;
| width=&amp;quot;40&amp;quot; | Sendel.&lt;br /&gt;
| width=&amp;quot;34&amp;quot; | Empf.&lt;br /&gt;
| width=&amp;quot;64&amp;quot; | Stromaufn.&lt;br /&gt;
| width=&amp;quot;62&amp;quot; | RSSI Range&lt;br /&gt;
| width=&amp;quot;55&amp;quot; | RSSI Aufl.&lt;br /&gt;
| width=&amp;quot;67&amp;quot; | Ansteuerung&lt;br /&gt;
| width=&amp;quot;78&amp;quot; | Antennen&lt;br /&gt;
| width=&amp;quot;246&amp;quot; | Sonstiges&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; height=&amp;quot;18&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
 | dBm&lt;br /&gt;
 | dBm&lt;br /&gt;
 | mA bei 3,3V&lt;br /&gt;
 | dB&lt;br /&gt;
 | dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Xbee Series 2&lt;br /&gt;
 | Digi (Maxstream)&lt;br /&gt;
 | 0&lt;br /&gt;
 | -97&lt;br /&gt;
 | 40&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , nur Punkt zu Punkt verbindugen, Chip eigen&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Xbee Series 1&lt;br /&gt;
 | Digi (Maxstream)&lt;br /&gt;
 | 0&lt;br /&gt;
 | -92&lt;br /&gt;
 | 45&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , nur Punkt zu Punkt verbindugen, Chip eigen&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Xbee Series 1pro&lt;br /&gt;
 | Digi (Maxstream)&lt;br /&gt;
 | 35&lt;br /&gt;
 | -100&lt;br /&gt;
 | 215&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Dk , Leistungsverstärkter integriert, Chip eigen&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | PAN 4555&lt;br /&gt;
 | Panasonic&lt;br /&gt;
 | 0&lt;br /&gt;
 | -98&lt;br /&gt;
 | 44&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , kein Stack (Freescale Stack nutzbar)&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | PAN 4570&lt;br /&gt;
 | Panasonic&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | 41,5&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , kein Stack (Ember Stack nutzbar)&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2000&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | -3&lt;br /&gt;
 | -101&lt;br /&gt;
 | 25&lt;br /&gt;
 | 45&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART, I2C&lt;br /&gt;
 | wire (self)&lt;br /&gt;
 | Chip: CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2100&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | 0&lt;br /&gt;
 | -94&lt;br /&gt;
 | 22&lt;br /&gt;
 | 45&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART, I2C&lt;br /&gt;
 | wire (self)&lt;br /&gt;
 | Chip: CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2200&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | 0&lt;br /&gt;
 | -94&lt;br /&gt;
 | 30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Chip: CC2431&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2300&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | 0&lt;br /&gt;
 | -94&lt;br /&gt;
 | 27&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Chip: CC2431&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ETRX2&lt;br /&gt;
 | Telegesis&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | -&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | STRX2&lt;br /&gt;
 | Telegesis&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | -&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | E/STRX2-PA&lt;br /&gt;
 | Telegesis&lt;br /&gt;
 | 18&lt;br /&gt;
 | -98&lt;br /&gt;
 | -&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Zebra 241X&lt;br /&gt;
 | Sentec Elektronik&lt;br /&gt;
 | 10&lt;br /&gt;
 | -97&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | Freescale Stack nutzbar, Leistungsverstärker&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | AMB 2130&lt;br /&gt;
 | Amber Wireless&lt;br /&gt;
 | 8&lt;br /&gt;
 | -98&lt;br /&gt;
 | 46&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | ATMega 128&lt;br /&gt;
 | MMCX Buchse&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM250 SOC&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | 41,5&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack, nur Chipset&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM260&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 4,5&lt;br /&gt;
 | -100&lt;br /&gt;
 | 34&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | SPI&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack, nur Chipset&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZMN2400&lt;br /&gt;
 | Cirronet&lt;br /&gt;
 | 0&lt;br /&gt;
 | -92&lt;br /&gt;
 | 30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | ATMega&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | Chip: CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZMN2340&lt;br /&gt;
 | Cirronet&lt;br /&gt;
 | 18&lt;br /&gt;
 | -95&lt;br /&gt;
 | 130&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | 8051 uC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Chip: CC2430, Leistungsverstärker&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZDM-A1281-A2&lt;br /&gt;
 | Meshnetics&lt;br /&gt;
 | -3&lt;br /&gt;
 | -101&lt;br /&gt;
 | 19&lt;br /&gt;
 | 81&lt;br /&gt;
 | 5dB&lt;br /&gt;
 | ATMega 128&lt;br /&gt;
 | chip&lt;br /&gt;
 | Chip: AT86RF230, eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZDM-A1281-PN&lt;br /&gt;
 | Meshnetics&lt;br /&gt;
 | 20&lt;br /&gt;
 | -104&lt;br /&gt;
 | 50&lt;br /&gt;
 | 81&lt;br /&gt;
 | 5dB&lt;br /&gt;
 | ATMega 128&lt;br /&gt;
 | self&lt;br /&gt;
 | Chip: AT86RF230, eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | JN5139&lt;br /&gt;
 | Jennic&lt;br /&gt;
 | 3&lt;br /&gt;
 | -95&lt;br /&gt;
 | 37&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | Risc uC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | eigenes Chipset&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | TI CC2430&lt;br /&gt;
 | Texas Instruments&lt;br /&gt;
 | 0&lt;br /&gt;
 | -95&lt;br /&gt;
 | 27&lt;br /&gt;
 | 100&lt;br /&gt;
 | 6dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | SOC mit TI CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | TI CC2431&lt;br /&gt;
 | Texas Instruments&lt;br /&gt;
 | 0&lt;br /&gt;
 | -95&lt;br /&gt;
 | 27&lt;br /&gt;
 | 100&lt;br /&gt;
 | 6dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | SOC mit TI CC2420, mit Location Engine&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
nicht notwendigerweise vollständig. Stand 01.2008&lt;br /&gt;
&lt;br /&gt;
= ZigBee Chipsätze =&lt;br /&gt;
Die Vielzahl der verfügbaren ZigBee Module basiert bei näherer Betrachtung auf wenigen Funk-Chipsätzen. Die folgende Tabelle dient zum Vergleich der Chipsätze um die Auswahl der Funkmodule zu unterstützen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;hiddentext&amp;gt;generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7&amp;lt;\hiddentext&amp;gt;&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| width=&amp;quot;94&amp;quot; height=&amp;quot;18&amp;quot; | Chipset&lt;br /&gt;
| width=&amp;quot;94&amp;quot; | Hersteller&lt;br /&gt;
| width=&amp;quot;40&amp;quot; | Sendel.&lt;br /&gt;
| width=&amp;quot;34&amp;quot; | Empf.&lt;br /&gt;
| width=&amp;quot;64&amp;quot; | Stromaufn.&lt;br /&gt;
| width=&amp;quot;62&amp;quot; | RSSI Range&lt;br /&gt;
| width=&amp;quot;55&amp;quot; | RSSI Aufl.&lt;br /&gt;
| width=&amp;quot;67&amp;quot; | Ansteuerung&lt;br /&gt;
| width=&amp;quot;78&amp;quot; | Antennen&lt;br /&gt;
| width=&amp;quot;246&amp;quot; | Sonstiges&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; height=&amp;quot;18&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
 | dBm&lt;br /&gt;
 | dBm&lt;br /&gt;
 | mA bei 3,3V&lt;br /&gt;
 | dB&lt;br /&gt;
 | dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM250 SOC&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | 41,5&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM260&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 4,5&lt;br /&gt;
 | -100&lt;br /&gt;
 | 34&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | SPI&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | MC13192&lt;br /&gt;
 | Freescale&lt;br /&gt;
 | 3,6&lt;br /&gt;
 | -92&lt;br /&gt;
 | 42&lt;br /&gt;
 | nur LQI &lt;br /&gt;
 | 10dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | AT86RF230&lt;br /&gt;
 | Atmel&lt;br /&gt;
 | 3&lt;br /&gt;
 | -101&lt;br /&gt;
 | 16&lt;br /&gt;
 | 81&lt;br /&gt;
 | 5dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | TI CC2420&lt;br /&gt;
 | Texas Instruments&lt;br /&gt;
 | 0&lt;br /&gt;
 | -95&lt;br /&gt;
 | 17,2&lt;br /&gt;
 | 100&lt;br /&gt;
 | 6dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack (Z-Stack)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
nicht notwendigerweise vollständig. Stand 01.2008&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=27850</id>
		<title>Meshnetics Zigbee</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=27850"/>
		<updated>2008-05-09T10:54:19Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Verweis auf den Artikel ZigBeeModule eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zweck dieses Artikels=&lt;br /&gt;
Da in letzter Zeit mehrere Personen im Forum mit den Zigbee Modulen von Meshnetics und den zugehörigen eZeeNet-Stack arbeiten, soll dieser Artikel eine Hilfestellung für die bei der Entwicklung auftretenden Probleme bieten. &lt;br /&gt;
&lt;br /&gt;
= ZigBee Module: Hardware =&lt;br /&gt;
&lt;br /&gt;
Die Zigbee-Module von Meshnetics basiert auf dem AT86RF230 Funk-Chipsatz aus Atmels Z-Link Platform&lt;br /&gt;
&lt;br /&gt;
Bei den bisher erschienenen Modulen wird der Funk-Chipsatz von einem ATmega1281 Mikrocontroller aus Atmels AVR Reihe angesteuert. Die Hardware in Inneren des Moduls ist dabei ähnlich verschaltet wie die des Referenzdesigns von Atmel, so dass sich die von Meshnetics bereitgestellte Software auch auf den Atmel Demo und Entwicklungskits nutzen lässt. Meshnetics bietet in Kooperation mit Atmel den Download des eZeeNet Stacks für den Einsatz auf den Kits an (siehe &lt;br /&gt;
[http://www.meshnetics.com/wsn-software/ezeenet-sdk/ eZeeNet Software Development Kit (SDK) for Atmel RZ200]&lt;br /&gt;
).&lt;br /&gt;
&lt;br /&gt;
Bisher sind drei verschiedene Module verfügbar. Diese unterscheiden sich in der Anbindung der Antenne. Das ZDM-A1281-A2 Modul besitzt über eine integrierte On-chip-Antenne. Das ZDM-A1281-B0 Modul verfügt über einen symetrischen HF-Port.&lt;br /&gt;
Das ZigBit Amp Modul (ZDM-A1281-PN) enthält einen zusätzlichen Verstärker um mehr Sendeleistung und damit höhere Reichweiten zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Laut der Aussage eines Mitarbeiter von Meshnetics auf der Messe &amp;quot;Sensor und Test&amp;quot; in Nürnberg 2008 sollen demnächst weitere Module erscheinen die - statt des AVR - einen integriertem ARM-Controller besitzen.&lt;br /&gt;
&lt;br /&gt;
Weitere Details zu den Eigenschaften der Hardware sowie des Chipsatzes und eine Auflistung weiterer Module auch anderere Hersteller finden sich im Artikel [[ZigBeeModule]].&lt;br /&gt;
&lt;br /&gt;
== ZDM-A1281-A2 PinOUT vs. embedded ATmega1281 und AT86RF230 ==&lt;br /&gt;
[[Bild:ZDM-A1281-A2_offen.gif|framed|Zigbee Modul ZDM-A1281-A2 mit On-chip-Antenne. Die metallische Abschirmung über dem Controllerteil wurde entfernt]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Pin&lt;br /&gt;
!ZDM-A1281-A2&lt;br /&gt;
!Pin&lt;br /&gt;
!ATmega1281&lt;br /&gt;
|-&lt;br /&gt;
|1	&lt;br /&gt;
|SPI_CLK	&lt;br /&gt;
|11	&lt;br /&gt;
|PB1 (SCK/PCINT1)	&lt;br /&gt;
|-&lt;br /&gt;
|2	&lt;br /&gt;
|SPI_MISO	&lt;br /&gt;
|13	&lt;br /&gt;
|PB3 (MISO/PCINT3)	&lt;br /&gt;
|-&lt;br /&gt;
|3	&lt;br /&gt;
|SPI_MOSI	&lt;br /&gt;
|12	&lt;br /&gt;
|PB2 (MOSI/PCINT2)	&lt;br /&gt;
|-&lt;br /&gt;
|4	&lt;br /&gt;
|GPIO0&lt;br /&gt;
|15	&lt;br /&gt;
|PB5 (OC1A/PCINT5)	&lt;br /&gt;
|-&lt;br /&gt;
|5	&lt;br /&gt;
|GPIO1&lt;br /&gt;
|16	&lt;br /&gt;
|PB6 (OC1BPCINT6)	&lt;br /&gt;
|-&lt;br /&gt;
|6	&lt;br /&gt;
|GPIO2&lt;br /&gt;
|17	&lt;br /&gt;
|PB7 (OC0A/OC1C/PCINT7)	&lt;br /&gt;
|-&lt;br /&gt;
|7	&lt;br /&gt;
|OSC32K_OUT	&lt;br /&gt;
|18	&lt;br /&gt;
|PG3 (TOSC2)	&lt;br /&gt;
|-&lt;br /&gt;
|8	&lt;br /&gt;
|RESET	&lt;br /&gt;
|20	&lt;br /&gt;
|RESET	&lt;br /&gt;
|-&lt;br /&gt;
|9	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|10	&lt;br /&gt;
|CPU_CLK	&lt;br /&gt;
|24	&lt;br /&gt;
|XTAL1	&lt;br /&gt;
|-&lt;br /&gt;
|11	&lt;br /&gt;
|I2C_CLK	&lt;br /&gt;
|25	&lt;br /&gt;
|PD0 (SCL/INT0)	&lt;br /&gt;
|-&lt;br /&gt;
|12	&lt;br /&gt;
|I2C_DATA	&lt;br /&gt;
|26	&lt;br /&gt;
|PD1 (SDA/INT1)	&lt;br /&gt;
|-&lt;br /&gt;
|13	&lt;br /&gt;
|UART_RXD	&lt;br /&gt;
|27	&lt;br /&gt;
|PD2 (RXD1/INT2)	&lt;br /&gt;
|-&lt;br /&gt;
|14	&lt;br /&gt;
|UART_TXD	&lt;br /&gt;
|28	&lt;br /&gt;
|PD3 (TXD1/INT3)	&lt;br /&gt;
|-&lt;br /&gt;
|15	&lt;br /&gt;
|UART_RTS	&lt;br /&gt;
|29	&lt;br /&gt;
|PD4 (ICP1)	&lt;br /&gt;
|-&lt;br /&gt;
|16	&lt;br /&gt;
|UART_CTS	&lt;br /&gt;
|30	&lt;br /&gt;
|PD5 (XCK1)	&lt;br /&gt;
|-&lt;br /&gt;
|17	&lt;br /&gt;
|GPIO6	&lt;br /&gt;
|31	&lt;br /&gt;
|PD6 (T1)	&lt;br /&gt;
|-&lt;br /&gt;
|18	&lt;br /&gt;
|GPIO7	&lt;br /&gt;
|32	&lt;br /&gt;
|PD7 (T0)	&lt;br /&gt;
|-&lt;br /&gt;
|19	&lt;br /&gt;
|GPIO3	&lt;br /&gt;
|33	&lt;br /&gt;
|PG0 (WR)	&lt;br /&gt;
|-&lt;br /&gt;
|20	&lt;br /&gt;
|GPIO4	&lt;br /&gt;
|34	&lt;br /&gt;
|PG1 (RD)	&lt;br /&gt;
|-&lt;br /&gt;
|21	&lt;br /&gt;
|GPIO5	&lt;br /&gt;
|43	&lt;br /&gt;
|PG2 (ALE)	&lt;br /&gt;
|-&lt;br /&gt;
|22	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|23	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|24	&lt;br /&gt;
|D_VCC	&lt;br /&gt;
|21	&lt;br /&gt;
|VCC	&lt;br /&gt;
|-&lt;br /&gt;
|25	&lt;br /&gt;
|D_VCC	&lt;br /&gt;
|21	&lt;br /&gt;
|VCC	&lt;br /&gt;
|-&lt;br /&gt;
|26	&lt;br /&gt;
|JTAG-TMS	&lt;br /&gt;
|56	&lt;br /&gt;
|PF5 (ADC5/JTAG-TMS)	&lt;br /&gt;
|-&lt;br /&gt;
|27	&lt;br /&gt;
|JTAG-TDI	&lt;br /&gt;
|54	&lt;br /&gt;
|PF7 (ADC7/JTAG-TDI)	&lt;br /&gt;
|-&lt;br /&gt;
|28	&lt;br /&gt;
|JTAG-TDO	&lt;br /&gt;
|55	&lt;br /&gt;
|PF6 (ADC6/JTAG-TDO)	&lt;br /&gt;
|-&lt;br /&gt;
|29	&lt;br /&gt;
|JTAG-TCK	&lt;br /&gt;
|57	&lt;br /&gt;
|PF4 (ADC4/JTAG-TCK)	&lt;br /&gt;
|-&lt;br /&gt;
|30	&lt;br /&gt;
|ADC_INPUT_3&lt;br /&gt;
|58	&lt;br /&gt;
|PF3 (ADC3)	&lt;br /&gt;
|-&lt;br /&gt;
|31	&lt;br /&gt;
|ADC_INPUT_2	&lt;br /&gt;
|59	&lt;br /&gt;
|PF2 (ADC2)	&lt;br /&gt;
|-&lt;br /&gt;
|32	&lt;br /&gt;
|ADC_INPUT_1&lt;br /&gt;
|60	&lt;br /&gt;
|PF1 (ADC1)	&lt;br /&gt;
|-&lt;br /&gt;
|33	&lt;br /&gt;
|BAT	&lt;br /&gt;
|61	&lt;br /&gt;
|PF0 (ADC0)	&lt;br /&gt;
|-&lt;br /&gt;
|34	&lt;br /&gt;
|A_VREF	&lt;br /&gt;
|62	&lt;br /&gt;
|AREF	&lt;br /&gt;
|-&lt;br /&gt;
|35	&lt;br /&gt;
|AGND	&lt;br /&gt;
|63	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|36	&lt;br /&gt;
|GPIO_1WIRE	&lt;br /&gt;
|1	&lt;br /&gt;
|PG5 (OC0B)	&lt;br /&gt;
|-&lt;br /&gt;
|37	&lt;br /&gt;
|UART_DTR	&lt;br /&gt;
|6	&lt;br /&gt;
|PE4 (OC3B/INT4)	&lt;br /&gt;
|-&lt;br /&gt;
|38	&lt;br /&gt;
|USART0_RXD	&lt;br /&gt;
|2	&lt;br /&gt;
|PE0 (RXD0/PCINT8/PDI)	&lt;br /&gt;
|-&lt;br /&gt;
|39	&lt;br /&gt;
|USART0_TXD	&lt;br /&gt;
|3	&lt;br /&gt;
|PE1 (TXD0/PD0)	&lt;br /&gt;
|-&lt;br /&gt;
|40	&lt;br /&gt;
|USART0_EXTCLK	&lt;br /&gt;
|4	&lt;br /&gt;
|PE2 (XCK0/AIN0)	&lt;br /&gt;
|-&lt;br /&gt;
|41	&lt;br /&gt;
|GPIO8	&lt;br /&gt;
|5	&lt;br /&gt;
|PE3 (OC3A/AIN1)	&lt;br /&gt;
|-&lt;br /&gt;
|42	&lt;br /&gt;
|IRQ7	&lt;br /&gt;
|9	&lt;br /&gt;
|PE7 (ICP3/CLK0/INT7)	&lt;br /&gt;
|-&lt;br /&gt;
|43	&lt;br /&gt;
|IRQ6	&lt;br /&gt;
|8	&lt;br /&gt;
|PE6 (T3/INT6)	&lt;br /&gt;
|}&lt;br /&gt;
Desweiteren sind intern noch folgende Pins des AT86RF230 mit Pins des ATmega1281 verbunden:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Pin&lt;br /&gt;
!AT86RF230&lt;br /&gt;
!Pin&lt;br /&gt;
!ATmega1281&lt;br /&gt;
|-&lt;br /&gt;
|7	&lt;br /&gt;
|TST	&lt;br /&gt;
|n.v.	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|8	&lt;br /&gt;
|RST	&lt;br /&gt;
|44	&lt;br /&gt;
|PA7 (AD7)&lt;br /&gt;
|-&lt;br /&gt;
|11	&lt;br /&gt;
|SLP_TR	&lt;br /&gt;
|14	&lt;br /&gt;
|PB4 (OC2A/PCINT4)&lt;br /&gt;
|-&lt;br /&gt;
|17	&lt;br /&gt;
|CLKM&lt;br /&gt;
|24	&lt;br /&gt;
|XTAL1&lt;br /&gt;
|-&lt;br /&gt;
|19	&lt;br /&gt;
|SCLK	&lt;br /&gt;
|11	&lt;br /&gt;
|PB1 (SCK/PCINT1)&lt;br /&gt;
|-&lt;br /&gt;
|20	&lt;br /&gt;
|MISO	&lt;br /&gt;
|13	&lt;br /&gt;
|PB3 (MISO/PCINT3)&lt;br /&gt;
|-&lt;br /&gt;
|22	&lt;br /&gt;
|MOSI	&lt;br /&gt;
|12	&lt;br /&gt;
|PB2 (MOSI/PCINT2)&lt;br /&gt;
|-&lt;br /&gt;
|23	&lt;br /&gt;
|SEL	&lt;br /&gt;
|10	&lt;br /&gt;
|PB0 (SS/PCINT0)&lt;br /&gt;
|-&lt;br /&gt;
|24	&lt;br /&gt;
|IRQ	&lt;br /&gt;
|7	&lt;br /&gt;
|PE5 (OC3C/INT5)&lt;br /&gt;
|}&lt;br /&gt;
Wie man sich das Ganze in etwa vorzustellen hat, kann man grob im Datenblatt für das RZRaven-LCD Modul nachschauen (der Schaltplan auf Seite 12 in [1])&lt;br /&gt;
==== Weblinks ====&lt;br /&gt;
[1] [http://www.atmel.com/dyn/resources/prod_documents/doc8117.pdf AVR2016: RZRAVEN Hardware User&#039;s Guide]&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== eZeeNet ZigBee Software Stack ==&lt;br /&gt;
=== Bekannte Probleme ===&lt;br /&gt;
==== fw_dataRequest liefert FAIL zurück ====&lt;br /&gt;
Laut Datenblatt zum Stack (V1.7, Seite 46) liefert fw_dataRequest den Rückgabewert FAIL nur dann, wenn die zu sendende Datenmenge zu groß für den Puffer ist. &lt;br /&gt;
&lt;br /&gt;
Doch auch wenn die Datenmenge kleiner ist als die größe des Buffers, kann es vorkommen, dass man den Rückgabewert FAIL erhält.&lt;br /&gt;
&lt;br /&gt;
Der Grund ist folgender:&lt;br /&gt;
Daten können nur dann über einen Endpunkt versendet werden, wenn für den betreffenden Endpunkt ein Handler zum Datenempfang registriert wurde. Ist kein Handler registriert, gibt fw_dataRequest ebenfalls FAIL zurück.&lt;br /&gt;
&lt;br /&gt;
Dies steht nicht explizit im Datenblatt, so dass man vermuten könnte, dass Daten auch ohne die Registrierung eines Endpuktes versendet werden können.&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Netz aufgebaut werden ====&lt;br /&gt;
siehe: http://www.mikrocontroller.net/topic/84931#803551&lt;br /&gt;
Problem sollte hier noch zusammengefasst und erläutert werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ADC-Ports funktionieren nicht? ====&lt;br /&gt;
Der Handler der ADC-Ergebnisroutinen wird nicht aufgerufen, obwohl die Ports geöffnet und mittels adc_get Samples angefragt wurden.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;adc.h&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
void adc0DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
void adc1DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
void adc2DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
void adc3DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_BAT, adc0DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_INPUT_1, adc1DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_INPUT_2, adc2DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_INPUT_3, adc3DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_BAT);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_INPUT_1);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_INPUT_2);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_INPUT_3);&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ZigBee PRO Stack ==&lt;br /&gt;
Der ZigBee PRO Stack ist ein komplett neuer Stack, welcher nicht mehr auf der OpenMAC Implementierung basiert. Das noch beim eZeeNet Stack eingesetzte RTOS wurde ebenfalls ersetzt.&lt;br /&gt;
&lt;br /&gt;
== SerialNet AT Commands Set ==&lt;br /&gt;
&lt;br /&gt;
== MeshNetics OpenMAC ==&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=ZigBeeModule&amp;diff=27849</id>
		<title>ZigBeeModule</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=ZigBeeModule&amp;diff=27849"/>
		<updated>2008-05-09T10:49:54Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Auflistung von ZigBee Modulen und Chipsätzen angelegt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ZigBee Hardware-Module =&lt;br /&gt;
Dieser Artikel solle eine Auflistung aktuell am Markt vorhandener ZigBee Hardware geben.&lt;br /&gt;
&lt;br /&gt;
Gelistet wird der Name des Moduls, der Hersteller, der zugrundeliegende Chipsatz, Empfangsempfindlichkeit, Sendeleistung, Energieaufnahme, eventuelle Softwarestacks und deren Lizenzen, sowie ein Link zum Datenblatt oder der Produktseite des Herstellers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;hiddentext&amp;gt;generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7&amp;lt;\hiddentext&amp;gt;&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| width=&amp;quot;94&amp;quot; height=&amp;quot;18&amp;quot; | Modul&lt;br /&gt;
| width=&amp;quot;94&amp;quot; | Hersteller&lt;br /&gt;
| width=&amp;quot;40&amp;quot; | Sendel.&lt;br /&gt;
| width=&amp;quot;34&amp;quot; | Empf.&lt;br /&gt;
| width=&amp;quot;64&amp;quot; | Stromaufn.&lt;br /&gt;
| width=&amp;quot;62&amp;quot; | RSSI Range&lt;br /&gt;
| width=&amp;quot;55&amp;quot; | RSSI Aufl.&lt;br /&gt;
| width=&amp;quot;67&amp;quot; | Ansteuerung&lt;br /&gt;
| width=&amp;quot;78&amp;quot; | Antennen&lt;br /&gt;
| width=&amp;quot;246&amp;quot; | Sonstiges&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; height=&amp;quot;18&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
 | dBm&lt;br /&gt;
 | dBm&lt;br /&gt;
 | mA bei 3,3V&lt;br /&gt;
 | dB&lt;br /&gt;
 | dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Xbee Series 2&lt;br /&gt;
 | Digi (Maxstream)&lt;br /&gt;
 | 0&lt;br /&gt;
 | -97&lt;br /&gt;
 | 40&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , nur Punkt zu Punkt verbindugen, Chip eigen&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Xbee Series 1&lt;br /&gt;
 | Digi (Maxstream)&lt;br /&gt;
 | 0&lt;br /&gt;
 | -92&lt;br /&gt;
 | 45&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , nur Punkt zu Punkt verbindugen, Chip eigen&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Xbee Series 1pro&lt;br /&gt;
 | Digi (Maxstream)&lt;br /&gt;
 | 35&lt;br /&gt;
 | -100&lt;br /&gt;
 | 215&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Dk , Leistungsverstärkter integriert, Chip eigen&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | PAN 4555&lt;br /&gt;
 | Panasonic&lt;br /&gt;
 | 0&lt;br /&gt;
 | -98&lt;br /&gt;
 | 44&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , kein Stack (Freescale Stack nutzbar)&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | PAN 4570&lt;br /&gt;
 | Panasonic&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | 41,5&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | DK , kein Stack (Ember Stack nutzbar)&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2000&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | -3&lt;br /&gt;
 | -101&lt;br /&gt;
 | 25&lt;br /&gt;
 | 45&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART, I2C&lt;br /&gt;
 | wire (self)&lt;br /&gt;
 | Chip: CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2100&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | 0&lt;br /&gt;
 | -94&lt;br /&gt;
 | 22&lt;br /&gt;
 | 45&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | UART, I2C&lt;br /&gt;
 | wire (self)&lt;br /&gt;
 | Chip: CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2200&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | 0&lt;br /&gt;
 | -94&lt;br /&gt;
 | 30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Chip: CC2431&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | RC2300&lt;br /&gt;
 | Radiocrafts&lt;br /&gt;
 | 0&lt;br /&gt;
 | -94&lt;br /&gt;
 | 27&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Chip: CC2431&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ETRX2&lt;br /&gt;
 | Telegesis&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | -&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | STRX2&lt;br /&gt;
 | Telegesis&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | -&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | E/STRX2-PA&lt;br /&gt;
 | Telegesis&lt;br /&gt;
 | 18&lt;br /&gt;
 | -98&lt;br /&gt;
 | -&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC+ADC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | Zebra 241X&lt;br /&gt;
 | Sentec Elektronik&lt;br /&gt;
 | 10&lt;br /&gt;
 | -97&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | Freescale Stack nutzbar, Leistungsverstärker&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | AMB 2130&lt;br /&gt;
 | Amber Wireless&lt;br /&gt;
 | 8&lt;br /&gt;
 | -98&lt;br /&gt;
 | 46&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | ATMega 128&lt;br /&gt;
 | MMCX Buchse&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM250 SOC&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | 41,5&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack, nur Chipset&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM260&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 4,5&lt;br /&gt;
 | -100&lt;br /&gt;
 | 34&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | SPI&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack, nur Chipset&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZMN2400&lt;br /&gt;
 | Cirronet&lt;br /&gt;
 | 0&lt;br /&gt;
 | -92&lt;br /&gt;
 | 30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | ATMega&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | Chip: CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZMN2340&lt;br /&gt;
 | Cirronet&lt;br /&gt;
 | 18&lt;br /&gt;
 | -95&lt;br /&gt;
 | 130&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | 8051 uC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | Chip: CC2430, Leistungsverstärker&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZDM-A1281-A2&lt;br /&gt;
 | Meshnetics&lt;br /&gt;
 | -3&lt;br /&gt;
 | -101&lt;br /&gt;
 | 19&lt;br /&gt;
 | 81&lt;br /&gt;
 | 5dB&lt;br /&gt;
 | ATMega 128&lt;br /&gt;
 | chip&lt;br /&gt;
 | Chip: AT86RF230, eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | ZDM-A1281-PN&lt;br /&gt;
 | Meshnetics&lt;br /&gt;
 | 20&lt;br /&gt;
 | -104&lt;br /&gt;
 | 50&lt;br /&gt;
 | 81&lt;br /&gt;
 | 5dB&lt;br /&gt;
 | ATMega 128&lt;br /&gt;
 | self&lt;br /&gt;
 | Chip: AT86RF230, eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | JN5139&lt;br /&gt;
 | Jennic&lt;br /&gt;
 | 3&lt;br /&gt;
 | -95&lt;br /&gt;
 | 37&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | Risc uC&lt;br /&gt;
 | chip+other&lt;br /&gt;
 | eigenes Chipset&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | TI CC2430&lt;br /&gt;
 | Texas Instruments&lt;br /&gt;
 | 0&lt;br /&gt;
 | -95&lt;br /&gt;
 | 27&lt;br /&gt;
 | 100&lt;br /&gt;
 | 6dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | SOC mit TI CC2420&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | TI CC2431&lt;br /&gt;
 | Texas Instruments&lt;br /&gt;
 | 0&lt;br /&gt;
 | -95&lt;br /&gt;
 | 27&lt;br /&gt;
 | 100&lt;br /&gt;
 | 6dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | SOC mit TI CC2420, mit Location Engine&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
nicht notwendigerweise vollständig. Stand 01.2008&lt;br /&gt;
&lt;br /&gt;
= ZigBee Chipsätze =&lt;br /&gt;
Die Vielzahl der verfügbaren ZigBee Module basiert bei näherer Betrachtung auf wenigen Funk-Chipsätzen. Die folgende Tabelle dient zum Vergleich der Chipsätze um die Auswahl der Funkmodule zu unterstützen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;hiddentext&amp;gt;generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7&amp;lt;\hiddentext&amp;gt;&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| width=&amp;quot;94&amp;quot; height=&amp;quot;18&amp;quot; | Chipset&lt;br /&gt;
| width=&amp;quot;94&amp;quot; | Hersteller&lt;br /&gt;
| width=&amp;quot;40&amp;quot; | Sendel.&lt;br /&gt;
| width=&amp;quot;34&amp;quot; | Empf.&lt;br /&gt;
| width=&amp;quot;64&amp;quot; | Stromaufn.&lt;br /&gt;
| width=&amp;quot;62&amp;quot; | RSSI Range&lt;br /&gt;
| width=&amp;quot;55&amp;quot; | RSSI Aufl.&lt;br /&gt;
| width=&amp;quot;67&amp;quot; | Ansteuerung&lt;br /&gt;
| width=&amp;quot;78&amp;quot; | Antennen&lt;br /&gt;
| width=&amp;quot;246&amp;quot; | Sonstiges&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; height=&amp;quot;18&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;font-size:14pt&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
 | dBm&lt;br /&gt;
 | dBm&lt;br /&gt;
 | mA bei 3,3V&lt;br /&gt;
 | dB&lt;br /&gt;
 | dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM250 SOC&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 5&lt;br /&gt;
 | -98&lt;br /&gt;
 | 41,5&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | uC&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | EM260&lt;br /&gt;
 | Ember&lt;br /&gt;
 | 4,5&lt;br /&gt;
 | -100&lt;br /&gt;
 | 34&lt;br /&gt;
 | -90 - -30&lt;br /&gt;
 | k.A.&lt;br /&gt;
 | SPI&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | MC13192&lt;br /&gt;
 | Freescale&lt;br /&gt;
 | 3,6&lt;br /&gt;
 | -92&lt;br /&gt;
 | 42&lt;br /&gt;
 | nur LQI &lt;br /&gt;
 | 10dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | AT86RF230&lt;br /&gt;
 | Atmel&lt;br /&gt;
 | 3&lt;br /&gt;
 | -101&lt;br /&gt;
 | 16&lt;br /&gt;
 | 81&lt;br /&gt;
 | 5dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-   valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
| height=&amp;quot;18&amp;quot; | TI CC2420&lt;br /&gt;
 | Texas Instruments&lt;br /&gt;
 | 0&lt;br /&gt;
 | -95&lt;br /&gt;
 | 17,2&lt;br /&gt;
 | 100&lt;br /&gt;
 | 6dB&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | &amp;amp;nbsp;&lt;br /&gt;
 | eigener Stack (Z-Stack)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
nicht notwendigerweise vollständig. Stand 01.2008&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=27848</id>
		<title>Meshnetics Zigbee</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=27848"/>
		<updated>2008-05-09T10:08:55Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Umstrukturierung des Artikels und Ergänzung weiterer Informationen zu Software und verfügbaren Modulen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Zweck dieses Artikels=&lt;br /&gt;
Da in letzter Zeit mehrere Personen im Forum mit den Zigbee Modulen von Meshnetics und den zugehörigen eZeeNet-Stack arbeiten, soll dieser Artikel eine Hilfestellung für die bei der Entwicklung auftretenden Probleme bieten. &lt;br /&gt;
&lt;br /&gt;
= ZigBee Module: Hardware =&lt;br /&gt;
&lt;br /&gt;
Die Zigbee-Module von Meshnetics basiert auf dem AT86RF230 Funk-Chipsatz aus Atmels Z-Link Platform&lt;br /&gt;
&lt;br /&gt;
Bei den bisher erschienenen Modulen wird der Funk-Chipsatz von einem ATmega1281 Mikrocontroller aus Atmels AVR Reihe angesteuert. Die Hardware in Inneren des Moduls ist dabei ähnlich verschaltet wie die des Referenzdesigns von Atmel, so dass sich die von Meshnetics bereitgestellte Software auch auf den Atmel Demo und Entwicklungskits nutzen lässt. Meshnetics bietet in Kooperation mit Atmel den Download des eZeeNet Stacks für den Einsatz auf den Kits an (siehe &lt;br /&gt;
[http://www.meshnetics.com/wsn-software/ezeenet-sdk/ eZeeNet Software Development Kit (SDK) for Atmel RZ200]&lt;br /&gt;
).&lt;br /&gt;
&lt;br /&gt;
Bisher sind drei verschiedene Module verfügbar. Diese unterscheiden sich in der Anbindung der Antenne. Das ZDM-A1281-A2 Modul besitzt über eine integrierte On-chip-Antenne. Das ZDM-A1281-B0 Modul verfügt über einen symetrischen HF-Port.&lt;br /&gt;
Das ZigBit Amp Modul (ZDM-A1281-PN) enthält einen zusätzlichen Verstärker um mehr Sendeleistung und damit höhere Reichweiten zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Laut der Aussage eines Mitarbeiter von Meshnetics auf der Messe &amp;quot;Sensor und Test&amp;quot; in Nürnberg 2008 sollen demnächst weitere Module erscheinen die - statt des AVR - einen integriertem ARM-Controller besitzen.&lt;br /&gt;
&lt;br /&gt;
== ZDM-A1281-A2 PinOUT vs. embedded ATmega1281 und AT86RF230 ==&lt;br /&gt;
[[Bild:ZDM-A1281-A2_offen.gif|framed|Zigbee Modul ZDM-A1281-A2 mit On-chip-Antenne. Die metallische Abschirmung über dem Controllerteil wurde entfernt]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Pin&lt;br /&gt;
!ZDM-A1281-A2&lt;br /&gt;
!Pin&lt;br /&gt;
!ATmega1281&lt;br /&gt;
|-&lt;br /&gt;
|1	&lt;br /&gt;
|SPI_CLK	&lt;br /&gt;
|11	&lt;br /&gt;
|PB1 (SCK/PCINT1)	&lt;br /&gt;
|-&lt;br /&gt;
|2	&lt;br /&gt;
|SPI_MISO	&lt;br /&gt;
|13	&lt;br /&gt;
|PB3 (MISO/PCINT3)	&lt;br /&gt;
|-&lt;br /&gt;
|3	&lt;br /&gt;
|SPI_MOSI	&lt;br /&gt;
|12	&lt;br /&gt;
|PB2 (MOSI/PCINT2)	&lt;br /&gt;
|-&lt;br /&gt;
|4	&lt;br /&gt;
|GPIO0&lt;br /&gt;
|15	&lt;br /&gt;
|PB5 (OC1A/PCINT5)	&lt;br /&gt;
|-&lt;br /&gt;
|5	&lt;br /&gt;
|GPIO1&lt;br /&gt;
|16	&lt;br /&gt;
|PB6 (OC1BPCINT6)	&lt;br /&gt;
|-&lt;br /&gt;
|6	&lt;br /&gt;
|GPIO2&lt;br /&gt;
|17	&lt;br /&gt;
|PB7 (OC0A/OC1C/PCINT7)	&lt;br /&gt;
|-&lt;br /&gt;
|7	&lt;br /&gt;
|OSC32K_OUT	&lt;br /&gt;
|18	&lt;br /&gt;
|PG3 (TOSC2)	&lt;br /&gt;
|-&lt;br /&gt;
|8	&lt;br /&gt;
|RESET	&lt;br /&gt;
|20	&lt;br /&gt;
|RESET	&lt;br /&gt;
|-&lt;br /&gt;
|9	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|10	&lt;br /&gt;
|CPU_CLK	&lt;br /&gt;
|24	&lt;br /&gt;
|XTAL1	&lt;br /&gt;
|-&lt;br /&gt;
|11	&lt;br /&gt;
|I2C_CLK	&lt;br /&gt;
|25	&lt;br /&gt;
|PD0 (SCL/INT0)	&lt;br /&gt;
|-&lt;br /&gt;
|12	&lt;br /&gt;
|I2C_DATA	&lt;br /&gt;
|26	&lt;br /&gt;
|PD1 (SDA/INT1)	&lt;br /&gt;
|-&lt;br /&gt;
|13	&lt;br /&gt;
|UART_RXD	&lt;br /&gt;
|27	&lt;br /&gt;
|PD2 (RXD1/INT2)	&lt;br /&gt;
|-&lt;br /&gt;
|14	&lt;br /&gt;
|UART_TXD	&lt;br /&gt;
|28	&lt;br /&gt;
|PD3 (TXD1/INT3)	&lt;br /&gt;
|-&lt;br /&gt;
|15	&lt;br /&gt;
|UART_RTS	&lt;br /&gt;
|29	&lt;br /&gt;
|PD4 (ICP1)	&lt;br /&gt;
|-&lt;br /&gt;
|16	&lt;br /&gt;
|UART_CTS	&lt;br /&gt;
|30	&lt;br /&gt;
|PD5 (XCK1)	&lt;br /&gt;
|-&lt;br /&gt;
|17	&lt;br /&gt;
|GPIO6	&lt;br /&gt;
|31	&lt;br /&gt;
|PD6 (T1)	&lt;br /&gt;
|-&lt;br /&gt;
|18	&lt;br /&gt;
|GPIO7	&lt;br /&gt;
|32	&lt;br /&gt;
|PD7 (T0)	&lt;br /&gt;
|-&lt;br /&gt;
|19	&lt;br /&gt;
|GPIO3	&lt;br /&gt;
|33	&lt;br /&gt;
|PG0 (WR)	&lt;br /&gt;
|-&lt;br /&gt;
|20	&lt;br /&gt;
|GPIO4	&lt;br /&gt;
|34	&lt;br /&gt;
|PG1 (RD)	&lt;br /&gt;
|-&lt;br /&gt;
|21	&lt;br /&gt;
|GPIO5	&lt;br /&gt;
|43	&lt;br /&gt;
|PG2 (ALE)	&lt;br /&gt;
|-&lt;br /&gt;
|22	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|23	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|24	&lt;br /&gt;
|D_VCC	&lt;br /&gt;
|21	&lt;br /&gt;
|VCC	&lt;br /&gt;
|-&lt;br /&gt;
|25	&lt;br /&gt;
|D_VCC	&lt;br /&gt;
|21	&lt;br /&gt;
|VCC	&lt;br /&gt;
|-&lt;br /&gt;
|26	&lt;br /&gt;
|JTAG-TMS	&lt;br /&gt;
|56	&lt;br /&gt;
|PF5 (ADC5/JTAG-TMS)	&lt;br /&gt;
|-&lt;br /&gt;
|27	&lt;br /&gt;
|JTAG-TDI	&lt;br /&gt;
|54	&lt;br /&gt;
|PF7 (ADC7/JTAG-TDI)	&lt;br /&gt;
|-&lt;br /&gt;
|28	&lt;br /&gt;
|JTAG-TDO	&lt;br /&gt;
|55	&lt;br /&gt;
|PF6 (ADC6/JTAG-TDO)	&lt;br /&gt;
|-&lt;br /&gt;
|29	&lt;br /&gt;
|JTAG-TCK	&lt;br /&gt;
|57	&lt;br /&gt;
|PF4 (ADC4/JTAG-TCK)	&lt;br /&gt;
|-&lt;br /&gt;
|30	&lt;br /&gt;
|ADC_INPUT_3&lt;br /&gt;
|58	&lt;br /&gt;
|PF3 (ADC3)	&lt;br /&gt;
|-&lt;br /&gt;
|31	&lt;br /&gt;
|ADC_INPUT_2	&lt;br /&gt;
|59	&lt;br /&gt;
|PF2 (ADC2)	&lt;br /&gt;
|-&lt;br /&gt;
|32	&lt;br /&gt;
|ADC_INPUT_1&lt;br /&gt;
|60	&lt;br /&gt;
|PF1 (ADC1)	&lt;br /&gt;
|-&lt;br /&gt;
|33	&lt;br /&gt;
|BAT	&lt;br /&gt;
|61	&lt;br /&gt;
|PF0 (ADC0)	&lt;br /&gt;
|-&lt;br /&gt;
|34	&lt;br /&gt;
|A_VREF	&lt;br /&gt;
|62	&lt;br /&gt;
|AREF	&lt;br /&gt;
|-&lt;br /&gt;
|35	&lt;br /&gt;
|AGND	&lt;br /&gt;
|63	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|36	&lt;br /&gt;
|GPIO_1WIRE	&lt;br /&gt;
|1	&lt;br /&gt;
|PG5 (OC0B)	&lt;br /&gt;
|-&lt;br /&gt;
|37	&lt;br /&gt;
|UART_DTR	&lt;br /&gt;
|6	&lt;br /&gt;
|PE4 (OC3B/INT4)	&lt;br /&gt;
|-&lt;br /&gt;
|38	&lt;br /&gt;
|USART0_RXD	&lt;br /&gt;
|2	&lt;br /&gt;
|PE0 (RXD0/PCINT8/PDI)	&lt;br /&gt;
|-&lt;br /&gt;
|39	&lt;br /&gt;
|USART0_TXD	&lt;br /&gt;
|3	&lt;br /&gt;
|PE1 (TXD0/PD0)	&lt;br /&gt;
|-&lt;br /&gt;
|40	&lt;br /&gt;
|USART0_EXTCLK	&lt;br /&gt;
|4	&lt;br /&gt;
|PE2 (XCK0/AIN0)	&lt;br /&gt;
|-&lt;br /&gt;
|41	&lt;br /&gt;
|GPIO8	&lt;br /&gt;
|5	&lt;br /&gt;
|PE3 (OC3A/AIN1)	&lt;br /&gt;
|-&lt;br /&gt;
|42	&lt;br /&gt;
|IRQ7	&lt;br /&gt;
|9	&lt;br /&gt;
|PE7 (ICP3/CLK0/INT7)	&lt;br /&gt;
|-&lt;br /&gt;
|43	&lt;br /&gt;
|IRQ6	&lt;br /&gt;
|8	&lt;br /&gt;
|PE6 (T3/INT6)	&lt;br /&gt;
|}&lt;br /&gt;
Desweiteren sind intern noch folgende Pins des AT86RF230 mit Pins des ATmega1281 verbunden:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Pin&lt;br /&gt;
!AT86RF230&lt;br /&gt;
!Pin&lt;br /&gt;
!ATmega1281&lt;br /&gt;
|-&lt;br /&gt;
|7	&lt;br /&gt;
|TST	&lt;br /&gt;
|n.v.	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|8	&lt;br /&gt;
|RST	&lt;br /&gt;
|44	&lt;br /&gt;
|PA7 (AD7)&lt;br /&gt;
|-&lt;br /&gt;
|11	&lt;br /&gt;
|SLP_TR	&lt;br /&gt;
|14	&lt;br /&gt;
|PB4 (OC2A/PCINT4)&lt;br /&gt;
|-&lt;br /&gt;
|17	&lt;br /&gt;
|CLKM&lt;br /&gt;
|24	&lt;br /&gt;
|XTAL1&lt;br /&gt;
|-&lt;br /&gt;
|19	&lt;br /&gt;
|SCLK	&lt;br /&gt;
|11	&lt;br /&gt;
|PB1 (SCK/PCINT1)&lt;br /&gt;
|-&lt;br /&gt;
|20	&lt;br /&gt;
|MISO	&lt;br /&gt;
|13	&lt;br /&gt;
|PB3 (MISO/PCINT3)&lt;br /&gt;
|-&lt;br /&gt;
|22	&lt;br /&gt;
|MOSI	&lt;br /&gt;
|12	&lt;br /&gt;
|PB2 (MOSI/PCINT2)&lt;br /&gt;
|-&lt;br /&gt;
|23	&lt;br /&gt;
|SEL	&lt;br /&gt;
|10	&lt;br /&gt;
|PB0 (SS/PCINT0)&lt;br /&gt;
|-&lt;br /&gt;
|24	&lt;br /&gt;
|IRQ	&lt;br /&gt;
|7	&lt;br /&gt;
|PE5 (OC3C/INT5)&lt;br /&gt;
|}&lt;br /&gt;
Wie man sich das Ganze in etwa vorzustellen hat, kann man grob im Datenblatt für das RZRaven-LCD Modul nachschauen (der Schaltplan auf Seite 12 in [1])&lt;br /&gt;
==== Weblinks ====&lt;br /&gt;
[1] [http://www.atmel.com/dyn/resources/prod_documents/doc8117.pdf AVR2016: RZRAVEN Hardware User&#039;s Guide]&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== eZeeNet ZigBee Software Stack ==&lt;br /&gt;
=== Bekannte Probleme ===&lt;br /&gt;
==== fw_dataRequest liefert FAIL zurück ====&lt;br /&gt;
Laut Datenblatt zum Stack (V1.7, Seite 46) liefert fw_dataRequest den Rückgabewert FAIL nur dann, wenn die zu sendende Datenmenge zu groß für den Puffer ist. &lt;br /&gt;
&lt;br /&gt;
Doch auch wenn die Datenmenge kleiner ist als die größe des Buffers, kann es vorkommen, dass man den Rückgabewert FAIL erhält.&lt;br /&gt;
&lt;br /&gt;
Der Grund ist folgender:&lt;br /&gt;
Daten können nur dann über einen Endpunkt versendet werden, wenn für den betreffenden Endpunkt ein Handler zum Datenempfang registriert wurde. Ist kein Handler registriert, gibt fw_dataRequest ebenfalls FAIL zurück.&lt;br /&gt;
&lt;br /&gt;
Dies steht nicht explizit im Datenblatt, so dass man vermuten könnte, dass Daten auch ohne die Registrierung eines Endpuktes versendet werden können.&lt;br /&gt;
&lt;br /&gt;
==== Es kann kein Netz aufgebaut werden ====&lt;br /&gt;
siehe: http://www.mikrocontroller.net/topic/84931#803551&lt;br /&gt;
Problem sollte hier noch zusammengefasst und erläutert werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ADC-Ports funktionieren nicht? ====&lt;br /&gt;
Der Handler der ADC-Ergebnisroutinen wird nicht aufgerufen, obwohl die Ports geöffnet und mittels adc_get Samples angefragt wurden.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;adc.h&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
void adc0DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
void adc1DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
void adc2DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
void adc3DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_BAT, adc0DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_INPUT_1, adc1DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_INPUT_2, adc2DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_INPUT_3, adc3DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_BAT);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_INPUT_1);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_INPUT_2);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_INPUT_3);&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ZigBee PRO Stack ==&lt;br /&gt;
Der ZigBee PRO Stack ist ein komplett neuer Stack, welcher nicht mehr auf der OpenMAC Implementierung basiert. Das noch beim eZeeNet Stack eingesetzte RTOS wurde ebenfalls ersetzt.&lt;br /&gt;
&lt;br /&gt;
== SerialNet AT Commands Set ==&lt;br /&gt;
&lt;br /&gt;
== MeshNetics OpenMAC ==&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=27529</id>
		<title>Meshnetics Zigbee</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=27529"/>
		<updated>2008-04-17T14:48:25Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: /* ADC-Ports funktionieren nicht? */ Nummerierung korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Zweck dieses Artikels==&lt;br /&gt;
Da in letzter Zeit mehrere Personen im Forum mit den Zigbee Modulen von Meshnetics und den zugehörigen eZeeNet-Stack arbeiten, soll dieser Artikel eine Hilfestellung für die bei der Entwicklung auftretenden Probleme bieten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:ZDM-A1281-A2_offen.gif|framed|Zigbee Modul ZDM-A1281-A2 mit On-Chip-Antenne. Die metallische Abschirmung über dem Controllerteil wurde entfernt]]&lt;br /&gt;
&lt;br /&gt;
== Details zu den Zigbee Modulen==&lt;br /&gt;
=== ZDM-A1281-A2 PinOUT vs. embedded ATmega1281 und AT86RF230 ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Pin&lt;br /&gt;
!ZDM-A1281-A2&lt;br /&gt;
!Pin&lt;br /&gt;
!ATmega1281&lt;br /&gt;
|-&lt;br /&gt;
|1	&lt;br /&gt;
|SPI_CLK	&lt;br /&gt;
|11	&lt;br /&gt;
|PB1 (SCK/PCINT1)	&lt;br /&gt;
|-&lt;br /&gt;
|2	&lt;br /&gt;
|SPI_MISO	&lt;br /&gt;
|13	&lt;br /&gt;
|PB3 (MISO/PCINT3)	&lt;br /&gt;
|-&lt;br /&gt;
|3	&lt;br /&gt;
|SPI_MOSI	&lt;br /&gt;
|12	&lt;br /&gt;
|PB2 (MOSI/PCINT2)	&lt;br /&gt;
|-&lt;br /&gt;
|4	&lt;br /&gt;
|GPIO0&lt;br /&gt;
|15	&lt;br /&gt;
|PB5 (OC1A/PCINT5)	&lt;br /&gt;
|-&lt;br /&gt;
|5	&lt;br /&gt;
|GPIO1&lt;br /&gt;
|16	&lt;br /&gt;
|PB6 (OC1BPCINT6)	&lt;br /&gt;
|-&lt;br /&gt;
|6	&lt;br /&gt;
|GPIO2&lt;br /&gt;
|17	&lt;br /&gt;
|PB7 (OC0A/OC1C/PCINT7)	&lt;br /&gt;
|-&lt;br /&gt;
|7	&lt;br /&gt;
|OSC32K_OUT	&lt;br /&gt;
|18	&lt;br /&gt;
|PG3 (TOSC2)	&lt;br /&gt;
|-&lt;br /&gt;
|8	&lt;br /&gt;
|RESET	&lt;br /&gt;
|20	&lt;br /&gt;
|RESET	&lt;br /&gt;
|-&lt;br /&gt;
|9	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|10	&lt;br /&gt;
|CPU_CLK	&lt;br /&gt;
|24	&lt;br /&gt;
|XTAL1	&lt;br /&gt;
|-&lt;br /&gt;
|11	&lt;br /&gt;
|I2C_CLK	&lt;br /&gt;
|25	&lt;br /&gt;
|PD0 (SCL/INT0)	&lt;br /&gt;
|-&lt;br /&gt;
|12	&lt;br /&gt;
|I2C_DATA	&lt;br /&gt;
|26	&lt;br /&gt;
|PD1 (SDA/INT1)	&lt;br /&gt;
|-&lt;br /&gt;
|13	&lt;br /&gt;
|UART_RXD	&lt;br /&gt;
|27	&lt;br /&gt;
|PD2 (RXD1/INT2)	&lt;br /&gt;
|-&lt;br /&gt;
|14	&lt;br /&gt;
|UART_TXD	&lt;br /&gt;
|28	&lt;br /&gt;
|PD3 (TXD1/INT3)	&lt;br /&gt;
|-&lt;br /&gt;
|15	&lt;br /&gt;
|UART_RTS	&lt;br /&gt;
|29	&lt;br /&gt;
|PD4 (ICP1)	&lt;br /&gt;
|-&lt;br /&gt;
|16	&lt;br /&gt;
|UART_CTS	&lt;br /&gt;
|30	&lt;br /&gt;
|PD5 (XCK1)	&lt;br /&gt;
|-&lt;br /&gt;
|17	&lt;br /&gt;
|GPIO6	&lt;br /&gt;
|31	&lt;br /&gt;
|PD6 (T1)	&lt;br /&gt;
|-&lt;br /&gt;
|18	&lt;br /&gt;
|GPIO7	&lt;br /&gt;
|32	&lt;br /&gt;
|PD7 (T0)	&lt;br /&gt;
|-&lt;br /&gt;
|19	&lt;br /&gt;
|GPIO3	&lt;br /&gt;
|33	&lt;br /&gt;
|PG0 (WR)	&lt;br /&gt;
|-&lt;br /&gt;
|20	&lt;br /&gt;
|GPIO4	&lt;br /&gt;
|34	&lt;br /&gt;
|PG1 (RD)	&lt;br /&gt;
|-&lt;br /&gt;
|21	&lt;br /&gt;
|GPIO5	&lt;br /&gt;
|43	&lt;br /&gt;
|PG2 (ALE)	&lt;br /&gt;
|-&lt;br /&gt;
|22	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|23	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|24	&lt;br /&gt;
|D_VCC	&lt;br /&gt;
|21	&lt;br /&gt;
|VCC	&lt;br /&gt;
|-&lt;br /&gt;
|25	&lt;br /&gt;
|D_VCC	&lt;br /&gt;
|21	&lt;br /&gt;
|VCC	&lt;br /&gt;
|-&lt;br /&gt;
|26	&lt;br /&gt;
|JTAG-TMS	&lt;br /&gt;
|56	&lt;br /&gt;
|PF5 (ADC5/JTAG-TMS)	&lt;br /&gt;
|-&lt;br /&gt;
|27	&lt;br /&gt;
|JTAG-TDI	&lt;br /&gt;
|54	&lt;br /&gt;
|PF7 (ADC7/JTAG-TDI)	&lt;br /&gt;
|-&lt;br /&gt;
|28	&lt;br /&gt;
|JTAG-TDO	&lt;br /&gt;
|55	&lt;br /&gt;
|PF6 (ADC6/JTAG-TDO)	&lt;br /&gt;
|-&lt;br /&gt;
|29	&lt;br /&gt;
|JTAG-TCK	&lt;br /&gt;
|57	&lt;br /&gt;
|PF4 (ADC4/JTAG-TCK)	&lt;br /&gt;
|-&lt;br /&gt;
|30	&lt;br /&gt;
|ADC_INPUT_3&lt;br /&gt;
|58	&lt;br /&gt;
|PF3 (ADC3)	&lt;br /&gt;
|-&lt;br /&gt;
|31	&lt;br /&gt;
|ADC_INPUT_2	&lt;br /&gt;
|59	&lt;br /&gt;
|PF2 (ADC2)	&lt;br /&gt;
|-&lt;br /&gt;
|32	&lt;br /&gt;
|ADC_INPUT_1&lt;br /&gt;
|60	&lt;br /&gt;
|PF1 (ADC1)	&lt;br /&gt;
|-&lt;br /&gt;
|33	&lt;br /&gt;
|BAT	&lt;br /&gt;
|61	&lt;br /&gt;
|PF0 (ADC0)	&lt;br /&gt;
|-&lt;br /&gt;
|34	&lt;br /&gt;
|A_VREF	&lt;br /&gt;
|62	&lt;br /&gt;
|AREF	&lt;br /&gt;
|-&lt;br /&gt;
|35	&lt;br /&gt;
|AGND	&lt;br /&gt;
|63	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|36	&lt;br /&gt;
|GPIO_1WIRE	&lt;br /&gt;
|1	&lt;br /&gt;
|PG5 (OC0B)	&lt;br /&gt;
|-&lt;br /&gt;
|37	&lt;br /&gt;
|UART_DTR	&lt;br /&gt;
|6	&lt;br /&gt;
|PE4 (OC3B/INT4)	&lt;br /&gt;
|-&lt;br /&gt;
|38	&lt;br /&gt;
|USART0_RXD	&lt;br /&gt;
|2	&lt;br /&gt;
|PE0 (RXD0/PCINT8/PDI)	&lt;br /&gt;
|-&lt;br /&gt;
|39	&lt;br /&gt;
|USART0_TXD	&lt;br /&gt;
|3	&lt;br /&gt;
|PE1 (TXD0/PD0)	&lt;br /&gt;
|-&lt;br /&gt;
|40	&lt;br /&gt;
|USART0_EXTCLK	&lt;br /&gt;
|4	&lt;br /&gt;
|PE2 (XCK0/AIN0)	&lt;br /&gt;
|-&lt;br /&gt;
|41	&lt;br /&gt;
|GPIO8	&lt;br /&gt;
|5	&lt;br /&gt;
|PE3 (OC3A/AIN1)	&lt;br /&gt;
|-&lt;br /&gt;
|42	&lt;br /&gt;
|IRQ7	&lt;br /&gt;
|9	&lt;br /&gt;
|PE7 (ICP3/CLK0/INT7)	&lt;br /&gt;
|-&lt;br /&gt;
|43	&lt;br /&gt;
|IRQ6	&lt;br /&gt;
|8	&lt;br /&gt;
|PE6 (T3/INT6)	&lt;br /&gt;
|}&lt;br /&gt;
Desweiteren sind intern noch folgende Pins des AT86RF230 mit Pins des ATmega1281 verbunden:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Pin&lt;br /&gt;
!AT86RF230&lt;br /&gt;
!Pin&lt;br /&gt;
!ATmega1281&lt;br /&gt;
|-&lt;br /&gt;
|7	&lt;br /&gt;
|TST	&lt;br /&gt;
|n.v.	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|8	&lt;br /&gt;
|RST	&lt;br /&gt;
|44	&lt;br /&gt;
|PA7 (AD7)&lt;br /&gt;
|-&lt;br /&gt;
|11	&lt;br /&gt;
|SLP_TR	&lt;br /&gt;
|14	&lt;br /&gt;
|PB4 (OC2A/PCINT4)&lt;br /&gt;
|-&lt;br /&gt;
|17	&lt;br /&gt;
|CLKM&lt;br /&gt;
|24	&lt;br /&gt;
|XTAL1&lt;br /&gt;
|-&lt;br /&gt;
|19	&lt;br /&gt;
|SCLK	&lt;br /&gt;
|11	&lt;br /&gt;
|PB1 (SCK/PCINT1)&lt;br /&gt;
|-&lt;br /&gt;
|20	&lt;br /&gt;
|MISO	&lt;br /&gt;
|13	&lt;br /&gt;
|PB3 (MISO/PCINT3)&lt;br /&gt;
|-&lt;br /&gt;
|22	&lt;br /&gt;
|MOSI	&lt;br /&gt;
|12	&lt;br /&gt;
|PB2 (MOSI/PCINT2)&lt;br /&gt;
|-&lt;br /&gt;
|23	&lt;br /&gt;
|SEL	&lt;br /&gt;
|10	&lt;br /&gt;
|PB0 (SS/PCINT0)&lt;br /&gt;
|-&lt;br /&gt;
|24	&lt;br /&gt;
|IRQ	&lt;br /&gt;
|7	&lt;br /&gt;
|PE5 (OC3C/INT5)&lt;br /&gt;
|}&lt;br /&gt;
Wie man sich das Ganze in etwa vorzustellen hat, kann man grob im Datenblatt für das RZRaven-LCD Modul nachschauen (der Schaltplan auf Seite 12 in [1])&lt;br /&gt;
==== Weblinks ====&lt;br /&gt;
[1] [http://www.atmel.com/dyn/resources/prod_documents/doc8117.pdf AVR2016: RZRAVEN Hardware User&#039;s Guide]&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme==&lt;br /&gt;
=== fw_dataRequest liefert FAIL zurück===&lt;br /&gt;
Laut Datenblatt zum Stack (V1.7, Seite 46) liefert fw_dataRequest den Rückgabewert FAIL nur dann, wenn die zu sendende Datenmenge zu groß für den Puffer ist. &lt;br /&gt;
&lt;br /&gt;
Doch auch wenn die Datenmenge kleiner ist als die größe des Buffers, kann es vorkommen, dass man den Rückgabewert FAIL erhält.&lt;br /&gt;
&lt;br /&gt;
Der Grund ist folgender:&lt;br /&gt;
Daten können nur dann über einen Endpunkt versendet werden, wenn für den betreffenden Endpunkt ein Handler zum Datenempfang registriert wurde. Ist kein Handler registriert, gibt fw_dataRequest ebenfalls FAIL zurück.&lt;br /&gt;
&lt;br /&gt;
Dies steht nicht explizit im Datenblatt, so dass man vermuten könnte, dass Daten auch ohne die Registrierung eines Endpuktes versendet werden können.&lt;br /&gt;
&lt;br /&gt;
=== Es kann kein Netz aufgebaut werden ===&lt;br /&gt;
siehe: http://www.mikrocontroller.net/topic/84931#803551&lt;br /&gt;
Problem sollte hier noch zusammengefasst und erläutert werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ADC-Ports funktionieren nicht? ===&lt;br /&gt;
Der Handler der ADC-Ergbnisroutinen wird nicht aufgerufen, obwohl die Ports geöffnet und mittels adc_get Samples angefragt wurden.&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;adc.h&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
void adc0DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
void adc1DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
void adc2DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
void adc3DataHandler(uint16_t data){&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
}&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_BAT, adc0DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_INPUT_1, adc1DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_INPUT_2, adc2DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_open(ADC_INPUT_3, adc3DataHandler);&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_BAT);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_INPUT_1);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_INPUT_2);&amp;lt;br&amp;gt;&lt;br /&gt;
adc_get(ADC_INPUT_3);&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=27148</id>
		<title>Meshnetics Zigbee</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=27148"/>
		<updated>2008-03-30T21:09:50Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Bild der Module beschriftet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Zweck dieses Artikels==&lt;br /&gt;
Da in letzter Zeit mehrere Personen im Forum mit den Zigbee Modulen von Meshnetics und den zugehörigen eZeeNet-Stack arbeiten, soll dieser Artikel eine Hilfestellung für die bei der Entwicklung auftretenden Probleme bieten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:ZDM-A1281-A2_offen.gif|framed|Zigbee Modul ZDM-A1281-A2 mit On-Chip-Antenne. Die metallische Abschirmung über dem Controllerteil wurde entfernt]]&lt;br /&gt;
&lt;br /&gt;
== Details zu den Zigbee Modulen==&lt;br /&gt;
=== ZDM-A1281-A2 PinOUT vs. embedded ATmega1281 und AT86RF230 ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Pin&lt;br /&gt;
!ZDM-A1281-A2&lt;br /&gt;
!Pin&lt;br /&gt;
!ATmega1281&lt;br /&gt;
|-&lt;br /&gt;
|1	&lt;br /&gt;
|SPI_CLK	&lt;br /&gt;
|11	&lt;br /&gt;
|PB1 (SCK/PCINT1)	&lt;br /&gt;
|-&lt;br /&gt;
|2	&lt;br /&gt;
|SPI_MISO	&lt;br /&gt;
|13	&lt;br /&gt;
|PB3 (MISO/PCINT3)	&lt;br /&gt;
|-&lt;br /&gt;
|3	&lt;br /&gt;
|SPI_MOSI	&lt;br /&gt;
|12	&lt;br /&gt;
|PB2 (MOSI/PCINT2)	&lt;br /&gt;
|-&lt;br /&gt;
|4	&lt;br /&gt;
|GPIO0&lt;br /&gt;
|15	&lt;br /&gt;
|PB5 (OC1A/PCINT5)	&lt;br /&gt;
|-&lt;br /&gt;
|5	&lt;br /&gt;
|GPIO1&lt;br /&gt;
|16	&lt;br /&gt;
|PB6 (OC1BPCINT6)	&lt;br /&gt;
|-&lt;br /&gt;
|6	&lt;br /&gt;
|GPIO2&lt;br /&gt;
|17	&lt;br /&gt;
|PB7 (OC0A/OC1C/PCINT7)	&lt;br /&gt;
|-&lt;br /&gt;
|7	&lt;br /&gt;
|OSC32K_OUT	&lt;br /&gt;
|18	&lt;br /&gt;
|PG3 (TOSC2)	&lt;br /&gt;
|-&lt;br /&gt;
|8	&lt;br /&gt;
|RESET	&lt;br /&gt;
|20	&lt;br /&gt;
|RESET	&lt;br /&gt;
|-&lt;br /&gt;
|9	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|10	&lt;br /&gt;
|CPU_CLK	&lt;br /&gt;
|24	&lt;br /&gt;
|XTAL1	&lt;br /&gt;
|-&lt;br /&gt;
|11	&lt;br /&gt;
|I2C_CLK	&lt;br /&gt;
|25	&lt;br /&gt;
|PD0 (SCL/INT0)	&lt;br /&gt;
|-&lt;br /&gt;
|12	&lt;br /&gt;
|I2C_DATA	&lt;br /&gt;
|26	&lt;br /&gt;
|PD1 (SDA/INT1)	&lt;br /&gt;
|-&lt;br /&gt;
|13	&lt;br /&gt;
|UART_RXD	&lt;br /&gt;
|27	&lt;br /&gt;
|PD2 (RXD1/INT2)	&lt;br /&gt;
|-&lt;br /&gt;
|14	&lt;br /&gt;
|UART_TXD	&lt;br /&gt;
|28	&lt;br /&gt;
|PD3 (TXD1/INT3)	&lt;br /&gt;
|-&lt;br /&gt;
|15	&lt;br /&gt;
|UART_RTS	&lt;br /&gt;
|29	&lt;br /&gt;
|PD4 (ICP1)	&lt;br /&gt;
|-&lt;br /&gt;
|16	&lt;br /&gt;
|UART_CTS	&lt;br /&gt;
|30	&lt;br /&gt;
|PD5 (XCK1)	&lt;br /&gt;
|-&lt;br /&gt;
|17	&lt;br /&gt;
|GPIO6	&lt;br /&gt;
|31	&lt;br /&gt;
|PD6 (T1)	&lt;br /&gt;
|-&lt;br /&gt;
|18	&lt;br /&gt;
|GPIO7	&lt;br /&gt;
|32	&lt;br /&gt;
|PD7 (T0)	&lt;br /&gt;
|-&lt;br /&gt;
|19	&lt;br /&gt;
|GPIO3	&lt;br /&gt;
|33	&lt;br /&gt;
|PG0 (WR)	&lt;br /&gt;
|-&lt;br /&gt;
|20	&lt;br /&gt;
|GPIO4	&lt;br /&gt;
|34	&lt;br /&gt;
|PG1 (RD)	&lt;br /&gt;
|-&lt;br /&gt;
|21	&lt;br /&gt;
|GPIO5	&lt;br /&gt;
|43	&lt;br /&gt;
|PG2 (ALE)	&lt;br /&gt;
|-&lt;br /&gt;
|22	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|23	&lt;br /&gt;
|DGND	&lt;br /&gt;
|22	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|24	&lt;br /&gt;
|D_VCC	&lt;br /&gt;
|21	&lt;br /&gt;
|VCC	&lt;br /&gt;
|-&lt;br /&gt;
|25	&lt;br /&gt;
|D_VCC	&lt;br /&gt;
|21	&lt;br /&gt;
|VCC	&lt;br /&gt;
|-&lt;br /&gt;
|26	&lt;br /&gt;
|JTAG-TMS	&lt;br /&gt;
|56	&lt;br /&gt;
|PF5 (ADC5/JTAG-TMS)	&lt;br /&gt;
|-&lt;br /&gt;
|27	&lt;br /&gt;
|JTAG-TDI	&lt;br /&gt;
|54	&lt;br /&gt;
|PF7 (ADC7/JTAG-TDI)	&lt;br /&gt;
|-&lt;br /&gt;
|28	&lt;br /&gt;
|JTAG-TDO	&lt;br /&gt;
|55	&lt;br /&gt;
|PF6 (ADC6/JTAG-TDO)	&lt;br /&gt;
|-&lt;br /&gt;
|29	&lt;br /&gt;
|JTAG-TCK	&lt;br /&gt;
|57	&lt;br /&gt;
|PF4 (ADC4/JTAG-TCK)	&lt;br /&gt;
|-&lt;br /&gt;
|30	&lt;br /&gt;
|ADC_INPUT_3&lt;br /&gt;
|58	&lt;br /&gt;
|PF3 (ADC3)	&lt;br /&gt;
|-&lt;br /&gt;
|31	&lt;br /&gt;
|ADC_INPUT_2	&lt;br /&gt;
|59	&lt;br /&gt;
|PF2 (ADC2)	&lt;br /&gt;
|-&lt;br /&gt;
|32	&lt;br /&gt;
|ADC_INPUT_1&lt;br /&gt;
|60	&lt;br /&gt;
|PF1 (ADC1)	&lt;br /&gt;
|-&lt;br /&gt;
|33	&lt;br /&gt;
|BAT	&lt;br /&gt;
|61	&lt;br /&gt;
|PF0 (ADC0)	&lt;br /&gt;
|-&lt;br /&gt;
|34	&lt;br /&gt;
|A_VREF	&lt;br /&gt;
|62	&lt;br /&gt;
|AREF	&lt;br /&gt;
|-&lt;br /&gt;
|35	&lt;br /&gt;
|AGND	&lt;br /&gt;
|63	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|36	&lt;br /&gt;
|GPIO_1WIRE	&lt;br /&gt;
|1	&lt;br /&gt;
|PG5 (OC0B)	&lt;br /&gt;
|-&lt;br /&gt;
|37	&lt;br /&gt;
|UART_DTR	&lt;br /&gt;
|6	&lt;br /&gt;
|PE4 (OC3B/INT4)	&lt;br /&gt;
|-&lt;br /&gt;
|38	&lt;br /&gt;
|USART0_RXD	&lt;br /&gt;
|2	&lt;br /&gt;
|PE0 (RXD0/PCINT8/PDI)	&lt;br /&gt;
|-&lt;br /&gt;
|39	&lt;br /&gt;
|USART0_TXD	&lt;br /&gt;
|3	&lt;br /&gt;
|PE1 (TXD0/PD0)	&lt;br /&gt;
|-&lt;br /&gt;
|40	&lt;br /&gt;
|USART0_EXTCLK	&lt;br /&gt;
|4	&lt;br /&gt;
|PE2 (XCK0/AIN0)	&lt;br /&gt;
|-&lt;br /&gt;
|41	&lt;br /&gt;
|GPIO8	&lt;br /&gt;
|5	&lt;br /&gt;
|PE3 (OC3A/AIN1)	&lt;br /&gt;
|-&lt;br /&gt;
|42	&lt;br /&gt;
|IRQ7	&lt;br /&gt;
|9	&lt;br /&gt;
|PE7 (ICP3/CLK0/INT7)	&lt;br /&gt;
|-&lt;br /&gt;
|43	&lt;br /&gt;
|IRQ6	&lt;br /&gt;
|8	&lt;br /&gt;
|PE6 (T3/INT6)	&lt;br /&gt;
|}&lt;br /&gt;
Desweiteren sind intern noch folgende Pins des AT86RF230 mit Pins des ATmega1281 verbunden:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Pin&lt;br /&gt;
!AT86RF230&lt;br /&gt;
!Pin&lt;br /&gt;
!ATmega1281&lt;br /&gt;
|-&lt;br /&gt;
|7	&lt;br /&gt;
|TST	&lt;br /&gt;
|n.v.	&lt;br /&gt;
|GND	&lt;br /&gt;
|-&lt;br /&gt;
|8	&lt;br /&gt;
|RST	&lt;br /&gt;
|44	&lt;br /&gt;
|PA7 (AD7)&lt;br /&gt;
|-&lt;br /&gt;
|11	&lt;br /&gt;
|SLP_TR	&lt;br /&gt;
|14	&lt;br /&gt;
|PB4 (OC2A/PCINT4)&lt;br /&gt;
|-&lt;br /&gt;
|17	&lt;br /&gt;
|CLKM&lt;br /&gt;
|24	&lt;br /&gt;
|XTAL1&lt;br /&gt;
|-&lt;br /&gt;
|19	&lt;br /&gt;
|SCLK	&lt;br /&gt;
|11	&lt;br /&gt;
|PB1 (SCK/PCINT1)&lt;br /&gt;
|-&lt;br /&gt;
|20	&lt;br /&gt;
|MISO	&lt;br /&gt;
|13	&lt;br /&gt;
|PB3 (MISO/PCINT3)&lt;br /&gt;
|-&lt;br /&gt;
|22	&lt;br /&gt;
|MOSI	&lt;br /&gt;
|12	&lt;br /&gt;
|PB1 (MOSI/PCINT2)&lt;br /&gt;
|-&lt;br /&gt;
|23	&lt;br /&gt;
|SEL	&lt;br /&gt;
|10	&lt;br /&gt;
|PB0 (SS/PCINT0)&lt;br /&gt;
|-&lt;br /&gt;
|24	&lt;br /&gt;
|IRQ	&lt;br /&gt;
|7	&lt;br /&gt;
|PE5 (OC3C/INT5)&lt;br /&gt;
|}&lt;br /&gt;
Wie man sich das Ganze in etwa vorzustellen hat, kann man grob im Datenblatt für das RZRaven-LCD Modul nachschauen (der Schaltplan auf Seite 12 in [1])&lt;br /&gt;
==== Weblinks ====&lt;br /&gt;
[1] [http://www.atmel.com/dyn/resources/prod_documents/doc8117.pdf AVR2016: RZRAVEN Hardware User&#039;s Guide]&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme==&lt;br /&gt;
=== fw_dataRequest liefert FAIL zurück===&lt;br /&gt;
Laut Datenblatt zum Stack (V1.7, Seite 46) liefert fw_dataRequest den Rückgabewert FAIL nur dann, wenn die zu sendende Datenmenge zu groß für den Puffer ist. &lt;br /&gt;
&lt;br /&gt;
Doch auch wenn die Datenmenge kleiner ist als die größe des Buffers, kann es vorkommen, dass man den Rückgabewert FAIL erhält.&lt;br /&gt;
&lt;br /&gt;
Der Grund ist folgender:&lt;br /&gt;
Daten können nur dann über einen Endpunkt versendet werden, wenn für den betreffenden Endpunkt ein Handler zum Datenempfang registriert wurde. Ist kein Handler registriert, gibt fw_dataRequest ebenfalls FAIL zurück.&lt;br /&gt;
&lt;br /&gt;
Dies steht nicht explizit im Datenblatt, so dass man vermuten könnte, dass Daten auch ohne die Registrierung eines Endpuktes versendet werden können.&lt;br /&gt;
&lt;br /&gt;
=== Es kann kein Netz aufgebaut werden ===&lt;br /&gt;
siehe: http://www.mikrocontroller.net/topic/84931#803551&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=26723</id>
		<title>Meshnetics Zigbee</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=26723"/>
		<updated>2008-03-06T17:35:01Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Zweck dieses Artikels==&lt;br /&gt;
Da in letzter Zeit mehrere Personen im Forum mit den Zigbee Modulen von Meshnectis und den zugehörigen eZeeNet-Stack arbeiten, soll dieser Artikel eine Hilfestellung fürbei der Entwicklung aufgetretene Probleme bieten.&lt;br /&gt;
&lt;br /&gt;
== Details zu den Zigbee Modulen==&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme==&lt;br /&gt;
=== fw_dataRequest liefert FAIL zurück===&lt;br /&gt;
Laut Datenblatt zum Stack (V1.7, Seite 46) liefert fw_dataRequest den Rückgabewert FAIL nur dann, wenn die zu sendende Datenmenge zu groß für den Puffer ist. &lt;br /&gt;
&lt;br /&gt;
Doch auch wenn die Datenmenge kleiner ist als die größe des Buffers, kann es vorkommen, dass man den Rückgabewert FAIL erhält.&lt;br /&gt;
&lt;br /&gt;
Der Grund ist folgender:&lt;br /&gt;
Daten können nur dann über einen Endpunkt versendet werden, wenn für den betreffenden Endpunkt ein Handler zum Datenempfang registriert wurde. Ist kein Handler registriert, gibt fw_dataRequest ebenfalls FAIL zurück.&lt;br /&gt;
&lt;br /&gt;
Dies steht nicht explizit im Datenblatt, so dass man vermuten könnte, dass Daten auch ohne die Registrierung eines Endpuktes versendet werden können.&lt;br /&gt;
&lt;br /&gt;
=== Es kann kein Netz augebaut werden ===&lt;br /&gt;
siehe: http://www.mikrocontroller.net/topic/84931#803551&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=26722</id>
		<title>Meshnetics Zigbee</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Meshnetics_Zigbee&amp;diff=26722"/>
		<updated>2008-03-06T17:34:44Z</updated>

		<summary type="html">&lt;p&gt;Nezaya: Artikel über Meshnetics Zigbee Module und eZeenet Stack erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Zweck dieses Artikels==&lt;br /&gt;
Da in letzter Zeit mehrere Personen im Forum mit den Zigbee Modulen von Meshnectis und den zugehörigen eZeeNet-Stack arbeiten, soll dieser Artikel eine Hilfestellung fürbei der Entwicklung aufgetretene Probleme bieten.&lt;br /&gt;
&lt;br /&gt;
== Details zu den Zigbee Modulen==&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme==&lt;br /&gt;
=== fw_dataRequest liefert FAIL zurück===&lt;br /&gt;
Laut Datenblatt zum Stack (V1.7, Seite 46) liefert fw_dataRequest den Rückgabewert FAIL nur dann, wenn die zu sendende Datenmenge zu groß für den Puffer ist. &lt;br /&gt;
&lt;br /&gt;
Doch auch wenn die Datenmenge kleiner ist als die größe des Buffers, kann es vorkommen, dass man den Rückgabewert FAIL erhält.&lt;br /&gt;
&lt;br /&gt;
Der Grund ist folgender:&lt;br /&gt;
Daten können nur dann über einen Endpunkt versendet werden, wenn für den betreffenden Endpunkt ein Handler zum Datenempfang registriert wurde. Ist kein Handler registriert, gibt fw_dataRequest ebenfalls FAIL zurück.&lt;br /&gt;
&lt;br /&gt;
Dies steht nicht explizit im Datenblatt, so dass man vermuten könnte, dass Daten auch ohne die Registrierung eines Endpuktes versendet werden können.&lt;br /&gt;
&lt;br /&gt;
=== Es kann kein Netz augebaut werden ==&lt;br /&gt;
siehe: http://www.mikrocontroller.net/topic/84931#803551&lt;/div&gt;</summary>
		<author><name>Nezaya</name></author>
	</entry>
</feed>