Programmierung ist toll, denn man kann seiner Kreativität fast grenzenlose Freiheiten lassen. Das benutzen einer Programmiersprache, ist wie mit Fremdsprachen. Man lernt erstmal die Basics und muss das Erlernte benutzen, sonst vergisst man schnell wieder so einiges. So verhält es sich auch bei Programmieren. Man kann jeder Sprache lernen und tolle Dinge erschaffen, wenn man aber kein „Projekt“ hat um das Erlernte anzuwenden – geht das Gelernte schnell wieder verloren.
Als Programmierer habe ich auf Arbeit eine Menge Projekte – wo ich meine Sprache anwenden kann. Im privaten Bereich hatte ich jedoch immer das Problem, kein großes Ziel für meine Fertigkeiten zu haben. Kleinere Projekte waren schnell gelöst und schafften nur kurzzeitige Befriedigung. Auch schaute ich über den Tellerrand und beschäftigte mich neben C# noch mit Python oder Swift.

„Hello World!“ in C.
Nun bin ich auch nicht so der Gamer bzw. die Zeiten der Computerspielerei sind vorbei – somit hat es mich auch nie so wirklich gereizt ein eigenes Spiel zu programmieren. Ich bin sowieso eher der technische Typ und interessiere mich für so Sachen wie ein Computer oder ein Prozessor funktioniert, Netzwerke funken oder was in der IoT so möglich ist. Und darum wollte ich am Liebsten immer etwas Programmieren was in diesem Bereich fällt, bis ich eben auf die Idee mit dem eigenen Bootloader gekommen bin.
Was ein Bootloader ist? Es ist eine spezielle Software die von der Firmware des Mainboards von einem startfähigen Medium, wie einer Festplatte, einer CD oder eines USB-Sticks geladen und ausgeführt wird. Und dieser Bootloader lädt dann einfach ausgedrückt das Betriebssystem. Wer ausführlichere Infos über Bootloader wissen mag, dem empfehle ich an dieser Stelle den Artikel auf Wikipedia.
Jedoch sei angemerkt, dass auch ich noch sehr ausführlich darauf eingehen werde – denn schließlich soll es hier darum gehen meinen eigenen Bootloader zu Programmieren.
Und kommen wir hierbei gleich zu ersten Hürde, denn bisher haben ich auf Arbeit mit der Programmiersprache C# gearbeitet. Diese ist objektorientiert, dass heißt das Gerüst einer Software an der Wirklichkeit auszurichten. Geht es im Programm um die Verwaltung eines Waldes, wird man sicherlich eine Klasse Baum oder Baumart haben im Hintergrund des Programmes haben. Ein Nachteil bei den objektorientieren Programmiersprachen ist jedoch, sie nicht sehr „Hardware-Nah“ sind – so dass sie zB. bei der Ansteuerung von z.B. Kameras oder Laufwerken nicht ohne bereitgestellte (Software)-Schnittstelle solche Geräte nicht ansteuern kann.
Das kann als einer der Urprogrammiersprachen C. Ja, einfach C. Entwickelt von Dennis Ritchie & Bell Labs schon 1972 ist sie auch heute noch die Sprache, wenn es darum geht Systeme – Hardware-Nahe anzusprechen. Sie greift dabei direkt auf den Speicherbereich eines Systems zu. Klingt komisch? Keine Angst, denn auch das versuche ich in dieser Serie verständlich zu beantworten. C# zum Beispiel ist aus C entstanden, sowie viele andere neue Programmiersprachen.
Heißt also ich muss eine neue Programmiersprache erlernen, was jetzt im Moment nicht schlimm ist. Denn versteht man erstmal die Denk- und Funktionsweise hinter der Programmierung (die Grammatik), nimmt das schon so einiges am Unbekannten weg. So habe ich diese Woche gleich Nägel mit Köpfen gemacht und mir ein dickes Buch über C gekauft – um jetzt erstmal also in C einzusteigen und langfristig dem Ziel meines selbstentwickelten Bootloader näher zu kommen.
Ich schätze in vielleicht 1-2 Jahre werde ich da wohl erste Ergebnisse präsentieren können, aber das ist mir bewusst und auch gewollt. Ich freue mich viel mehr darüber, etwas gefunden zu haben – was mich wirklich interessiert, reizt zu entwickeln und worin ich auch einen Sinn sehe. Die ganze Entwicklung bis zum lauffähigen Programm werde ich monatlich hier niederschreiben und wer mag kann mich gerne auf diesen Weg begleiten. Tipp, Fragen, Diskussionen oder Anregungen sind jederzeit herzlich willkommen und praktisch ein Muss! 😊
Also legen wir mal los…
Stephan
2 Gedanken zu “Bootloader – Mein Langzeitprojekt #1”