Hallo, ich möchte demnächst mal auf ARM umsteigen, da ich ordentlich mehr Ram benötige, als die AVRs bieten. Der LPC2106 bietet sich geradezu an mit seinen 64kbRam und dennoch kleinem Gehäuse. Er bietet keinen externen Daten/Adressbus und auch keine Fast GPIOs, und darauf bezieht sich auch meine Frage. Denkt ihr, dass ich dank den 32bits und dem grossen internen Ram einen grossen Geschwindigkeitsvorteil habe zu sagen wir mal ATmega2561 + CP2200? (Der mega2561 bietet einen externen Adressbus.) Es ist mir klar, dass man einen TCP Stack auch für 8bitter wie einen Atmega mit wenig Sram schreiben kann, aber die Geschwindigkeit leidet schon ziemlich. Da TCP viele 16 und 32 bit Operationen benötigt, denke ich eigentlich, dass es schneller als die Atmega Lösung werden müsste, bin mir aber nicht sicher. Leider finde ich nirgends Befehlsausführzeiten oder eine Angabe darüber, wie schnell man über die langsamen GPIOS des LPC2106 denn Daten rausschieben kann. Wie lange bräuchte ich also konkret um ein Byte anzulegen und es per /WR Puls in den Ethernetcontroller zu befördern? Noch eine Bemerkung am Rande: Das Projekt ist rein privat, es geht nicht darum, dass ich in irgendeiner Arbeit einen möglichst hohen Datendurchsatz hinkriegen MUSS(aber ich möchte natürlich:-). Wäre dem so, dann würde ich einen Controller mit integriertem MAC nehmen. Nun haben aber ebendiese LPCs dann ziemlich viele Pins und die benötigten externen PHYs muss man auch erst mal irgendwo besorgen können. Ich möchte das ganze aber zu Hause ätzen+aufbauen, also wäre ich mit einem kleinen Gehäuse glücklicher als mit einem TQFP144-Monster :-) Nik
Entscheidend für die Performance von TCPIP ist zunächst der TCPIP-Stack selbst. Mit uIP und TCP ist das beispielsweise hoffnungslos, egal mit welcher CPU. Die GPIO-Performance der ältesten LPC2000 lässt zu wünschen übrig, der I/O-Bus bremst sie aus. Nur Devices mit FIOxxx Portadressen sind wirklich schnell, d.h. der LPC2106 fällt dafür schonmal aus. Der CP2200 kann nur 10Mbps, also mehr als 1MB/s ist damit ohnehin nicht drin. Mit DM9000 (Olimex-Modul) geht mehr.
Der CP2200 ist in der Tat nur zu 10Mbps fähig, aber die möchte ich zuerst einmal überhaupt hinbringen ;-). Auf dem AVR schaffe ich im Moment so etwa 80kb/sec mit TCP. Allerdings habe ich gerade mal soviel implementiert, damit es läuft. Packet Retransmission ginge zwar auch, aber dann kann ich beim AVR nur arg kleine Paketchen verschicken... Ich glaube ich hole mir vorerst mal den 2106 und hänge über SPI den altbekannten enc28j60 dran. Später kann ich dann immer noch auf einen Controller mit DMA oder dem DM9000 umsteigen. Aber ich denke kaum, dass mein TCP Stack von Anfang an 100mbit bringen wird, daher beginne ich lieber klein ;-)
Wenns einen kleinen ARM( < TQFP100) mit integriertem MAC+PHY gäbe, den ich als Normalsterblicher auch beziehen kann, wäre sowas natürlich auch toll, aber ich finde nur welche mit integriertem MAC. Weshalb wird das PHY eigentlich nicht auch gleich immer integriert?
> Weshalb wird das PHY eigentlich nicht auch gleich immer integriert? Traditionell wohl auch, weil dieser Teil medienabhängig ist, Kupfer vs. Glas. Mag auch mit unterschiedlicher Technik zusammenhängen, immerhin taktet ein 100Mbps MAC mit 25MHz, der PHY dazu mit 125MHz. Mit ENC28J60 und UDP habe ich einen 16MHz Mega32 zu ca. 150KB/sec überreden können, wobei der dafür seine Daten dazu aus einem SPI-Flash holt. Mit TCP waren es nur um die 5KB/sec, was am Verfahren von uIP liegt, nicht an der Hardware.
> Ich glaube ich hole mir vorerst mal den 2106 und hänge über SPI den > altbekannten enc28j60 dran. Achte aber drauf, dass du die aktuelle Chip-Revision vom ENC kriegst. Vorgängerversionen (in meinen beiden Olimex-Modulen aus dem hiesigen Shop) benötigen für zuverlässigen Betrieb offiziell einen SPI-Takt von mindestens 8MHz. Das SPI vom LPC2109 kann aber nur maximal 7,5MHz.
>Das SPI vom LPC2109 kann aber nur maximal 7,5MHz. Ach, die NXP Datenblätter...habe ich übersehen :-) Vielleicht wirds doch gleich etwas grösseres...ich schau mich mal weiter um. Eigentlich brauche ich "nur" 16-32kb Flash, schnelles SPI und vielleicht DMA. Und das ganze in einem kleinen Gehäuse. Vielleicht ist der SAM7S128 von Atmel was für mich, ich les mich mal schlau. >Traditionell wohl auch, weil dieser Teil medienabhängig ist, >Kupfer vs. Glas. Mag auch mit unterschiedlicher Technik >zusammenhängen, immerhin taktet ein 100Mbps MAC mit 25MHz, >der PHY dazu mit 125MHz. Schade eigentlich, irgendwie müsste doch intern mit PLL lösbar sein.(?) >Mit ENC28J60 und UDP habe ich einen 16MHz Mega32 >zu ca. 150KB/sec überreden können, wobei der dafür seine >Daten dazu aus einem SPI-Flash holt. Das SPI-Flash bremst aus! (Glaube ich ;-) Ich benutze im Moment die selbe Kombination(enc+mega32+UDP) allerdings schreibe ich paralell auf eine Harddisk. Momentan sind so etwa 370kByte/s drin, mit dem ATmega644@20Mhz warscheinlich noch mehr :-)
LPC2103. 32KB Flash, 48 Pins, vielleich sogar mal im schon lang versprochenen PLCC44 Gewand. Das neue SPI-Modul scheint recht fix zu sein, mit FIFO, und kann kurz quergelesen anscheinend bis PCLK/2.
Upps, eigentlich wollte ich oben 16-32kB Ram schreiben. Ich denke 64kB Flash / 32kB Ram sollten es schon sein. Ich denke, der LPC2136 wäre nicht schlecht. Vom Flash her leider völlig überdimensioniert, soviel bräuchte ich eigentlich nicht. Aber das LQFP64 Gehäuse sollte ich noch löten können. :-) Heute Mittag wälze ich nochmal die Datenblätter... -schnelles SPI (20Mhz reicht aber, mehr kann der ENC eh nicht) -32kb Ram oder mehr -64kb Flash oder mehr -maximal LQFP64 -DMA für RAM<->SPI -(bugfreie) schnelle I/O's oder stattdessen: Ein externer Datenbus, aber das haben die "kleinen" tqfp64 ja nicht. Für eine Festplatte wär das schon ganz praktisch...
Was hällst du vom AT91SAM7X... ? Da hast du dann auch direkt Ethernet integriert. Ok ist LQFP 100, aber auch das ist handhabbar. Es gibt an sonsten ja auch noch SMD-Adapter den du nutzen könntest. ARM mit externem Bus fängt bei LQFP128 an ... (soweit ich weis)
Oder was hältst du von einem ARM Cortex M3 von Luminary? z.B. den LM3S6753: "The Stellaris® LM3S6753 microcontroller is based on the ARM® Cortex™-M3 controller core operating at 50 MHz, with 128 kB single-cycle flash, 64 kB single-cycle SRAM, 10/100 Ethernet MAC/PHY,..." Viele Grüße Michael
Achja, das Gehäuse ist PQFP100, dafür brauchst du aber auch keinen externen Ethernet-Controller. Andere Varianten (weniger/mehr Flash und RAM, ADC usw.) gibt es ebenfalls, das Gehäuse bleibt aber immer gleich.
Controller TQFP64/0,50 mit internem Ethernet gibt es schon, sogar der PHY ist da drin. Nur beim RAM wird's dünner, 8KB für Ethernet. Ich trau mich nur nicht zu schreiben wo (Tip: in der Nähe des ENC28J60).
>mich nur nicht zu schreiben wo
Hmmm welche MICROCHIP könnte das bloss sein... ;-)
Prinzipiell habe ich nichts gegen Microchip, aber leider gibts dafür ja
keinen GCC...
@Michael
Die Cortex M3 sehen sehr interessant aus! Farnell hat den leider nicht,
ich frage mal bei CSD, aber warscheinlich wird es schwierig den einfach
mal so zu bekommen.
Werden die Cortex M3 eigentlich von irgendeinem Compiler unterstützt,
der nichts kostet?...Das wär ideal.
Ich hab den ARM Cortex bei Digikey gekauft, da gibts den auf jeden Fall. IN Deutschland wüsste ich jetzt spontan nicht. Als Compiler kannst du neben den ganzen Kommerziellen auch WinARM einsetzten. Hier sind einfache Beispiele dazu zu finden: http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/index_cortex.html Michael
Und das dürfte interessant sein: http://www.elektronikpraxis.vogel.de/themen/embeddedsoftwareengineering/implementierung/articles/89587/
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.