(m)ein AVR-Buch



  • Minispiri schrieb:

    Erhard Henkes schrieb:

    Manchmal denke ich darüber nach, über den Einstieg in die eigene Betriebssystementwicklung ein kleines Buch zu schreiben, aber wer würde so etwas schon kaufen? 😃

    Ich würde es interessant finden 😉

    Was genau würdest Du interessant finden? Ein paar Schinken zum Betriebssystembau gibt es durchaus, aber da fängt es schon mit der Zielsetzung an:
    Ein dokumentiertes DOS wär' der Anfang, aber mit dem Multicore- Multitasking- Multiuser- Ansatz kann man das beliebig verkomplizieren. Wenn Du von Anfang an RT- Fähigkeiten dabeihaben magst, wird's noch witziger. Was ist effektiver - monolithischer oder Microkernel?
    Die Plattformfrage multipliziert das auch wiederum, weil zwischen 4 und 64 Bit mit und ohne MMU alles geläufig ist.
    Dann sind wir schon weg vom kleinen Büchlein hin zum Mörderschinken, den wenige lesen mögen.

    Ich kann zumindest definieren, was mich nicht juckt: X86- Unix- like. Über Unix/Linux ist genug geschrieben worden, 'nen weiteren Nachbau braucht die Welt nicht. Was völlig Neues für 'nen billigen ARM- Riegel wär' da schon was anderes, aber meine Interessenslage ist damit schon sehr speziell im Vergleich zum Riesenfeld der OS- Programmierung.



  • pointercrash() schrieb:

    Minispiri schrieb:

    Erhard Henkes schrieb:

    Manchmal denke ich darüber nach, über den Einstieg in die eigene Betriebssystementwicklung ein kleines Buch zu schreiben, aber wer würde so etwas schon kaufen? 😃

    Ich würde es interessant finden 😉

    Was genau würdest Du interessant finden?

    Einfach wie ein Betriebsystem richtig funktioniert usw.
    Wie soll ich einem etwas erklären wovon ich selbst leider 0 Ahnung habe? 😉

    Im Allgemeinen, wie ein Betriebssystem funktioniert, aufgebaut ist oder gecodet wird - das finde ich interessant.

    OT: Wird "funktionnieren" mit einem 'n' oder mit zweien geschrieben?!? :S



  • ein 'n' reicht. 😉



  • Minispiri schrieb:

    Einfach wie ein Betriebsystem richtig funktioniert usw.
    Wie soll ich einem etwas erklären wovon ich selbst leider 0 Ahnung habe? 😉

    Im Allgemeinen, wie ein Betriebssystem funktioniert, aufgebaut ist oder gecodet wird - das finde ich interessant.

    Nichts leichter als das: Recht gut dokumentiert ist z.B. Adam Dunkels Contiki. Interessant finde ich v.A. das Konzept der Protothreads und Protosockets.
    Wer's noch ein bißchen mehr "stripped to the bones" haben mag, sollte sich ein paar alte Bücher über GEOS, TOS&Co besorgen, da ist normalerweise recht gut dokumentiert, wie IOS, HA, Scheduler (jeweils soweit vorhanden) usw. angelegt sind.
    Wie fließend Übergänge in der Frage sein können, was ein OS können muß, läßt sich z.B. an FORTH erkennen, das ist Programmiersprache, Compreter, Entwicklungsumgebung und OS in einem.



  • pointercrash() schrieb:

    Wie fließend Übergänge in der Frage sein können, was ein OS können muß, läßt sich z.B. an FORTH erkennen, das ist Programmiersprache, Compreter, Entwicklungsumgebung und OS in einem.

    forth ist aber für normalsterbliche eine denkbar schlechte umsetzung einer programmiersprache. kein "normaler" denkt als stackmaschine!



  • _-- schrieb:

    forth ist aber für normalsterbliche eine denkbar schlechte umsetzung einer programmiersprache. kein "normaler" denkt als stackmaschine!

    Ist nur Gewöhnungssache, wenn man sein Dictionary auf FIG aufbauend angelegt hat, gibt es kaum einen schnelleren Weg, eine Plattform zur Zusammenarbeit zu bewegen - nichts anderes soll ein OS ja letztlich.
    Ich habe das Beispiel auch nicht genannt, weil ich die Konsole einer virtuellen 16-Bit- Stackmaschine für den ultimativen Komfort halte, sondern ein FIG- Port ein Paradebeispiel eines minimalistischen OS ist.



  • Minispiri schrieb:

    Im Allgemeinen, wie ein Betriebssystem funktioniert, aufgebaut ist oder gecodet wird - das finde ich interessant.

    Wie wäre es mit dem gläsernen Betriebssystem der Welt: GNU/Linux? Dort findest du alles: Bootloader-, Kernel-, Treiber-, User-Space-Programmierung und wie was gecodet wird, für alles gibt es Quellcode und die Tools...



  • @abc.w: Machst Du bei Linux als Developer wirklich mit? Für einen Anfänger in Sachen OS-Development ist dies sicher nicht einfach, hier ernsthaft mitzumischen.



  • ..



  • Erhard Henkes schrieb:

    @abc.w: Machst Du bei Linux als Developer wirklich mit? Für einen Anfänger in Sachen OS-Development ist dies sicher nicht einfach, hier ernsthaft mitzumischen.

    Das ist sogar noch schöngeredet, ich behaupte mal, daß man als Interessent eher abgeschreckt wird, weil's so viel ist 😮 . Ohne Blick aufs Ganze versteht man Details nicht und vice versa.

    Wenn Du jetzt darangehst, was über's OS- Proggen zu schreiben, dann solltest Du genau überlegen, wer als Zielgruppe in Frage kommt und ob Du die mit Deiner PrettyOS- Workgroup nicht schon erreicht hast. Die hehre Zielsetzung und leichte Verfügbarkeit hat mit dem Gähnfaktor X86 und einem Nutzwert (jenseits des Lernens) von Null zu kämpfen. Auf der anderen Seite sehe ich die Bastler, die noch immer nicht ausgestorben sind und die es jucken könnte, einen wie auch immer gearteten Riegel selbst zum Laufen zu bringen, weil ein Segger embOS wirklich Geld kostet.

    Ich habe mir vom Christkind ein Büchlein gewünscht, das embedded Linux auf ein ARM9- Board pflanzt, eins, das was ganz anderes zum Rennen bringt, wäre spannender. :xmas1:
    Das nur so als Hinweis, falls es Dir wirklich ernst wäre ...



  • Die Abstraktion von der CPU-Ebene ist nicht einfach, da ist es sicher einfacher erst mal ein MyOS mit x86 zu beginnen. Wie anspruchsvoll oder einfach ARM ist, weiß man erst, wenn man sich mit dem historischen x86 Gerümpel abgekämpft hat. Was wäre z.B. Linux ohne Windows? Im Übrigen wird da auch viel übertrieben, der Protected Mode ist schnell eingetütet. Das Schwierigste dabei ist sicher das Paging mit seinen Page Faults, aber das ist ja bezüglich PMM und VMM bereits ein allgemeines Prinzip, das man kennen lernen sollte. ARM Boards kosten darüber hinaus extra Geld und stellen damit an und für sich schon eine Hürde dar. :xmas1:



  • Erhard Henkes schrieb:

    @abc.w: Machst Du bei Linux als Developer wirklich mit? ...

    Ich darf beruflich Linux-Kernel Treiber entwickeln, aber sie sind alle so hardwarenah und Hardware abhängig, dass sie nicht in den Hauptzweig übernommen werden, und ausserdem sind sie alle nach geschriebenen und ungeschriebenen firmeninternen Codier-Richtlinien geschrieben (z.B. keine gotos, keine nicht initialisierten Variablen, keine Tabs, C89 oder so usw. Sinn sei dahingestellt), so dass sie mit Sicherheit mit Ekel abgelehnt werden... 🙂
    Sollen denn die Anfänger auf der Kernelebene mitmischen dürfen 😕
    Die Themen Kernel- und Treiberprogrammierung sind sicherlich komplex und das ist eben die Realität. Ich bin der Meinung, es geht nicht einfacher und es wird nicht einfacher sein, das muss man so akzeptieren. Wer sich einarbeiten möchte, bitte schön 🙂 Alles da, alle Quellen da, alle Tools da.
    Ich würde dem Linux-Anfänger empfehlen, zuallererst den Linux-Kernel selber konfigurieren und bauen lernen, im System installieren usw. Damit lernt man, welche Bestandtteile hat der Kernel, was sind Module, was macht Sinn, als Modul zu bauen und was nicht usw.
    Danach kann man in die Treiber-Programmierung einsteigen. Es gibt einige Bücher dazu.
    Dann langsam blickt man mehr und mehr durch, und es macht dann auch mehr Spass :xmas1:



  • abc.w schrieb:

    Alles da, alle Quellen da, alle Tools da. ... Dann langsam blickt man mehr und mehr durch, und es macht dann auch mehr Spass :xmas1:

    Ne, Spaß hat mir Linux nie gemacht, überall eine bornierte Blase von Vollcheckern, die aber nix erklären wollen/können. Mag sein, dass das jetzt nur eine persönliche Sache ist, aber '96 herum hätte ich lieber Pickel am Hintern gehabt, als mich mit diesen Heinis auseinanderzusetzen. Prägendes Kindheitserlebnis sozusagen.
    Auch heute noch sehe ich alles als "too much" an, um ernsthaft einen Einsteiger so an die OS- Programmierung heranführen zu wollen.

    Erhard Henkes schrieb:

    ARM Boards kosten darüber hinaus extra Geld und stellen damit an und für sich schon eine Hürde dar. :xmas1:

    Erstens kosten die fast nix, außerdem gibt es dafür auch Emulatoren. Welche Hürde meinst Du? Ein SOC an die USB zu plöppeln? Mehr isses eh nicht mehr.

    So, und jetzt hammas, warum so ein OS- Buch schlechte Karten hat:
    Der eine betet das Thorvalds- Vaterunser, der andere will nicht von X86 lassen und meine Nichtigkeit interessiert sich nur für embedded.

    Bleibt alles anders, cool, was? :xmas2:



  • Der eine betet das Thorvalds- Vaterunser, der andere will nicht von X86 lassen und meine Nichtigkeit interessiert sich nur für embedded.

    Linux ist sicher nicht der Weg für einen Einsteiger, obwohl es genügend Bücher zu Linux-Entwicklung gibt, wobei ich nicht wieß, ob man damit auch praktisch etwas anfangen kann.

    Aber bezüglich x86 oder ARM muss man eine Entscheidung treffen. Persönlich würde ich mich immer wieder für die im PC-Bereich immer noch vorwiegende x86-Architektur entscheiden, da das OS damit sowohl auf ausgedienten (z.B. 80386, 80486, Pentium von Intel oder kompatible Modelle von AMD) als auch auf aktuellen Rechnern mit x86-CPU betrieben werden kann. Als Nachteil nimmt man beim x86 die historisch gewachsene Komplexität (schon 9 Prozessor-Generationen) in Kauf. Über 30 Jahre CPU-Entwicklung hinterlassen ihre Spuren.

    Wenn man unbedingt für ARM ein OS schreiben will, da gibt es inzwischen preisgünstige Mainboards mit ARM-Prozessoren (siehe "FriendlyARM"), wobei ich die Anschlussmöglichkeiten in der Praxis persönlich noch nicht ausgetestet habe. Man würde einen Einsteiger damit jedoch voll neben die Kommunikation und das Wissen der weltweiten Hobby-OSDev-Gemeinde setzen. Das ist der Hauptgrund für einen Einstieg in x86. Man kann von dort aus sich weiter entwicklen, wenn man das möchte. So schlimm ist x86 nämlich auch nicht, lediglich A20-Gate, GDT und solche Sachen sind zu beherrschen und beim Paging zu berücksichtigen. Das geht aber schnell und spielt dann im Vordergrund der Programmierung keine Rolle mehr.



  • Erhard Henkes schrieb:

    Man würde einen Einsteiger damit jedoch voll neben die Kommunikation und das Wissen der weltweiten Hobby-OSDev-Gemeinde setzen.

    Ich weiß nicht, was Du damit meinst. iOS ist primär ein BSD- Derivat für ARM, soweit ich weiß, Android das Linux- Pendant. Zu Linux und BSD gibt es aber schon einen Haufen respektabler Standardwerke, muß keiner mehr was dazu machen.

    Erhard Henkes schrieb:

    Das ist der Hauptgrund für einen Einstieg in x86. Man kann von dort aus sich weiter entwicklen, wenn man das möchte. So schlimm ist x86 nämlich auch nicht, lediglich A20-Gate, GDT und solche Sachen sind zu beherrschen und beim Paging zu berücksichtigen. Das geht aber schnell und spielt dann im Vordergrund der Programmierung keine Rolle mehr.

    Naja, im Studium habe ich mit 8086ern gespielt, privat mit 68k (mein ST geht noch). Das war schon eine Art Kulturschock, mir kam X86 ASM wie Strafarbeit vor. Wollte eigentlich keine Prozessordiskussion anstoßen, sondern die Frage nach dem Nutzwert stellen.
    Keiner will seinen alten XT im Keller wiederbeleben und Atom- Boards sind doch ein Zacken teurer als ARM- Pendants, emuliert kriegste beide.
    In Zeiten, wo dutzende von OpenCores in FPGAs geladen oder komplett emuliert werden können, wirkt die Konzentration auf X86 schon etwas obsolet - man kann ja damit letztlich nix anfangen. Ein embedded Webserver "on a Chip" ist da schon was anderes.
    Ich mag Dir den Spaß bestimmt nicht vermiesen, aber genau in dem Sektor ist X86 aus bekannten Gründen unterrepräsentiert. Eine Leiche wird nicht spannender, wenn man sie in einem Rollstuhl mit Raketen dran festschnallt. :xmas1:



  • pointercrash() schrieb:

    ... und meine Nichtigkeit interessiert sich nur für embedded.

    Dann bist du ja bei GNU/Linux gut aufgehoben... schau doch mal im Quellcode des Linux Kernels unter arch/arm auf wie vielen Boards oder SoCs oder sonstiges, was einen oder mehrere ARM Kerne hat, der Linux Kernel läuft 🙂 Etwa 70 oder so? 🙂



  • abc.w schrieb:

    Dann bist du ja bei GNU/Linux gut aufgehoben... schau doch mal im Quellcode des Linux Kernels unter arch/arm auf wie vielen Boards oder SoCs oder sonstiges, was einen oder mehrere ARM Kerne hat, der Linux Kernel läuft 🙂 Etwa 70 oder so? 🙂

    Ich weiß, ich hab's (glaub ich) auch schon geschrieben, daß ich mir vom Christkind ein Büchlein wünsche, in dem geschrieben steht, wie man embLinux auf 'nem Toshiba ARM9 zusammenpflückt.
    Das ist für mich die (hoffentlich) passende Kragenweite, aber einem Anfänger wird das zuviel sein. Die Sachen zusammenzubinden ist aber noch immer nicht zwangsweise mit der Vermittlung des Verständnisses, was ein OS tut, verbunden.
    Für die ganz kleinen Plattformen ist Linux sowieso oversized, da ist eine Kiste wie Dunkels Contiki in jeglicher Hinsicht ressourcenschonender. 🙂



  • Na, was ist denn heutzutage schon eine kleine Plattform... vielleicht hältst du grad ein Handy in deiner Hand, auf dem ein Linux Kernel läuft und merkst nichts davon 😉
    Ich denke, ein von dir gewünschtes Büchlein gibt es bereits, nennt sich Linux from Scratch (LFS): http://www.linuxfromscratch.org/lfs/index.html
    Ehrlich gesagt: Ich habe es mal versucht, LFS auf meinem Rechner zu bauen, dann aber nicht zum Schluss durchgehalten. Man muss etwa zwei Tage Freizeit darauf opfern und dann kann man hier und da einen Fehler machen usw. und dann läuft das System nicht oder sonstiges. Aber es ist ja auch kein Wunder, ein praxisrelevantes Betriebssystem ist komplex und immer komplexer als man denkt (:xmas2:), auch wenn man jetzt wie im Falle LFS fertige "Komponenten" hat, also Kernel, Basisprogramme, Tools usw., die man ja "nur" selber bauen muss...
    :xmas1:



  • Eine Leiche wird nicht spannender, wenn man sie in einem Rollstuhl mit Raketen dran festschnallt.

    x86 als Leiche zu bezeichnen ist schon etwas vermessen, wenn man bedenkt, wieviele Prozessoren auf dieser Basis aufsetzen. Man sollte schon bei der Wahrheit bleiben. Selbstverständlich ist es interessant, einen alten PC mit eigenem Hobby-OS zum Laufen zu bekommen. Es geht ja nicht um praktische Nützlichkeit, sondern um Herausforderungen und Verstehen von Grundlagen. 🙂



  • pointercrash() schrieb:

    Eine Leiche wird nicht spannender, wenn man sie in einem Rollstuhl mit Raketen dran festschnallt. :xmas1:

    Doch.


Anmelden zum Antworten