Difference between revisions of "U23 2007"

From C4 Wiki
Jump to: navigation, search
(Bastelideen)
 
(40 intermediate revisions by 11 users not shown)
Line 1: Line 1:
 
Hier sammeln wir Ideen und Hintergrundinformationen zum [http://koeln.ccc.de/prozesse/running/u23-2007 U23 2007].
 
Hier sammeln wir Ideen und Hintergrundinformationen zum [http://koeln.ccc.de/prozesse/running/u23-2007 U23 2007].
  
== Hintergrundinformationen ==
+
== Hintergrundinformationen & Dokumentation ==
 
* http://www.lochraster.org/etherrape/
 
* http://www.lochraster.org/etherrape/
 
* http://wiki.lochraster.org/
 
* http://wiki.lochraster.org/
* ATMEGA644
+
* [http://atmel.com/dyn/resources/prod_documents/doc2593.pdf atmega644 Datenblatt]
* [http://w8n.koeln.ccc.de/media/slides/U23/2007/U23-Einführung.pdf Folien zum Einführungsabend]
 
 
 
== Generelle Dokumentation ==
 
 
 
 
* [http://savannah.nongnu.org/download/avr-libc/avr-libc-user-manual-1.4.5.pdf.bz2 AVR-Libc Dokumentation (pdf)]
 
* [http://savannah.nongnu.org/download/avr-libc/avr-libc-user-manual-1.4.5.pdf.bz2 AVR-Libc Dokumentation (pdf)]
 
* [http://www.nongnu.org/avr-libc/user-manual/modules.html AVR-Libc Dokumentation (online, html)]
 
* [http://www.nongnu.org/avr-libc/user-manual/modules.html AVR-Libc Dokumentation (online, html)]
Line 17: Line 13:
 
* Wetterstation
 
* Wetterstation
 
* Zahlencodeschloss zur Türsteuerung mit Kameraerweiterung
 
* Zahlencodeschloss zur Türsteuerung mit Kameraerweiterung
* NAS-Server zu Hause übers www einschalten(evtl. auch per Tel. zu aktivieren?) //dirtyheizer aka Marcus Loßow
+
* NAS-Server zu Hause übers www einschalten(evtl. auch per Tel. zu aktivieren?) //dirtyheizer aka Thomas
 
* Network monitoring  // Obstfliege aka Philipp
 
* Network monitoring  // Obstfliege aka Philipp
 
* Diverse Server: DHCP,DNS,... // Obstfliege aka Philipp
 
* Diverse Server: DHCP,DNS,... // Obstfliege aka Philipp
 +
 +
== Abend 1 ==
 +
 +
* [http://w8n.koeln.ccc.de/media/slides/U23/2007/U23-Einführung.pdf Folien zum Einführungsabend]
  
 
== Abend 2 ==
 
== Abend 2 ==
  
[[/Binär durchzählen]]<br />
+
[[/Inhalt Abend 2]]
[[/Schieberegister]]
+
 
 +
 
 +
== Abend 4 ==
 +
[[/Inhalt Abend 4]]
 +
 
 +
== Feedback ==
 +
 
 +
Bitte hier (auch gern anonym) Feedback hinterlassen:
 +
 
 +
* [[/Feedback Abend 1]]
 +
* [[/Feedback Abend 2]]
 +
* [[/Feedback Abend 3]]
 +
* [[/Feedback Abend 4]]
 +
 
 +
== Gruppen ==
 +
 
 +
* [[/NULL.0]]
 +
* [[/MateCrew]]
 +
* [[/24]]
 +
* [[/Evil Solutions]]
 +
 
 +
== Bastelmaterial ==
 +
 
 +
Was haben wir?  Was brauchen wir?
  
 +
=== ICs ===
  
=== Testen & Kompilieren ===
+
Der C4 hat eine ganze Reihe an ICs geschenkt gekriegt, die für das U23 zur Verfügung stehen.  Derzeit sind noch von allen jeweils eine Stange (also 20 oder 25 Stück) vorhanden.
  
testdatei:
+
{| border="1" style="border-collapse:collapse;"
#include <avr/io.h>
+
! Typ || Bezeichnung
+
|-
int main(void) {
+
|74LS02N || Vier NOR-Gatter mit je 2 Eingängen
 
+
|-
    DDRA = 0xFF;
+
|74LS05N || Sechs Inverter (open Collector)
    PORTA = 0xAA;
+
|-
+
|74LS07 || Sechs Treiber (open Collector, 30V)
    return 0;
+
|-
}
+
|74LS12N || Drei NAND-Gatter mit je 3 Eingängen (open Collector)
 +
|-
 +
|74LS20 || Zwei NAND-Gatter mit je 4 Eingängen
 +
|-
 +
|74LS32N || Vier OR-Gatter mit je 2 Eingängen
 +
|-
 +
|74LS38B1 || Vier NAND-Leistungsgatter mit je 2 Eingängen (open Collector)
 +
|-
 +
|74LS73AN || Zwei JK-Flipflops mit Clear
 +
|-
 +
|74LS74AN || Zwei D-Flipflops mit Preset und Clear
 +
|-
 +
|74LS83AN || 4-Bit Volladdierer
 +
|-
 +
|74LS95BP || 4-Bit Schieberegister mit paralleler Ein- und Ausgabe
 +
|-
 +
|74ALS112 || Zwei J-K Flipflops mit Preset und Clear (Advanced Speed)
 +
|-
 +
|74LS191 || Synchroner programmierbarer Vorwärts/Rückwärts 4-Bit Binärzähler
 +
|-
 +
|74LS193B1 || Synchroner programmierbarer Vorwärts/Rückwärts 4-Bit Binärzähler mit Clear
 +
|-
 +
|74LS258AB1 || Vier 2 zu 1 Datenselektoren/Multiplexer mit invertierenden Tri-State Ausgängen
 +
|-
 +
|74LS273N || 8-Bit D Register mit Clear
 +
|-
 +
|74LS280 || 9-Bit Paritätsgenerator/Paritätsprüfer
 +
|-
 +
|74LS374N || 8-Bit D Register mit Tri-State Ausgängen
 +
|-
 +
|74LS375P || Zwei 2-Bit D Latches mit Enable
 +
|-
 +
|74LS645B1 || Octal Bus Transceiver
 +
|-
 +
|74LS688N || 8-Bit Equality Comparator
 +
|}
  
kompilieren:
+
== Interessenten fertige etherrapes ==
avr-gcc -mmcu=atmega644 -Wall -o direkt.elf direkt.c
 
  
hex-file erzeugen:
+
NACH U23 stehen drei fertige etherrapes fuer 59,- zum Verkauf.
avr-objcopy -O ihex direkt.elf direkt.hex
 
  
bootloader starten (strom raus, launch-bootloader starten, strom rein, warten bis blinkt):
+
Interessenten:
launch-bootloader /dev/ttyUSB0 115200
+
 
 +
# Benjamin
 +
# Sebi
 +
# Hanno
 +
# Felix
  
installieren:
+
== Bootloader unter Win32 ==
avrdude -p m644 -b 115200 -c avr109 -P /dev/ttyUSB0 -F -u -U flash:w:direkt.hex
 
  
flash script (usb):
+
Bitte compiliert das jemand: https://ssl2.mecking.net/svn/etherrape/bootloader-launcher-win32/branches/stable/launch-bootloader.c
#!/bin/bash
 
 
avr-gcc -mmcu=atmega644 -Wall -o tmp.elf $1
 
avr-objcopy -O ihex tmp.elf tmp.hex
 
launch-bootloader /dev/ttyUSB0 115200
 
avrdude -p m644 -b 115200 -c avr109 -P /dev/ttyUSB0 -F -u -U flash:w:tmp.hex
 
echo X > /dev/ttyUSB0
 
  
  
Makefile: (NAME=sourcecode.c dateiname ohne .c)
+
http://www.haemoglobin.org/U23_2007/launch-bootloader.exe
<pre><nowiki>
 
SERIALPORT=/dev/ttyUSB0
 
NAME=nightrider
 
  
CC=avr-gcc
+
[http://www.haemoglobin.org/U23_2007/md5sums MD5]- und [http://www.haemoglobin.org/U23_2007/sha1sums SHA1]-Pruefsummen, sowie [http://www.haemoglobin.org/U23_2007/launch-bootloader.exe.sig OpenPGP-Signatur]
CFLAGS=-Wall -mmcu=atmega644
 
  
OBJCPY=avr-objcopy
+
== strtok ==
OFLAGS=-O ihex
 
  
BOOTL=launch-bootloader
+
Da die AVR-libc keine strtok-Funktion bietet (wie sich spaeter herausgestellt hat, jedoch strtok_r), habe ich fuer Valentin strtokn und strtokz geschrieben, die einen String mit bestimmer Laenge bzw. Nullterminierung in Tokens parsen.
BFLAGS=$(SERIALPORT) 115200
+
Der Code steht unter einer an das europaeische Recht angepassten Version der MIT-Lizenz und kann daher problemlos sowohl in GPL-, als auch kommerzieller Software verwendet werden.
  
AVRDUDE=avrdude
+
[http://www.haemoglobin.org/U23_2007/tokenize.h tokenize.h]
AFLAGS=-p m644 -b 115200 -c avr109 -P $(SERIALPORT) -F -u -U flash:w:
 
  
all: object hex
+
[http://www.haemoglobin.org/U23_2007/tokenize.c tokenize.c]
  
install: bootloader flash runit
+
Sollte jemand einen Bug finden, moege er bitte eine e-Mail oder Jabber-Nachricht an die im Code angegebene Adresse senden.
  
object:
+
=== Anwendungsbeispiel ===
        $(CC)  $(CFLAGS) -o $(NAME).elf $(NAME).c
 
  
hex:
+
<pre>
        $(OBJCPY) $(OFLAGS) $(NAME).elf $(NAME).hex
+
/* Ein einfacher Pseudo-HTTP-Parser */
  
bootloader:
+
#include <string.h> /* Fuer NULL und strncmp */
        $(BOOTL) $(BFLAGS)
 
  
flash:
+
#define BUFLEN 255
        $(AVRDUDE) $(AFLAGS)$(NAME).hex
 
  
runit:
+
char buffer[BUFLEN]; /* Unser Lesepuffer */
        echo X > $(SERIALPORT)
 
  
clean:
+
char *method;  /* Die HTTP-Methode, e.g. HEAD, GET, POST oder PUT */
        rm -f *.hex *.elf
+
char *uri;    /* Der Uniform Resource Identifier, also das, was man in die Adresszeile des Browsers tippt */
 +
char *version; /* Der HTTP-Versionstring, normalerweise HTTP/1.0 oder HTTP/1.1 */
  
 +
method = strtokn(buffer, BUFLEN, ' '); /* sizeof(buffer) anstatt BUFLEN sollte auch gehen, weil buffer in diesem Fall ein char[] und kein char* ist */
 +
if(method) {  /* Kein Token gefunden? */
 +
    /* Fehlerbehandlung, beispielsweise einen 400-Statuscode zuruecksenden */
 +
}
  
</nowiki></pre>
+
if(strncmp(method, "GET", 4)) {
 +
    /* Wir moechten nur GET-Requests behandeln, also senden wir irgendeinen 4XX-Statuscode zurueck */
 +
}
  
=== Frage ===
+
uri = strtokn(NULL, 0, ' ');
 +
if(uri) {    /* Kein Token? */
 +
    /* Einen 400-Statuscode zurueck */
 +
}
  
Was tut dieses Programm?
+
version = strtokn(NULL, 0, '\r');
 +
if(version) {
 +
    /* Das uebliche ;) */
 +
}
  
#include <avr/io.h>
+
if(strncmp(version, "HTTP/1.0", 9) && strncmp(version, "HTTP/1.1", 9)) {
+
    /* Wir wollen nur HTTP 1.0 oder 1.1 - also wieder 400 */
int main(void) {
+
}
 
    while (1) {
 
        DDRA = 0xFF;
 
        PORTA ^= 0xAA;
 
 
        uint16_t i;
 
        uint16_t j;
 
 
        for (i = 0; i < 5; i++) {
 
            for (j = 0; j < 0xffff; j++) {
 
                /* nix */
 
            }
 
        }
 
    }
 
 
    return 0;
 
}
 
  
== Feedback ==
+
/*
 +
* Jetzt haben wir alles, was wir brauchen, jedoch ist es auch moeglich,
 +
* den kompletten HTTP-Header zu parsen, um so einen vollwertigen Webserver
 +
* zu schreiben.
 +
*/
  
Bitte hier (auch gern anonym) Feedback hinterlassen:
+
</pre>
  
* [[/Feedback Abend 1]]
+
== OffTopic ==
* [[/Feedback Abend 2]]
 
  
== Interessenten fertige etherrapes ==
+
===Borg 3D===
  
NACH U23 stehen drei fertige etherrapes fuer 59,- zum Verkauf.
+
Die Borgs 3d standen heute bei uns in der Uni (irgend ein Schüler und Naturwissenschaften Messe ding): Sind ganz lustig anzusehen:
 +
*[http://youtube.com/watch?v=4MGKhFIujM4 Borg 3d in Farbe]
 +
*[http://youtube.com/watch?v=PGb9DeUOsSY Borg 3d in 8x8x8]
 +
gemacht von [http://www.das-labor.org das-labor.org] aus Bochum.
  
Interessenten:
+
lenkt aber wahrscheinlich von unserem Eigentlichen Projekt ab, etwas mit dem etherrape zu machen. Gruß Hanno
  
# Benjamin
+
[[Category:Events]]
# Sebi
+
[[Category:U23]]
# Hanno
+
[[Category:U23 2007]]
# Felix
 

Latest revision as of 10:15, 13 January 2011

Hier sammeln wir Ideen und Hintergrundinformationen zum U23 2007.

Hintergrundinformationen & Dokumentation

Bastelideen

  • Wetterstation
  • Zahlencodeschloss zur Türsteuerung mit Kameraerweiterung
  • NAS-Server zu Hause übers www einschalten(evtl. auch per Tel. zu aktivieren?) //dirtyheizer aka Thomas
  • Network monitoring // Obstfliege aka Philipp
  • Diverse Server: DHCP,DNS,... // Obstfliege aka Philipp

Abend 1

Abend 2

/Inhalt Abend 2


Abend 4

/Inhalt Abend 4

Feedback

Bitte hier (auch gern anonym) Feedback hinterlassen:

Gruppen

Bastelmaterial

Was haben wir? Was brauchen wir?

ICs

Der C4 hat eine ganze Reihe an ICs geschenkt gekriegt, die für das U23 zur Verfügung stehen. Derzeit sind noch von allen jeweils eine Stange (also 20 oder 25 Stück) vorhanden.

Typ Bezeichnung
74LS02N Vier NOR-Gatter mit je 2 Eingängen
74LS05N Sechs Inverter (open Collector)
74LS07 Sechs Treiber (open Collector, 30V)
74LS12N Drei NAND-Gatter mit je 3 Eingängen (open Collector)
74LS20 Zwei NAND-Gatter mit je 4 Eingängen
74LS32N Vier OR-Gatter mit je 2 Eingängen
74LS38B1 Vier NAND-Leistungsgatter mit je 2 Eingängen (open Collector)
74LS73AN Zwei JK-Flipflops mit Clear
74LS74AN Zwei D-Flipflops mit Preset und Clear
74LS83AN 4-Bit Volladdierer
74LS95BP 4-Bit Schieberegister mit paralleler Ein- und Ausgabe
74ALS112 Zwei J-K Flipflops mit Preset und Clear (Advanced Speed)
74LS191 Synchroner programmierbarer Vorwärts/Rückwärts 4-Bit Binärzähler
74LS193B1 Synchroner programmierbarer Vorwärts/Rückwärts 4-Bit Binärzähler mit Clear
74LS258AB1 Vier 2 zu 1 Datenselektoren/Multiplexer mit invertierenden Tri-State Ausgängen
74LS273N 8-Bit D Register mit Clear
74LS280 9-Bit Paritätsgenerator/Paritätsprüfer
74LS374N 8-Bit D Register mit Tri-State Ausgängen
74LS375P Zwei 2-Bit D Latches mit Enable
74LS645B1 Octal Bus Transceiver
74LS688N 8-Bit Equality Comparator

Interessenten fertige etherrapes

NACH U23 stehen drei fertige etherrapes fuer 59,- zum Verkauf.

Interessenten:

  1. Benjamin
  2. Sebi
  3. Hanno
  4. Felix

Bootloader unter Win32

Bitte compiliert das jemand: https://ssl2.mecking.net/svn/etherrape/bootloader-launcher-win32/branches/stable/launch-bootloader.c


http://www.haemoglobin.org/U23_2007/launch-bootloader.exe

MD5- und SHA1-Pruefsummen, sowie OpenPGP-Signatur

strtok

Da die AVR-libc keine strtok-Funktion bietet (wie sich spaeter herausgestellt hat, jedoch strtok_r), habe ich fuer Valentin strtokn und strtokz geschrieben, die einen String mit bestimmer Laenge bzw. Nullterminierung in Tokens parsen. Der Code steht unter einer an das europaeische Recht angepassten Version der MIT-Lizenz und kann daher problemlos sowohl in GPL-, als auch kommerzieller Software verwendet werden.

tokenize.h

tokenize.c

Sollte jemand einen Bug finden, moege er bitte eine e-Mail oder Jabber-Nachricht an die im Code angegebene Adresse senden.

Anwendungsbeispiel

/* Ein einfacher Pseudo-HTTP-Parser */

#include <string.h> /* Fuer NULL und strncmp */

#define BUFLEN 255

char buffer[BUFLEN]; /* Unser Lesepuffer */

char *method;  /* Die HTTP-Methode, e.g. HEAD, GET, POST oder PUT */
char *uri;     /* Der Uniform Resource Identifier, also das, was man in die Adresszeile des Browsers tippt */
char *version; /* Der HTTP-Versionstring, normalerweise HTTP/1.0 oder HTTP/1.1 */

method = strtokn(buffer, BUFLEN, ' '); /* sizeof(buffer) anstatt BUFLEN sollte auch gehen, weil buffer in diesem Fall ein char[] und kein char* ist */
if(method) {   /* Kein Token gefunden? */
    /* Fehlerbehandlung, beispielsweise einen 400-Statuscode zuruecksenden */
}

if(strncmp(method, "GET", 4)) {
    /* Wir moechten nur GET-Requests behandeln, also senden wir irgendeinen 4XX-Statuscode zurueck */
}

uri = strtokn(NULL, 0, ' ');
if(uri) {     /* Kein Token? */
    /* Einen 400-Statuscode zurueck */
}

version = strtokn(NULL, 0, '\r');
if(version) {
    /* Das uebliche ;) */
}

if(strncmp(version, "HTTP/1.0", 9) && strncmp(version, "HTTP/1.1", 9)) {
    /* Wir wollen nur HTTP 1.0 oder 1.1 - also wieder 400 */
}

/*
 * Jetzt haben wir alles, was wir brauchen, jedoch ist es auch moeglich,
 * den kompletten HTTP-Header zu parsen, um so einen vollwertigen Webserver
 * zu schreiben.
 */

OffTopic

Borg 3D

Die Borgs 3d standen heute bei uns in der Uni (irgend ein Schüler und Naturwissenschaften Messe ding): Sind ganz lustig anzusehen:

gemacht von das-labor.org aus Bochum.

lenkt aber wahrscheinlich von unserem Eigentlichen Projekt ab, etwas mit dem etherrape zu machen. Gruß Hanno