Forum: Mikrocontroller und Digitale Elektronik welcher µC für Webserver, LCD, Ethernet


von Josef (Gast)


Lesenswert?

Hallo,

in welcher Kategorie µC bewegt man sich, wenn man einen Webserver 
erstellen möchte mit HTTP, FTP, TELNET und SNMTP wowie Ping; ein 
LCD-Display extern angeschlossen werden soll und Daten über eine in den 
µC integrierte Ethernet-Schnittstelle kommen? Welche Datenrate kann man 
max. dabei erzielen - ich bräuchte ca. 10-12 MBit.

Diese Daten vom Ethernet werden ausgewertet und in einer anderen 
Reihenfolge in einem externen speicher untergebracht.

Der Webserver soll die komplette Steuerung des Gerätes integriert haben 
(z.B. sollte man sehen was an Datenpakete über Ethernet reinkommt und 
rausgeht (wie bei Windows halt auch etc.)

Bei dem LCD würde es sich um ein graphisches Farbdisplay handeln mit 
einer auflösung von 640x480 (oder tft)... Nimmt man hier besser einen 
LCD controller mit externen speicherinterface oder holt man sich die 
Daten über einen externen an den µC angeschlossenen RAM und schiebt die 
Daten dann über den DAtenbus an den LCD Controller weiter? Was ist hier 
sinnvoller?

Josef

von Thomas (Gast)


Lesenswert?

Die geforderte Ethernet Funktionalität habe ich in 8kByte Flash 
untergebracht. Beim LCD wirds natürlich richtig derbe knapp werden.
Atmel >=ATmega32 evtl.

Aufgrund des LCD's würde ich einen Controller mit rausgeführten BUS 
empfehlen, 8051 oder irgendein derivat...

von Stefan Oberpeilsteiner (Gast)


Lesenswert?

Was hältst du von der Idee einen Single Board Computer oÄ zu verwenden 
und daran einen uC anzuschließen um dort die wenigen Dinge die du mit 
einer Pc Plattform nicht machen kannst zu realisieren, also Ein/Ausgänge 
usw..

Vorteile: Hardware getestet und erprobt. Alle Protokolle verfügbar und 
getestet, per VGA ist der anschluss an "normale" Displays möglich, usw 
...

dann z.B. per RS232 zu einem kleinen uC und fertig.

lg Stefan

von Εrnst B. (ernst)


Lesenswert?

@Thomas:

Welchen Ethernet-Controller hast du denn dafür verwendet?
Die die ich mir bisher angeschaut habe waren entweder deutlich langsamer 
(Statt 12MBit/sek eher so 30Kbit/sek) oder waren dank PCI Interface 
nicht mehr wirklich zum µC Anschluss geeignet...

/Ernst

von Nullpointer (Gast)


Lesenswert?

Ein 8 bitter bringt die 1MByte/sec nicht. Zuden ist deren Adressraum 
etwas klein. Ich wuerd im 16 und 32 bit Bereich schauen. Wenn die 
Entwicklungszeit der software wesentlich ist, sogar einen embedded PC 
nehmen. zB einen VIA EPIA.

von Josef (Gast)


Lesenswert?

>Aufgrund des LCD's würde ich einen Controller mit rausgeführten BUS
>empfehlen, 8051 oder irgendein derivat...

was verstehst du genau mit rausgeführten Bus? Address- und Datenbus zum 
µC oder den Address- und Datenbus zu einem exteren Speicher SDRAM oder 
ähnliches am LCD Controller?

>Single Board Computer

die idee klingt auch gut... muss ich mir mal anschauen welche computer 
was beinhalten und welche sachen dann der µC noch machen muss außer Ein- 
und Ausgänge.... aber der Webserver und LCD könnte darüberlaufen..

Josef

von Simon K. (simon) Benutzerseite


Lesenswert?

Josef wrote:
> Bei dem LCD würde es sich um ein graphisches Farbdisplay handeln mit
> einer auflösung von 640x480 (oder tft)... Nimmt man hier besser einen
> LCD controller mit externen speicherinterface oder holt man sich die
> Daten über einen externen an den µC angeschlossenen RAM und schiebt die
> Daten dann über den DAtenbus an den LCD Controller weiter? Was ist hier
> sinnvoller?

Hmmmm... Wie wär's denn mit einem AT32AP7000? Sind noch nicht so 
wirklich bekannt. Aber Entwicklungskits gibt es schon.

Möglicherweise (?) etwas overpowered, aber das tolle an den Chips: Sie 
haben einen LCD-Controller (2048*2048 px. maximum), sowie ein externes 
RAM Interface (bis 128MB DRAM soweit ich mich erinnere) und ein On-Chip 
MAC-Interface für Ethernet, das dank DMA und gemultiplextem Bus auch 
schon beachtlichen Durchsatz schafft.

Wenn das etwas zu "nah" für dich ist: Standardmäßig ist auf dem STK1000 
(das AP7000 Entwicklungskit) ein Linux installiert. Da kannst du dann 
sogar "ganz normale PC-Programme" schreiben. Außerdem brauchst du dich 
dann nicht mehr um die Hardware kümmern - steckt ja alles hinter 
Treibern.


Weiß' nicht ob du für sowas zu haben bist. Immerhin ist der Chip echt 
neu ;) Soll auch nur eine Anregung sein - Alternativen gibt es 
sicherlich genug!

EDIT an Poster unter mir: Jup, das NGW100 soll wirklich gut sein. (VIEL 
billiger als das STK1000, was ich vorgeschlagen habe). Bei 
httP://avrfreaks.net gibts da schön was zu lesen.

von Karl-j. B. (_matrixman_)


Lesenswert?

Wie wärs mit dem NWG100 (AT32AP7000 drauf). Das board ist sehr klein, 
billig, hat zwei netzwerkschnittstellen. Linux ist drauf sogar schon mit 
webserver und telnet, ftp,... und hast sogar n anschluss für ein TFT 
Panel oder anderes Display :)

Der Datendurchsatz dürfte kein Problem dastellen. Hast sogar nen 
SD-Kartenslot drauf=)

Jedoch wird das Programmieren evt schwerer (ists es aber bei deinem 
Projekt sowieso schon) und das Board ist ziemlich neu (aber damit 
bechäftigen sich schon etliche Profis)

http://www.wiki.elektronik-projekt.de/w/index.php/NGW100_First_Steps

Da haste mal ne Seite über das Board

von Josef (Gast)


Lesenswert?

>Jedoch wird das Programmieren

wieso wird das schwerer? Du meinst vom Umfang? Angedacht hatte ich alles 
in c++ zu schreiben, um mit Klassen alles aufteilen zu können und eine 
übersichtlichkeit zu erhalten.

- die boards werd ich mir anschauen... klingen sehr interessant.

Josef

von Nullpointer (Gast)


Lesenswert?

Das C++ ist nicht wirklich die grosse Hilfe, wenn man alles schreiben 
muss. Die grosse hilfe waere zb einen embedded PC zu nehmen, dort ist 
ein LCD kein Problem, die Ethernet Schnittstelle ist auch gemacht, man 
muesst die Software nur noch zusammenclicken und linken.

von Karl-j. B. (_matrixman_)


Lesenswert?

Das hab ich geschrieben weil ich net weiß wiegut du programmieren 
kannst...

(Soll welche geben die mit sowas Programmieren anfangen wollen)

Ich glaub aber mit dem AVR32 bist du gut beraten. Da hast du auch schon 
ein Linux indem sämtliche Funktionen schon integriert sind. Die müsstest 
du dann nur noch anpassen und deine Funktionen hinzufügen.

von Josef (Gast)


Lesenswert?

@Nullpointer

da hast du natürlich recht; das einzige was mich an einem embedded pc 
stört aber vielleicht geht es einfach auch nict anders ist, dass booten 
zu beginn. Wie lange dauert sowas denn ungefähr?

Das Gerät soll später halt auch in Live-Situationen auf der Bühen  zum 
einsatz kommen und wenn da mal aus irgendeinem grund der strom nicht 
mehr da ist für kurze zeit, ist es halt blöd, wenn man 5min warten muss 
bis das gerät wieder bereit ist die daten übers ethernet anzunehmen und 
verarbeiten kann...

Josef

von Josef (Gast)


Lesenswert?

>(Soll welche geben die mit sowas Programmieren anfangen wollen)

programmieren in c++ tu ich schon relativ lange... das einzige und 
deshalb frage ich hier ist, dass ich nicht genau weiß welche Hardware / 
Performance-mäßig am besten passt... die hardware-ICs in eine schaltung 
zu integrieren (ist einfach) - aber die Dimensionierung des ganzes ist 
das schwere...

bis jetzt hab ich halt stets kleinere produkte mit µC erarbeitet und 
umgesetzt... aber mit webserver und display (auch noch so groß) muss ich 
mich halt erstmla informieren mit welchen komponenten sowas überhaupt zu 
realisieren wäre... vielleicht ist es auch besser auf das display zu 
verzichten und nur die konfig über den webserver zu machen.. da muss man 
halt dann sehen, wie es am besten ist und was 100%ig wie die datenrate 
vom ethnernet und eine konfig-möglichkeit gegeben sein muss...

Josef

von Nullpointer (Gast)


Lesenswert?

Ein WinXP embedded ist frei konfiguerierbar. Braucht auch keine Platte. 
Abhaengig von der Stueckzahl koennte sowas Sinn machen. Ich hab's leider 
noch nie probiert, kann daher keine Aussagen zum Bootprozess machen.

von Josef (Gast)


Lesenswert?

diese embedded WinXP brauchen tierisch lange... abhängig natürlich von 
dem Content und der Hardware-Konfiguration zu beginn (also 
initialisierung etc.)... ca. 1min..

von Josef (Gast)


Lesenswert?

was mir grad einfällt - so einen webserver haben doch viele teurere 
switches etc. integriert... weiß jmd. mit welchen ICs die arbeiten?

z.B. Netgear oder 3Com?

Josef

von Markus C. (ljmarkus)


Lesenswert?

ich habe das gefühl das was Du suchst etwas in richtung Artnet und DMX 
geht ?


lg, markus

von Simon K. (simon) Benutzerseite


Lesenswert?

Embedded Windows XP für sowas? .... In dem Forum fehlt der der Smily, 
der die Geste mit dem drehenden Finger an der Schläfe darstellt... ("Du 
hast doch nen Vogel")

von Josef (Gast)


Lesenswert?

@Markus

nein hat eher mehr mit Ton und Video zu tun... kein Licht im direkten 
Sinne.

von Markus C. (ljmarkus)


Lesenswert?

@ Josef

schreibe mir mal ne PM mit deiner emailadresse bitte

von Nullpointer (Gast)


Lesenswert?

Simon,
du hast schon mal einen VGA Controller angesteuert ? Register bis zum 
Abwinken, Und mit dem VGA Controller hat man moch keine 
Benutzeroberflaeche, noch keine Menues, keine Graphen, nichts. Da ist 
man schon mal beschaeftigt bis man was hat.  Wenn's was 
Selbstgestricktes ist, dem Benutzer gegen das Training, gegen deren 
Intuition geht, hat man Gemecker, Supportanfragen, muss ein dickes 
Benutzermanual schreiben (das niemand liest), ich weiss nicht ob sich 
das lohnt. Um wieviele Stueck geht's denn ?

von Daniel S. (dschwab)


Lesenswert?

Hallo Josef

Ich habe hier einen LPC2124 der intern mit 60MHz läuft. Daran 
angeschlossen ist ein CP2200 (ein 10MBit Ethernet Baustein).

> Welche Datenrate kann man
> max. dabei erzielen - ich bräuchte ca. 10-12 MBit.

Die maximale Transferrate liegt mit meinem TCP/IP Stack knapp über 
500kByte pro Sekunde. Viel mehr wirst du aus einem 10MBit Netzwerk nicht 
mehr herausbringen (Durchschnitt liegt aber bei 330KByte/s). Dazu kommt, 
dass wenn der Buffer des Empfängercomputers fast voll ist, nur schon 
dadurch die Geschwindigkeit massiv sinkt.

Damit du eine effektive Datenrate von 10-12MBit hast, brauchst du einen 
Mikrocontroller der 100MBit unterstützt. Und auch dann wirst du etwa nur 
15 Prozent des Netzwerkes mit einer Socketverbindung auslasten können. 
Das schafft definitiv kein Mikrocontroller mehr. Ein ping im normalen 
Betrieb (also in Betrieb mit der gewünschten Applikation die auch 
Rechenpower benötigt) des LCP2124 hat eine Antwortzeit von 0.6ms.

Die einzige Möglichkeit das Netzwerk besser auszulasten liegt darin, 
mehrere Sockets zu verwenden. Während der eine Socket auf das ACK 
wartet, braucht ein anderer Socket die Bandbreite. Die Programmierung 
der Empfangseite ist sehr kompliziert, und die Daten kommen überhaupt 
nicht geordnet an (da ja mit mehreren Socket gearbeitet wird). Die 
Geschwindigkeit die man damit erreichen kann ist gewaltig. Die Software
die ich dazu geschrieben habe (auf einem x86 mit Linux) war mal 
Probeweise um das Verhalten des Netzwerkes zu studieren und ob dies 
meine Bandbreiten Probleme lösen könnte. Das senden von Dummydaten ergab 
eine Geschwindigkeit von knapp 11MByte pro Sekunde bei einem 100MBit 
Netzwerk. Unter normalen Bedingungen (sprich zu Hause), erreichte ich 
mit dieser Methode ca. 8MByte/s mit zwei Computern à 400MHz Celeron 
Prozessor und zwischen diesen beiden Computern war ein Netgear WGT624 
(Router).

> Bei dem LCD würde es sich um ein graphisches Farbdisplay handeln mit
> einer auflösung von 640x480 (oder tft)... Nimmt man hier besser einen
> LCD controller mit externen speicherinterface oder holt man sich die
> Daten über einen externen an den µC angeschlossenen RAM und schiebt die
> Daten dann über den DAtenbus an den LCD Controller weiter? Was ist hier
> sinnvoller?

Kein Mikrocontroller zu verwenden.

Gruss, Daniel

von Simon K. (simon) Benutzerseite


Lesenswert?

Daniel Schwab wrote:
> Damit du eine effektive Datenrate von 10-12MBit hast, brauchst du einen
> Mikrocontroller der 100MBit unterstützt. Und auch dann wirst du etwa nur
> 15 Prozent des Netzwerkes mit einer Socketverbindung auslasten können.
> Das schafft definitiv kein Mikrocontroller mehr.

Hm? Versteh ich nicht. Die Aussage, dass es mit einem Mikrocontroller 
nicht geht halte ich mal für sehr vage.
Weiterhin denke ich, dass der Threadopener schon damit rechnet, den 
100MBit Ethernet-Standard verwenden zu müssen.

> Ein ping im normalen
> Betrieb (also in Betrieb mit der gewünschten Applikation die auch
> Rechenpower benötigt) des LCP2124 hat eine Antwortzeit von 0.6ms.

Ahja, die Aussage finde ich ebenfalls sehr vage. Man kann einen Ping mit 
einem Byte Daten senden, als auch einen mit zum Beispiel 1400 Bytes 
Daten. Und beide dauern gleich?

> Während der eine Socket auf das ACK
> wartet, braucht ein anderer Socket die Bandbreite.
> und zwischen diesen beiden Computern war ein Netgear WGT624
> (Router).

Man braucht nicht auf ein ACK zu warten. Es gibt sowas wie delayed-ACK. 
Da werden dann erstmal ein paar Pakete geschickt und nach ein paar 
(Milli)Sekunden "Funkstille" wird dann ein Ack über alle Pakete 
geschickt.

>> Bei dem LCD würde es sich um ein graphisches Farbdisplay handeln mit
>> einer auflösung von 640x480 (oder tft)... Nimmt man hier besser einen
>> LCD controller mit externen speicherinterface oder holt man sich die
>> Daten über einen externen an den µC angeschlossenen RAM und schiebt die
>> Daten dann über den DAtenbus an den LCD Controller weiter? Was ist hier
>> sinnvoller?
>
> Kein Mikrocontroller zu verwenden.

Toller Kommentar.... ?!

von Gast (Mit Niveau) (Gast)


Lesenswert?

Mal eine ganz andere Idee:

Einen kleinen Fonera umwurschteln. Da ist alles drin was an 
Netzwerkprotokoll benötigt wird, hat ein offenes System (OpenWRT) und du 
hast sogar noch einen GPIO zur Verfügung. Alles eine Frage des 
Linux-könnens (Ich z.B. kanns net G)

Wäre das nicht alles in allem eine einfachere Lösung als sich von Grund 
auf ein neues System aufzubauen?

Grüße Ben

von Joe (Gast)


Lesenswert?

>> Man braucht nicht auf ein ACK zu warten. Es gibt sowas wie delayed-ACK.
>> Da werden dann erstmal ein paar Pakete geschickt und nach ein paar
>> (Milli)Sekunden "Funkstille" wird dann ein Ack über alle Pakete
>> geschickt.

Sehr gut beobachtet, in den Spec's gibts ne Menge "should do" und einige 
"must's", in dem Zusammenhang meint "should", du kannst es lassen. Auf 
diese Art und Weise wirds Netwerktechnisch richtig schnell.

Mein Webserver rennt mit nem AT89C51ED2, es geht also auch mit einem 8 
Bitter ganz gut. Allerdings habe ich kein aufwendiges Farbdisplay am 
Start und Geschwindigkeit ist bei mir eher sekundär.

Die Kernfrage ist, was das Ganze wirklich können soll, kosten soll. 
Technisch gehts jedenfalls mit nem simplen Controller bis hin zum 
embedded Linux Board.

von Daniel S. (dschwab)


Lesenswert?

> Ahja, die Aussage finde ich ebenfalls sehr vage. Man kann einen Ping mit
> einem Byte Daten senden, als auch einen mit zum Beispiel 1400 Bytes
> Daten. Und beide dauern gleich?

Welche Antwortzeiten bekommst du so "ungefähr" bei deinem 
Mikrocontroller und welchen benutzt du? Wenn du willst, kannst du ja die 
Laufzeit deines Routers, falls du einen hast, mit aufführen. Dann wäre 
es nicht so vage ;-)

> Man braucht nicht auf ein ACK zu warten. Es gibt sowas wie delayed-ACK.
> Da werden dann erstmal ein paar Pakete geschickt und nach ein paar
> (Milli)Sekunden "Funkstille" wird dann ein Ack über alle Pakete
> geschickt.

Mit dem delayed-ACK hast du ja recht, hast du's schon mal ausprobiert 
wie gut das Funktioniert? Bin ziemlich neugierig, wo du das schon 
angewendet hast.

>> Kein Mikrocontroller zu verwenden.
> Toller Kommentar.... ?!

Er ist sehr treffend.

Ich habe hier noch ein LPC2378 (72MHz). Der hat einen eingebauten 
Ethernet Baustein mit DMA. Der schafft die 10MBit auch nicht voll 
auszunutzen (mit TCP), obwohl er 100MBit hat.

Gruss, Daniel

von Torben (Gast)


Lesenswert?

wielange dauert denn so ein Bootvorgang bei einem embedded linux?

von Simon K. (simon) Benutzerseite


Lesenswert?

Daniel Schwab wrote:
>> Ahja, die Aussage finde ich ebenfalls sehr vage. Man kann einen Ping mit
>> einem Byte Daten senden, als auch einen mit zum Beispiel 1400 Bytes
>> Daten. Und beide dauern gleich?
>
> Welche Antwortzeiten bekommst du so "ungefähr" bei deinem
> Mikrocontroller und welchen benutzt du? Wenn du willst, kannst du ja die
> Laufzeit deines Routers, falls du einen hast, mit aufführen. Dann wäre
> es nicht so vage ;-)

Hm? Ich meinte eigentlich eher, dass man ohne weitere Angabe über die 
Ping-Paketgröße keine pauschale Auskunft über Reaktionszeiten geben 
kann. Auch ist das von der Implementierung des ICMP/IP bzw. generell 
Ethernet abhängig.

>> Man braucht nicht auf ein ACK zu warten. Es gibt sowas wie delayed-ACK.
>> Da werden dann erstmal ein paar Pakete geschickt und nach ein paar
>> (Milli)Sekunden "Funkstille" wird dann ein Ack über alle Pakete
>> geschickt.
>
> Mit dem delayed-ACK hast du ja recht, hast du's schon mal ausprobiert
> wie gut das Funktioniert? Bin ziemlich neugierig, wo du das schon
> angewendet hast.

Ich bin nicht ganz sicher, aber der uIP Stack hat dafür eine 
Einstellung.
http://www.sics.se/~adam/uip/

>>> Kein Mikrocontroller zu verwenden.
>> Toller Kommentar.... ?!
>
> Er ist sehr treffend.

Ach, findest du? Direkt nen ganzen Personal-Computer?

> Ich habe hier noch ein LPC2378 (72MHz). Der hat einen eingebauten
> Ethernet Baustein mit DMA. Der schafft die 10MBit auch nicht voll
> auszunutzen (mit TCP), obwohl er 100MBit hat.

Es gibt aber durchaus noch leistungsfähigere Mikrocontroller. Und die 
Leistungsfähigkeit hängt nicht zwangsläufig von der Frequenz des 
Systemtakts ab, sondern eher von der Software-Implementierung des 
Netzwerk-teils, davon, was der Controller noch nebenbei tun muss, von 
der Hardware, und und und...

von Simon K. (simon) Benutzerseite


Lesenswert?

Torben wrote:
> wielange dauert denn so ein Bootvorgang bei einem embedded linux?

Äh, ich nehme mal stark an, dass das auf die Linuxversion, Kernel, 
aktivierte Treiber, zu ladende Dienste und die Hardware ankommt.

von Karl-j. B. (_matrixman_)


Lesenswert?

Mein NWG100 braucht so schätzungsweiße 30 sec mit dem Linux wo drauf 
war. Die Sachen wo er lädt kannst du ja mal im Internet suchen.

Wenn du dein Linux richtig optimierst und wirklich nur das läuft was er 
braucht kommst du bestimmt auf 5 - 10 sec runter.

von Daniel S. (dschwab)


Lesenswert?

Hallo

Wenn man schnell mal ein paar Linux erfahrungen machen möchte zu einem 
Gerät das gut beschrieben ist, wäre dies evtl. etwas: 
http://www.nslu2-linux.org

Das Gerät würde jedenfalls den Anforderungen von Josef entsprechen.

Hab schon damit gearbeitet und zeigt eine gute Performance. Da er ein 
LCD Display möchte, wäre es gut eines zu nehmen das mit I2C angesteuert 
wird. Oder benutzt gleich ein X-Server und der kann mit einer USB-VGA 
Karte betrieben werden. Das übertakten von 133MHz auf 266MHz überlebt er 
auch unbeschadet ohne abstürze und der Speed braucht er, wenn er die 
Grafikausgabe einigermassen flüssig haben möchte.

Das Gerät ist zu haben (ohne USB-Grafikkarte) für etwa 100 Euro.

Gruss, Daniel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.