Benutzer-Werkzeuge

Webseiten-Werkzeuge


contiki:howto_compile

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
contiki:howto_compile [2012/03/15 06:35] – [Installation vom instant-contiki und Kompilieren eines ersten Programms] admincontiki:howto_compile [2017/01/24 18:49] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 4: Zeile 4:
  
 ==== Installation vom instant-contiki und Kompilieren eines ersten Programms ==== ==== Installation vom instant-contiki und Kompilieren eines ersten Programms ====
-  - Installiere den VMWare Player (http://www.vmware.com/products/player/+  - Installiere die Contiki Entwicklungsumgebung wie [[contiki:installation_der_contiki_entwicklungsumgebung| hier]] beschrieben
-  - Instant-contiki runterladen von (http://sourceforge.net/projects/contiki/files/Instant%20Contiki/Instant%20Contiki%202.5/) +  - HowTo für den VMWare Player: http://www.contiki-os.org/start.html
-  - und als virtuelle maschine im VMWare Player einbinden und starten (HowTo unter: http://www.contiki-os.org/p/instant-contiki.html+
-  - **Vorsicht:** bitte im Ubuntu kein Update machen (habe ich beim ersten Mal gemacht und danach Probleme bekommen)+
   - (optional) aus Bequemlichkeit arbeite ich auf einem gesharten Verzeichnis (also ein Verzeichnis, dass ich im Instant-Contiki-Ubuntu und im Windows-Wirtsystem lesen und schreiben kann)   - (optional) aus Bequemlichkeit arbeite ich auf einem gesharten Verzeichnis (also ein Verzeichnis, dass ich im Instant-Contiki-Ubuntu und im Windows-Wirtsystem lesen und schreiben kann)
     * Im VMWare Player unter "Edit virtual machine settings"     * Im VMWare Player unter "Edit virtual machine settings"
-    * Lasche "Options" und dann "Shared Folders"+    * den Reiter "Options" und dann "Shared Folders" auswählen
     * "Always enabled" auswählen und mit "Add..." Verzeichnis vom Windows-Wirtsystem auswählen (bei mir heißt es z.B. VMWareShare).     * "Always enabled" auswählen und mit "Add..." Verzeichnis vom Windows-Wirtsystem auswählen (bei mir heißt es z.B. VMWareShare).
     * contiki-2.5 source code (http://sourceforge.net/projects/contiki/files/Contiki/Contiki%202.5/) in diesem Verzeichnis entpacken     * contiki-2.5 source code (http://sourceforge.net/projects/contiki/files/Contiki/Contiki%202.5/) in diesem Verzeichnis entpacken
     * im Instant-Contiki-Ubuntu ist das Verzeichnis über /mnt/hgfs/VMWareShare erreichbar     * im Instant-Contiki-Ubuntu ist das Verzeichnis über /mnt/hgfs/VMWareShare erreichbar
   - Den IPv6- Webserver für das Ravenboard kompilieren   - Den IPv6- Webserver für das Ravenboard kompilieren
-    * cd contiki-2.5/examples/webserver-ipv6-raven +    * ''cd contiki-2.5/examples/webserver-ipv6-raven'' 
-    * make +    * ''make'' 
-    * Das neu erstelle file webserver6-avr-raven.hex ist das flash-binary für den ATmega1284p auf dem Raven-Board. +    * Die neu erstelle Datei ''webserver6-avr-raven.hex'' ist das flash-binary für den ATmega1284p auf dem Raven-Board. 
-    * Um das eeprom-binary zu erstellen, muss man noch folgendes command ausführen: avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 webserver6-avr-raven.elf webserver6-avr-raven_eeprom.hex“ +    * Um das eeprom-binary zu erstellen, muss man noch folgendes command ausführen: ''avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 webserver6-avr-raven.elf webserver6-avr-raven_eeprom.he'' 
-  - Eigenes Programm kompilieren (einfaches Beispiel aus dem Gedächtnis - meine Anfangstests waren noch mit 2.4+  - Eigenes Programm kompilieren (einfaches Beispiel aus dem Gedächtnis - keine Garantie!
-    * Listenpunktcd contiki-2.5/examples +    * ''cd contiki-2.5/examples'' 
-    * cp -rp webserver-ipv6-raven myHelloWorld +    * ''cp -rp webserver-ipv6-raven myHelloWorld'' 
-    * cd myHelloWorld +    * ''cd myHelloWorld'' 
-    * make clean +    * ''make clean'' 
-    * vi webserver6.c (vi oder bevorzugten editor) +    * ''vi webserver6.c'' (vi oder bevorzugten editor) 
-    * die Zeile AUTOSTART_PROCESSES(...) erweitern mit einem zweiten contiki Process: "AUTOSTART_PROCESSES(&hello_world_process,&webserver_nogui_process);"+    * die Zeile AUTOSTART_PROCESSES(...) erweitern mit einem zweiten contiki Process:''AUTOSTART_PROCESSES(&hello_world_process,&webserver_nogui_process);''
     * dann den eigenen "hello_world_process" weiter unten beschreiben:\\     * dann den eigenen "hello_world_process" weiter unten beschreiben:\\
     * <code c>PROCESS_THREAD(hello_world_process, ev, data)
     * <code c>PROCESS_THREAD(hello_world_process, ev, data)

Zeile 33: Zeile 31:
 
   PORTD |= (1 << PIN7);      // PD7 an PORTD als Ausgang setzen
   
   PORTD |= (1 << PIN7);      // PD7 an PORTD als Ausgang setzen
  
    printf("Hello, world\n");

    printf("Hello, world\n");


-   while(1)      // Endlosschleife
  +   while(1)                   // Endlosschleife
  
    {    {
       PORTD ^= (1 << PIN7);   // Toggle PD7 z.B. angeschlossene LED
           PORTD ^= (1 << PIN7);   // Toggle PD7 z.B. angeschlossene LED
    
Zeile 50: Zeile 48:
 static struct etimer myetimer; </code>      static struct etimer myetimer; </code>     
     * Der Beispiel-Prozess oben toggelt den Pin7 vom PortD alle 2 Sekunden. Wenn man dieses Programm mit "make" übersetzt, laufen dann zwei contiki-Prozesse - der webserver wie vorher und zusätzlich ein Prozess, der den Pin D7 alle 2 Sekunden toggelt.     * Der Beispiel-Prozess oben toggelt den Pin7 vom PortD alle 2 Sekunden. Wenn man dieses Programm mit "make" übersetzt, laufen dann zwei contiki-Prozesse - der webserver wie vorher und zusätzlich ein Prozess, der den Pin D7 alle 2 Sekunden toggelt.
-    * make+    * ''make'' 
     * wie vorher ist "webserver6-avr-raven.hex" unser Programm, was wir in den Flash des ATmega1284p laden. Das binary für den eeprom benötigen wir natürlich auch. Entweder wieder das Kommando von oben ausführen, oder einfach das Kommando ins Makefile einfügen (direkt vor dem avr-size). Wenn man es ins Makefile einfügt, sollte man das file noch im clean-Abschnitt löschen.     * wie vorher ist "webserver6-avr-raven.hex" unser Programm, was wir in den Flash des ATmega1284p laden. Das binary für den eeprom benötigen wir natürlich auch. Entweder wieder das Kommando von oben ausführen, oder einfach das Kommando ins Makefile einfügen (direkt vor dem avr-size). Wenn man es ins Makefile einfügt, sollte man das file noch im clean-Abschnitt löschen.
  
Zeile 56: Zeile 54:
  
 ==== Programmieren eines Mikrocontrollers ==== ==== Programmieren eines Mikrocontrollers ====
 +=== Programmiersoftware installieren ===
  
-  - Testaufbau \\ +Bei Atmel anmelden und AVR Studio runterladen und installieren (http://www.atmel.com/microsite/avr_studio_5) 
-Oben ist ein Testaufbau, in dem ich das Ravenboard mit dem Atmel STK500 über die ISP Schnittstelle programmiere. Alternativ kann man auch mit anderen Programmiergeräten (z.B. Atmel Dragon oder Atmel JTAGICEmkII) und auch über die JTAG Schnittstelle programmieren. Das Prinzip ist aber eigentlich immer gleich. + 
-    * Ravenboard mit Spannung versorgen (entweder über die interne Batterie oder über ein Netzteil mit 5-12V DC an der Pinleiste J401 unten: an den Anschluß ganz links muss 5-12V und an den zweiten von links muss Ground)+=== Testaufbau === 
 +{{:contiki:testaufbau_steckdose.png?100|}} 
 + 
 +Oben ist ein Testaufbau abgebildet, in dem ich das Ravenboard mit dem Atmel STK500 über die  
 +ISP Schnittstelle programmiere.  
 +Alternativ kann man auch mit anderen Programmiergeräten (z.B. Atmel Dragon oder  
 +Atmel JTAGICEmkII) und auch über die JTAG Schnittstelle programmieren.  
 +Das Prinzip ist aber eigentlich immer gleich. 
 + 
 +==Empfohlene Einschaltreihenfolge== 
 +    * Ravenboard spannungslos machen
     * Ravenboard mit dem Programmiergerät verbinden. Ich habe bisher nur den ATmega1284p programmiert. Die Anschlüsse sind die zweiten von rechts. Oben ist die ISP Schnittstelle, unten die JTAG Schnittstelle. Für JTAG kann man die mitgelieferten Adapter verwenden.     * Ravenboard mit dem Programmiergerät verbinden. Ich habe bisher nur den ATmega1284p programmiert. Die Anschlüsse sind die zweiten von rechts. Oben ist die ISP Schnittstelle, unten die JTAG Schnittstelle. Für JTAG kann man die mitgelieferten Adapter verwenden.
-    * Programmiergerät an den Computer anschließen. Beim STK500 über serielle Schnittstelle, beim Dragon und ich glaube auch beim JTAGICE über USB) +    * Programmiergerät an den Computer anschließen. Beim STK500 über serielle Schnittstelle, beim Dragon und beim JTAGICE über USB. 
-  Programmiersoftware installieren +    * Ravenboard mit Spannung versorgen (entweder über die interne Batterie oder über ein Netzteil mit 5-12V DC an der Pinleiste J401 unten: an den Anschluss ganz links muss 5-12V und an den zweiten von links muss Ground) 
-    bei Atmel anmelden und AVR Studio runterladen und installieren (http://www.atmel.com/microsite/avr_studio_5+ 
-  Programm runterladen (im Moment habe ich keinen Testaufbau vor mir, deswegen fehlt vielleicht der ein oder andere Schritt)+== JTAGICE mkII == 
 +       
 +**Kommentar Atmel:** When the JTAGICE mkII is properly connected to the target and the host PC, the power can be turned on. It's recommended to power up the JTAGICE mkII before the target is powered, to avert the possibility of current flowing from the target into the unpowered JTAGICE mkII. 
 + 
 +Two of the LEDs on the JTAGICE mkII indicates if power is present on respectively target and ICE itself: 
 + 
 +^ Nr ^ Color ^ Description ^ 
 +| 1 | Green |Indicates Target Power | 
 +| 2 | Red   |JTAGICE mkII power     | 
 +| 3 | Green/Yellow/Red | siehe unten: | 
 + 
 +     * //**Green:**// Data Transfer 
 +     * //**Yellow:**// Firmware upgrade or initialisation 
 +     * //**Red:**// Idle, not connected to AVR Studio 
 +     //**No light:**// Idle, connected to AVR Studio (if LED2 is lit
 + 
 + 
 +=== Programm flashen === 
 +(im Moment habe ich keinen Testaufbau vor mir, deswegen fehlt vielleicht der ein oder andere Schritt)
     * Atmel Studio 5 starten     * Atmel Studio 5 starten
     * im Menu unter Tools->AVR_Programming     * im Menu unter Tools->AVR_Programming
Zeile 76: Zeile 103:
  
  
-Ich habe festgestellt, dass es wichtig ist, dass der RZUSBSTICK und das RavenBoard mit der gleichen contiki Version programmiert sind. Evtl. muss also auch der RZUSBSTICK programmiert werden. Funkioniert aber analog zu der Beschreibung oben. Der Einfachheit halber gibt es schon erstellte .elf files für alle Raven Microcontroller von der contiki hompage: (https://sourceforge.net/projects/contiki/files/Contiki/Contiki%202.5/contiki-raven-2.5.zip/download). Die muss man allerdings dann mit dem AVR Studio 4 programmieren.+Ich habe festgestellt, dass es wichtig ist, dass der RZUSBSTICK und das RavenBoard mit der gleichen contiki Version programmiert sind. Evtl. muss also auch der RZUSBSTICK programmiert werden. Funkioniert aber analog zu der Beschreibung oben.  
 + 
 +Der Einfachheit halber gibt es schon erstellte .elf files für alle Raven Microcontroller von der contiki hompage: (https://sourceforge.net/projects/contiki/files/Contiki/Contiki%202.5/contiki-raven-2.5.zip/download). Die muss man allerdings dann mit dem AVR Studio 4 programmieren.
  
   * ravenlcd_3290.elf der Ravenboard LCD Microcontroller (Anschlüsse ganz rechts)   * ravenlcd_3290.elf der Ravenboard LCD Microcontroller (Anschlüsse ganz rechts)
   * webserver6.elf der Ravenboard ATmega1284p (siehe Beschreibung)   * webserver6.elf der Ravenboard ATmega1284p (siehe Beschreibung)
   * ravenusbstick.elf der RZUSBSTICK   * ravenusbstick.elf der RZUSBSTICK
- 
  
  
Zeile 109: Zeile 137:
 </code> </code>
     * RZUSBSTICK einstecken (und evtl. über dem VMWare Player der virtuellen Maschine zuordnen)     * RZUSBSTICK einstecken (und evtl. über dem VMWare Player der virtuellen Maschine zuordnen)
-    * folgende commandos in einer shell ausführen: +    * folgende Kommandos in einer shell ausführen: 
-    * <code>sudo ip -6 address add fe80::0012:13ff:fe14:1516/64 scope link dev usb0+    * <code bash>sudo ip -6 address add fe80::0012:13ff:fe14:1516/64 scope link dev usb0
 sudo ip -6 address add aaaa::1/64 dev usb0 sudo ip -6 address add aaaa::1/64 dev usb0
 sudo /etc/init.d/radvd start </code> sudo /etc/init.d/radvd start </code>
     * damit ist der RZUSBSTICK über das device usb0 konfiguriert. Jetzt sollte das RavenBoard erreichbar sein:      * damit ist der RZUSBSTICK über das device usb0 konfiguriert. Jetzt sollte das RavenBoard erreichbar sein: 
-    * <code>ping6 -s aaaa::1 aaaa::11:22ff:fe33:4455</code> Und man sollte über den Browser drauf zuzugreifen können: „http://[aaaa::0011:22ff:fe33:4455]“.+    * <code bash>ping6 -s aaaa::1 aaaa::11:22ff:fe33:4455</code> Und man sollte über den Browser drauf zuzugreifen können: „http://[aaaa::0011:22ff:fe33:4455]“.
  
  
Zeile 122: Zeile 150:
 ==== Noch ein paar Hilfen ==== ==== Noch ein paar Hilfen ====
  
-http://www.sics.se/contiki/wiki/index.php/Install_Instant_Contiki +  * [[http://www.contiki-os.org/start.html|Installation von Instant Contiki]] 
-http://www.sics.se/contiki/wiki/index.php/Develop_your_first_application +  * [[https://github.com/contiki-os/contiki/tree/master/examples/hello-world|Contiki 'Hello World' Example]] 
-http://www.sics.se/contiki/wiki/index.php/Avr_Raven +  * [[http://anrg.usc.edu/contiki/index.php/Build_your_own_application_in_Contiki|Develop your first application]]  
-http://www.wsncloud-murdoch.org/wiki/index.php/Configuration_of_Atmel_Ravens_with_Contiki +  * [[https://github.com/contiki-os/contiki/wiki/AVR-Raven| AVR Raven]] 
-http://www.atmel.com/dyn/resources/prod_documents/doc8117.pdf+ 
 +  http://www.atmel.com/dyn/resources/prod_documents/doc8117.pdf
  
 +**Programmierbeispiele (extern):**
 +  * http://senstools.gforge.inria.fr/doku.php?id=contiki:examples
contiki/howto_compile.1331793335.txt.gz · Zuletzt geändert: 2017/01/24 18:49 (Externe Bearbeitung)