CUNO unter OSX flashen

Aus FHEMWiki
Zur Navigation springen Zur Suche springen
Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.

Vorausetzung

  • Mac OS X (10.8.3)
  • CUNO Firmware (culfw)
  • CrossPack AVR
  • USB Treiber für Atmel
  • wenigstens rudimentäre Kenntnisse, sich mittels Terminal zurecht zu finden (cd / ls)

Download der aktuellen CUNO Firmware

Die CUNO Firmware ist in der culfw enthalten und kann von der Homepage als komprimiertes TAR-Archiv (tarball) herunter geladen werden. Noch nicht auspacken, machen wir weiter unten.

CrossPack for AVR installieren

http://www.obdev.at/products/crosspack/download-de.html

Paket installieren, für die Installation sind Administratorrechte erforderlich.

Wer schon mal Software unter OS X installiert hat kennt das Prozedere:-)

Atmel USB Treiber

Damit das USB Gerät (CUNO2) unter OSX erkannt wird, USB Treiber herunterladen und installieren

http://www.silabs.com/Support%20Documents/Software/Mac_OSX_VCP_Driver.zip

Geht nur mit Administratorrechten und einem Neustart. Neustart ist wichtig!

Nicht alle sind mit Gerätetreibern per "Du". Daher ist es vielleicht ganz gut sich vor der Installation des Treibers das Verzeichnis /dev/ anzuschauen und es mit dem Zustand nach der Installation des Treibers zu vergleichen. Dann weiss man schon mal welche sog. Devices hinzugekommen sind und gegen welche man sich nachher verbinden kann.

CUNO Firmware kompilieren

Ein Terminal öffnen:

In Spotlight (Lupe oben rechts) den Begriff "Terminal" eintippen und einfach "Enter" drücken.

Im Terminal in das Dokumentenverzeichnis des angemeldeten Benutzers wechseln:

cd "/Users/<Benutzername>/Documents/"

Das Verzeichnis AVR erstellen:

mkdir AVR

Dort hineinwechseln:

cd AVR

Nun die aktuelle Firmware dort hin kopieren: (Liegt im Downloadverzeichnis von Punkt 1)

cp "/Users/<Benutzername>/Downloads/culfw-*.tar.gz" "/Users/<Benutzername>/Documents/AVR"

Und auspacken:

tar xvzf culfw-*.tar.gz

Nun in das Verzeichnis culfw/Devices wechseln:

cd culfw/Devices.

Das neue Image (Firmware) bauen: (Und die Warnungen tapfer ignorieren)

make -C CUNO2 clean
 make -C CUNO2 all

Ausgabe:

bash-3.2# '''make -C CUNO2 clean'''make: Entering directory `/Users/sascha/Documents/AVR/culfw/Devices/CUNO2'
Cleaning project:
make: Leaving directory `/Users/sascha/Documents/AVR/culfw/Devices/CUNO2'
bash-3.2# '''make -C CUNO2 all'''make: Entering directory `/Users/sascha/Documents/AVR/culfw/Devices/CUNO2'
Compiling C: CUNO2.c
Compiling C: ../../clib/cc1100.c
Compiling C: ../../clib/clock.c
Compiling C: ../../clib/delay.c
Compiling C: ../../clib/display.c 
Compiling C: ../../clib/stringfunc.c 
Compiling C: ../../clib/fncollection.c
Compiling C: ../../clib/ringbuffer.c
Compiling C: ../../clib/rf_send.c
Compiling C: ../../clib/rf_asksin.c
Compiling C: ../../clib/rf_receive.c
Compiling C: ../../clib/rf_router.c
Compiling C: ../../clib/rf_moritz.c
Compiling C: ../../clib/fht.c
Compiling C: ../../clib/fastrf.c
Compiling C: ../../clib/memory.c
Compiling C: ../../clib/serial.c
Compiling C: ../../clib/vz.c
Compiling C: ../../clib/ttydata.c
Compiling C: ../../clib/ethernet.c
Compiling C: ../../clib/tcplink.c
Compiling C: ../../avr-uip/drivers/ethersex/enc28j60.c
Compiling C: ../../avr-uip/drivers/ethersex/network.c
Compiling C: ../../avr-uip/uip/uip.c
Compiling C: ../../avr-uip/uip/uip_arp.c
../../avr-uip/uip/uip_arp.c: In function 'uip_arp_arpin':
../../avr-uip/uip/uip_arp.c:287:10: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
... Viele Warnungen...
Compiling C: ../../avr-uip/uip/uiplib.c
Compiling C: ../../avr-uip/uip/psock.c
Compiling C: ../../avr-uip/uip/timer.c
Compiling C: ../../avr-uip/uip/uip-neighbor.c
Compiling C: ../../avr-uip/apps/dhcpc/dhcpc.c
Compiling C: ../../clib/ntp.c
Compiling C: ../../clib/mdns_sd.c
Compiling C: ../../clib/spi.c
Compiling C: ../../clib/twimaster.c
Compiling C: ../../clib/ir.c
Compiling C: ../../clib/irmp.c
Compiling C: ../../clib/irsnd.c
Compiling C: ../../clib/onewire.c
Compiling C: ../../clib/dmx.c
Compiling C: ../../clib/intertechno.c
Compiling C: ../../clib/hm485.c
Linking: CUNO2.elf
Creating load file for Flash: CUNO2.hex
Creating load file for EEPROM: CUNO2.eep
Creating Extended Listing: CUNO2.lss
Creating Symbol Table: CUNO2.sym
Size after:
 text	  data	  bss	  dec	  hex	filename
 34752	  404	  6914	 42070	  a456	CUNO2.elf
make: Leaving directory `/Users/sascha/Documents/AVR/culfw/Devices/CUNO2'

Damit ist die neue Firmware erstellt. Als nächstes geht es darum die Firmware auf den CUNO zu bekommen und zu testen.

Als root einloggen

Hierzu zuerst Administrator einloggen:

su - <Administratorbenutzername>.

Das Passwort des Administratorbenutzers eingeben.

Über sudo kann der Administrator Rootrechte erlangen:

sudo -i

eingeben und das vorherige Login Passwort noch einmal eingeben.

CUNO anschliessen

CUNO bei gedrücktem Programmiertaster mit einem direkten USB Port des Mac's verbinden (NICHT über USB-HUB, Tastatur, etc. Direkt. Einfach direkt. ohne Umweg)

Die LED in der Mitte der CUNO Platine sollte nun dauerhaft leuchten. Wenn sie blinkt ist etwas schiefgegangen (z.B. Knopf losgelassen), dann einfach noch mal einstecken bei gedrücktem Programmierknopf.

Firmware in den CUNO2 laden

Erstmal als Benutzer root in das richtige Verzeichnis wechseln:

/Users/<Benutzername>/Documents/AVR/culfw/

Das upload Programm starten:

make usbprogram

Ausgabe:

avrdude -p atmega1284p -P /dev/tty.SLAB_USBtoUART -b 38400 -c avr109  -U flash:w:CUNO2.hex 
Connecting to programmer: .
Found programmer: Id = "AVRBOOT"; type = S
  Software Version = 0.8; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.
Programmer supports the following devices:
Device code: 0x46
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9705
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "CUNO2.hex"
avrdude: input file CUNO2.hex auto detected as Intel Hex
avrdude: writing flash (35156 bytes):
 
Writing | ################################################## | 100% 11.20s
 
avrdude: 35156 bytes of flash written
avrdude: verifying flash memory against CUNO2.hex:
avrdude: load data flash data from input file CUNO2.hex:
avrdude: input file CUNO2.hex auto detected as Intel Hex
avrdude: input file CUNO2.hex contains 35156 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 9.89s
avrdude: verifying ...
avrdude: 35156 bytes of flash verified
avrdude done. Thank you.

Test

Weiter als root eingeloggt bleiben. Um zu überprüfen, ob auf dem CUNO nun ein Betriebssystem installiert ist (und es funktioniert), kann man sich über die serielle Schnittstelle zum CUNO verbinden. Das Programm hierzu heisst "screen", die Übertragungsgeschwindigkeit beträgt 38400 Baud. Folgendes eingeben:

screen /dev/tty.SLAB_USBtoUART 38400

Jetzt erscheint das Fenster ohne Cursor.

Einfach ein großes "V" eintippen.

Die Ausgabe dazu sollte so in der Art aussehen:

V 1.54 CUNO868

Wenn CUNO sich schon erfolgreich mit einer IP Adresse von eurem DHCP Server versorgt hat, kann man die IP Adresse gleich mit prüfen:

Ria eingeben

Als Ausgabe sollte dann die IP Adresse erscheinen:

192.168.3.21

Verlassen der Shell mit "Control Groß A Doppelpunkt:quit": <CTRL>A :quit Jetzt solle man sich auch schon per telnet verbinden können:

telnet <CUNO's IP Adresse> 2323 (Zwei mal return drücken)

Wenn man sich hier nun auskennt: prima, für alle Anderen: ich kann das hier empfehlen http://culfw.de/culfw.html Wenn's langweilig wird ausloggen:

<CTRL><ALT>6

gleichzeitig drücken und dann im telnet prompt

quit

eingeben.

CUNO in FHEM definieren

Weiter im Terminal bleiben und auf eurem FHEM Hobel einloggen:

telnet <FHEM IP Adresse> 7072

Jetzt den CUNO definieren:

define MY_CUNO CUL <CUNOs IP Adresse>:2323 0000

Fertig. Jetzt geht's in FHEM weiter: http://fhem.de/commandref.html