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
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...
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
@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
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.
>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
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.
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
>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
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.
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.
@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
>(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
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.
diese embedded WinXP brauchen tierisch lange... abhängig natürlich von dem Content und der Hardware-Konfiguration zu beginn (also initialisierung etc.)... ca. 1min..
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
ich habe das gefühl das was Du suchst etwas in richtung Artnet und DMX geht ? lg, markus
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")
@Markus nein hat eher mehr mit Ton und Video zu tun... kein Licht im direkten Sinne.
@ Josef schreibe mir mal ne PM mit deiner emailadresse bitte
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 ?
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
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.... ?!
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
>> 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.
> 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
wielange dauert denn so ein Bootvorgang bei einem embedded linux?
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...
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.