OOC mit Macros, Events, Listen und Exceptions



  • supertux schrieb:

    super, erfinde doch das Rad noch einmal

    Du hast natürlich recht. Aber ich kann die Freude gut nachvollziehen, daß man mit C auf einmal "on the bare metal" ist:

    Antoras schrieb:

    Noch en besserer Tipp. Warum ne Lib benutzen wenn man es auch selber machen kann?

    Letztlich sicher eine Design-Frage: willst du unabhängig sein: dann bau es selbst. Willst du auf der Arbeit anderer aufbauen: das hat viele Vorteile.

    pointercrash() hat ja darauf hingewiesen, daß es kleine Systeme gibt, die nicht den ganzen Standard umsetzen. Sich nur nichts einreden lassen: es ist dein Programm, und du bestimmst die Ziel-Platformen.

    Antoras schrieb:

    Das liegt daran, dass das dar Mini-Webserver nicht besonders leistungsfähig ist - da halte ich selbst C für overpowered...
    Aber mal gucken wie groß der Aufwand im Endeffekt ist, vllt. lohnt sich es ja doch noch auf C umzusteigen.

    Gute Gelegenheit, zu erforschen, wie gut die beiden zusammenspielen können. Ist ja auch bei Betriebssytemen üblich, so früh als möglich C zu verwenden. Da kann man sicher was lernen.



  • Antoras schrieb:

    Exceptions lass ich jetzt wahrscheinlich doch komplett wegfallen. Konsolenausgaben reichen für meine Programme bisher vollkommen aus.

    Meinst du zum Debuggen?



  • Antoras schrieb:

    Ich hab halt einen Spleen und möchte alles selber machen. Dass das aber nicht so ohne weiteres möglich und auch sinnvoll ist weiß ich aber auch. 🙂

    Zunächst einmal hängt alles nur davon ab, was du dir alles zutraust zu programmieren. 🙂

    Später hängt alles davon ab wie schnell du dabei bist. 😞

    Der Satz: mit dem Rad erfinden und so ist auch nur ein Dogma.



  • Antoras schrieb:

    Ich glaub ich hab mich falsch ausgedrückt. Das wird ein Webserver für einen Mikrocontroller und nicht für einen PC. Hier steht das Programmieren der Hardwarefunktionen im Vordergrund. Deshalb meine Äußerung C sei hier overpowered.

    ein webserver hat ja mit der hardware direkt nix am hut, der muss HTTP-anfragen beantworten und daten versenden. dazwischen hängt noch ein TCP-stack, der auch nicht direkt die hardware ansprechen muss. erst dann kommt ein treiber für's netzwerkinterface, der zwar mit der hardware redet, aber selbst solche treibersachen sind meistens zu 99% in C implementiert.

    auf welchem controller soll dein webserver denn laufen?
    vielleicht wird dich das interessieren: http://www.iosoft.co.uk/tcplean.php
    🙂



  • ;fricky schrieb:

    ... dazwischen hängt noch ein TCP-stack, der auch nicht direkt die hardware ansprechen muss. erst dann kommt ein treiber für's netzwerkinterface, der zwar mit der hardware redet, aber selbst solche treibersachen sind meistens zu 99% in C implementiert.

    auf welchem controller soll dein webserver denn laufen?
    vielleicht wird dich das interessieren: http://www.iosoft.co.uk/tcplean.php
    🙂

    Des kostet ja Geld und nicht mal so wenig 😮 Der uIP von Dunkels soll für die ganz kleinen Kisten recht gut sein, den OpenTCP hab ich nur mal ins Projekt klinken müssen - läuft. Bei Dunkels ist der Webserver auch mit bei.
    Da seh' ich übrigens gar keinen Sinn, auch nur irgendwas in ASM zu machen. Erst wenn es an der Performance hapert, mal die Hardwarezugriffe unter die Lupe nehmen, ob man da was per ASM handoptimieren kann.



  • pointercrash() schrieb:

    Des kostet ja Geld und nicht mal so wenig

    du kannste es auch umsonst haben (ich darf aber nicht verraten wo, sonst gibts mecker vom mod). ach ja, openTCP hat viele bugs, funktioniert aber erstmal. bei uIP geht der DHCP-client nicht und der ganze code schwer zu portieren. naja, mittlerweile kann man auch kommerzielle tcp-stacks, als source-code, von den herstellern kostenlos downloaden (micrium und so), die darfste nur nicht in eigenen produkten einsetzen, also nur ausprobieren.
    🙂



  • ;fricky schrieb:

    du kannste es auch umsonst haben

    Ich habs schon 😃

    ;fricky schrieb:

    auf welchem controller soll dein webserver denn laufen?

    Auf einem MSC1210.

    µngbd schrieb:

    Meinst du zum Debuggen?

    Ja. Für den Anwender bringen die Konsolenausgaben natürlich nichts. Aber für so en Zeugs wie ein Segmentation Fault benutz ich sowieso gleich den Debugger.



  • ;fricky schrieb:

    ach ja, openTCP hat viele bugs, funktioniert aber erstmal. bei uIP geht der DHCP-client nicht und der ganze code schwer zu portieren ...
    🙂

    Ich weiß ... 🙄 Ich hab' damals OpenTCP mit 'nem RTL8029 auf'm M16C zum Laufen gebracht, war softwareseitig nicht viel Trabbel, aber manchmal spinnt das Ding einfach, u.a. auch beim DHCP- Client. Seit 2003 hat da niemand mehr dran gebastelt, hin und wieder tauchen "verbesserte" Ports auf, aber nichts Offizielles - schade!
    Kann ich heute nichtmal mehr nachbauen, weil ich den 8029 einfach nicht mehr bekomme. Fällt Dir eigentlich eine "Out-of-the-box-" Lösung ein, eine Schaltung mit Ethernet zu versehen? Jetzt nicht den blöden XPort, der simuliert PC-seitig ja eine serielle SS.
    Oder irgendeine Chip/Übertrager- Kombi, die so gängig ist, daß man nicht übermorgen doof dasteht.

    Ich weiß, das ist OT, aber wo wir schon von Webservern sprechen ... 😉



  • Antoras schrieb:

    ;fricky schrieb:

    du kannste es auch umsonst haben

    Ich habs schon

    good job, Antoras *daumen_hoch*

    Antoras schrieb:

    Auf einem MSC1210.

    oha, relatuv schwaches teil, 1k RAM und so. da würde ich mir schon überlegen, ob ein objektorientierter ansatz (der einiges an overhead mit sich bringt) wirklich das richtige ist.
    🙂



  • Antoras schrieb:

    µngbd schrieb:

    Meinst du zum Debuggen?

    Ja. Für den Anwender bringen die Konsolenausgaben natürlich nichts. Aber für so en Zeugs wie ein Segmentation Fault benutz ich sowieso gleich den Debugger.

    Klar, ein Debugger ist was feines. Aber ich benutz meinen nur selten, Ausgaben reichen meistens.

    Allerdings verwirre ich mich damit regelmäßig selbst, weil ich vergesse, einen man: fflush auf stdout zu machen, und das Programm abstürzt, während noch was im Schreib-Puffer ist -- dann such ich das Problem an der falschen Stelle... 🙄



  • pointercrash() schrieb:

    Fällt Dir eigentlich eine "Out-of-the-box-" Lösung ein, eine Schaltung mit Ethernet zu versehen?

    such mal nach ENC28J60, den kannste über SPI überall anschliessen, sehr beliebtes teil. der kann zwar nur 10BASE-T und du brauchst 'nen softwaretreiber, aber beispielcode findeste massenhaft im internet.
    🙂



  • Antoras schrieb:

    Auf einem MSC1210.

    Das ist ein "intelligenter" AD-DA- Wandler mit dem schaurigen 8051- Core. Was um Gottes Willen läßt Dich glauben, daß das Dingsda einen Webserver abgeben könnte?

    ;fricky schrieb:

    such mal nach ENC28J60, den kannste über SPI überall anschliessen, sehr beliebtes teil. der kann zwar nur 10BASE-T und du brauchst 'nen softwaretreiber, aber beispielcode findeste massenhaft im internet.
    🙂

    Oh, der ist mir nicht mehr aufgefallen, weil ich Microchip seit mindestens 10 Jahren ignoriere. Die PICs haben noch bei jedem Projekt an mir Selbstzweifel geweckt, das ist schlecht für's Ego. 😉



  • pointercrash() schrieb:

    Was um Gottes Willen läßt Dich glauben, daß das Dingsda einen Webserver abgeben könnte?

    geht aber. RAM reicht aus und vom Flash her kriegste 3 davon rein.
    🙂



  • ;fricky schrieb:

    geht aber. RAM reicht aus und vom Flash her kriegste 3 davon rein.
    🙂

    Ja, schon, wg. der AD/DA- Pufferung hat er sogar bißchen was droben.
    Hat trotzdem was von der "if pigs could fly- " Anrüchigkeit.

    Vielleicht graust's mir nur vor dem Intel- Mist (8051 Core) zu sehr - hat der Weltmarktführer überhaupt je einen Prozessor designt, der was taugt?



  • pointercrash() schrieb:

    - hat der Weltmarktführer überhaupt je einen Prozessor designt, der was taugt?

    ja, die Xscales, naja, als lizenznehmer von ARM. aber hast schon recht: völlig allein haben sie noch nie was gescheites hingekriegt. intel ist nun mal das 'microsoft' der hardwarebranche, technologisch mittelmässig bis miserabel, aber marketing und vertrieb sind weltklasse.
    🙂



  • ;fricky schrieb:

    Antoras schrieb:

    Auf einem MSC1210.

    oha, relatuv schwaches teil, 1k RAM und so. da würde ich mir schon überlegen, ob ein objektorientierter ansatz (der einiges an overhead mit sich bringt) wirklich das richtige ist.
    🙂

    Was glaubt ihr warum ich gesagt hab ich möchte das Ding mit ASM programmieren? Der Controller eignet sich noch nicht einmal als Mailserver 😞 Ich programmier das Ding erst mit C wenn ich merk, dass ich sonst nicht mehr fertig werd...
    Aber wenn ihr mir sagt, wo man zu humanen Preisen einen leistungsstärkeren Server her bekommt, dann würde ich mir das nochmal überlegen. Da zahlt man sich ja dumm und dämlich.
    Leistung finde ich aber momentan nebensächlich - hab bisher nur relativ wenig mit Hardware gemacht und möchte mich da erst einmal einarbeiten. Da eignet sich der der MSC1210 ganz gut für. Und wenn ich merk, dass mir das zu anspruchslos ist, dann kann ich mir immer noch überlegen mich nach was "besserem" umzugucken.



  • Antoras schrieb:

    Was glaubt ihr warum ich gesagt hab ich möchte das Ding mit ASM programmieren? Der Controller eignet sich noch nicht einmal als Mailserver 😞 Ich programmier das Ding erst mit C wenn ich merk, dass ich sonst nicht mehr fertig werd...

    das geht in C. vom uIP z.b. gibts auch 8051 ports (der httpd ist wohl auch dabei)

    Antoras schrieb:

    Aber wenn ihr mir sagt, wo man zu humanen Preisen einen leistungsstärkeren Server her bekommt

    an was haste denn so gedacht? wieviel speicher, was soll's alles können, welches netzwerkinterface usw?
    🙂



  • ;fricky schrieb:

    das geht in C. vom uIP z.b. gibts auch 8051 ports (der httpd ist wohl auch dabei)

    mal gucken 😉
    [/quote]

    ;fricky schrieb:

    an was haste denn so gedacht? wieviel speicher, was soll's alles können, welches netzwerkinterface usw?
    🙂

    Eigentlich hätte ich es nur schön gefunden wenn das Ding Mails versenden hätte können, aber wie gesagt kann ich damit leben. Ich kann mir immer noch einen leistungsstärkeren Server zulegen. Erstmal müssen die Grundlagen sitzen...



  • Antoras schrieb:

    Eigentlich hätte ich es nur schön gefunden wenn das Ding Mails versenden hätte können, aber wie gesagt kann ich damit leben.

    ein SMTP client ist doch noch viel einfacher als ein http-server. das kannste schon von hand mit 'nem telnet-terminal machen. sowas sollte für dein 8051-dingens überhaupt kein problem sein.
    🙂



  • Interessant. Werd ich mir vormerken und dann irgendwann darauf zurückgreifen.

    Um noch einmal zum Thema zurückzukommen:

    Gefrickel-Vernichter schrieb:

    So hat man schneller Memory Leaks als man denkt.

    Jetzt ist es passiert, ich hatte ein Speicherleck. 😮
    Hab außerhalb eines Konstruktors malloc und folglich auch keinen Dekonstruktor bzw. free aufgerufen. malloc ohne Konstruktor ist böse bzw. fehleranfällig. Passiert mir jetzt aber nie mehr das ist das gute dran. 🙂


Anmelden zum Antworten