Forum: Projekte & Code ARM-Webserver auf uIP-Basis


von L. D. (rebell15)


Angehängte Dateien:

Lesenswert?

Hier möchte ich meinen ARM-Webserver auf uIP-Basis hochladen und euch 
zur Verfügung stellen, den ich schon in einen anderen Beitrag 
beschrieben habe.

Es wird ein STM32F103RBT6 µC mit einem ENC28J60 als Ethernetchip 
verwendet, auf einem Board das ich selbst an meiner Schule gebaut habe.

Ich hoffe dennoch das euch der Sourcecode vielleicht bei einem eurer 
Projekte weiterhelfen kann.


LG

Alexander M.

von Davis (Gast)


Lesenswert?

Alexander Müllner schrieb:

> ... den ich schon in einen anderen Beitrag beschrieben habe.

Bitte einen Link zum Beitrag.

von L. D. (rebell15)


Lesenswert?

Der Link zum vorhin erwähnten Beitrag:

Beitrag "ARM-Webserver auf uIP-Basis"

Bei Fragen oder weiterer Interesse einfach fragen =)

von Skeptiker (Gast)


Lesenswert?

Ist der Code leicht an einem ARM7 (AT91SAMS64) anpassbar?

von Simon K. (simon) Benutzerseite


Lesenswert?

Alexander Müllner schrieb:
> Hier möchte ich meinen ARM-Webserver auf uIP-Basis hochladen und euch
> zur Verfügung stellen, den ich schon in einen anderen Beitrag
> beschrieben habe.
>
> Es wird ein STM32F103RBT6 µC mit einem ENC28J60 als Ethernetchip
> verwendet, auf einem Board das ich selbst an meiner Schule gebaut habe.
>
> Ich hoffe dennoch das euch der Sourcecode vielleicht bei einem eurer
> Projekte weiterhelfen kann.

Warum hast du denn kein STM32F103 mit eingebautem Ethernet verwendet? 
Der ist vermutlich bugfreier als der ENC28J60.

von Alexander Müllner (Gast)


Lesenswert?

Skeptiker:

Also der eigentliche Webserver ist komplett in C geschrieben, also 
sollte auch für deinen ARM7 funktionieren. Du musst nur die Peripherie 
(SPI zur ENC28J60,Timer,GPIO) von deinen µC anpassen, sonst sollte alles 
funktionieren.


Simon K.:

Ich habe den verwenden müssen, weil wir in unserer Schule ein selbst 
entwickeltes Mikrocontrollerboard verwenden und auf diesen der 
STM32F103RBT6 gelötet ist. Daher war ich gezwungen das Ganze mittels des 
ENC28J60 zu realisieren. Ich glabe aber auch das der STM32F103 kein 
integriertes Ethernet hat, erst ab den STM32F107 gibt es das.

Natürlich wäre es mit anderen µC einfacher, aber die Schule wollte 
natürlich das ich es mit dem gleichen mache den auch die anderen Schüler 
im Unterricht verwenden.

von Alexander Müllner (Gast)


Lesenswert?

Ich möchte nur kurz hinzufügen das der Code mit der IDE Keil µVision 4 
erstellt worden ist.

von L. D. (rebell15)


Lesenswert?

Und weiters plane ich auch noch eine kleine Platine für den Webserver zu 
entwerfen worauf sich nur der µC und der ENC28J60+Buchse befinden. 
Weiters wird die fertige Platine dann noch Stifleisten besitzen, damit 
das ganze auch auf anderen Platinen oder am Steckbrett verwendbar ist.

von Frank K. (fchk)


Lesenswert?

Na ja, dann könntest Du vielleicht auch den 28J60 durch eine 424J600 
oder 624J600 ersetzen. Dann hättest Du 100 MBit, Crypto-Beschleunigung 
und die Möglichkeit der parallelen Anbindung zwecks Erhöhung der 
Transfergeschwindigkeit.

fchk

PS: Hier mal Zahlen von Microchip. Host ist ein PIC32MX360F512L mit 80 
MHz, der in etwa mit Deinem STM32 leistungsmäßig vergleichbar ist, die 
Werte geben den UDP-Durchsatz in kBytes/s an:

ENC28J60+SPI: 461
ENC624J600+SPI: 692
ENC624J600+Parallel 16 Bit: 2071

Zum Vergleich: PIC32MX795F512L mit internem Ethernet (ansonsten gleiche 
Rechenleistung): 8449

von Arm (Gast)


Lesenswert?

Nimm einen Cortexm3 LM3S6965. Da ist Ethernet PHY + MAC schon drinnen.

Du brauchst keinen weiteren Schip. Einfach den µC mit der Ethernetbuchse 
verbinden und fertig. :-)

von L. D. (rebell15)


Lesenswert?

Danke für die zahlreichen Tipps, aber wie schon erwähnt muss ich das auf 
unseren Schulboard programmieren und daher bin ich von meinen Lehrer 
gezwungen diese Kombination zu verwenden.

Und für meine Anwendungen reicht das auch alles aus =)

Ich hätte aber noch eine Frage und vlt. kann mir wer helfen.

Wenn ich mit Windows 7 als OS auf den Webserver zugreife braucht die 
Seite recht lange bis sie geladen ist, aber wenn ich das ganze mit 
Ubuntu mach geht das viel schneller.
Ich bin auch schon draufgekommen das es aufgrund des TCP delayed 
acknowledgment von Windows ist. Da ein ACK vom Windows Client ein Delay 
von 200ms hat und ich aber dieses Delay umgehen möchte.

Nun kann mir wer sagen wie ich das ganze am einfachsten anstelle?
Evt. kann mir jemand einen Sourcecode zukommen lassen.

von L. D. (rebell15)


Lesenswert?

Ok hab das Problem mit dem TCP ACK Delay nun so gelöst das ich einfach 
die Funktion  enc28j60PacketSend(uip_len,uip_buf); im Hauptprogramm 
immer 2x aufrufe wenn ich ein Paket schicken will.
So sendet nun Windows auch sofort ein ACK und die Übertragung erfolgt 
schneller =)

von daniel44 (Gast)


Lesenswert?

Hi,
ich würde gerne Deine Software, mit meinem STM32F103 + enc28j60 nutzen, 
weil der Code gut Dokumentiert ist. Ich möchte einen Web-Server zum Spaß 
an der Freude aufbauen. Ich arbeite mit Coocox. Nun weiß ich leider 
nicht was ich mit den ganzen Dateien wie *.d *.o *.axf *.crf *.lnp *.map 
*.tra *.bax usw. anfangen soll (Hat bestimmt KEIL erzeugt). Ich habe in 
mein Coocox Projekt zu erst einmal nur die *.c und *.h Dateien 
eingepflegt. Das hab ohne Ende Fehlermeldungen (ist ja auch klar). Kann 
der Quellcode nicht nur auf .c und .h reduziert werden von Dir ?

Gruß Daniel44

von maik (Gast)


Lesenswert?

Wie hast du das array für die webseite erzeugt
welches Programm

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.