81
Offtopic / Re: Rutsch ins 2016
« am: 31. December 2015, 22:56 »
Jo.
29. March 2024, 06:34
Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.
Da ich selbst mit dem System Raspbian sehr unzufrieden bin! Wegen der Bootdauer, der Initialisierung des Desktops und der rechen zeit einzelner Daten !Normale Betriebssysteme sind eigentlich fast nie CPU-begrenzt, sondern I/O- und Speicher-begrenzt. Auf dem Prinzip basieren batteriebetriebene Geräte (die CPU braucht nahezu keinen Strom, weil sie fast nichts zu tun hat, also ergibt sich die Akkulaufzeit relativ genau aus dem Stromverbrauch von Display, RAM und Flash). Daher - wie Jidder schrieb - wirst du deine CPU auch mit einem extrem effizientem Betriebssystem nicht nennenswert effektiver ausnutzen können als mit Raspbian. Der Linux-Kernel ist schon ziemlich effizient.
Aber ein PCI Gerät kann in den BARs auch nach IO-Ports verlangen. Das wird durch eine 1 in Bit 0 im BAR angezeigt. ein Massenspeichercontroller für ATA oder SATA würde da z.B. die standard Ports 0x1F0 bis 0x1F7 haben.Ja, bei solchen Geräten weißt du dann genau, dass an den betreffenden I/O-Ports ein Gerät hängt und brauchst nicht rumzuprobieren.
Initialisiere einfach alles, was du brauchst, und ignoriere den Rest. Damit fährst du für den Anfang gut genug.ZitatDas weiß ich nicht. Ich kann mir aber gut vorstellen, dass manche BIOSse nur das initialisieren, was sie zum booten brauchen.Soll ich also am besten alle Geräte neu initialisieren? Das stelle ich mir nur im Falle von I/O Ports schwer vor, da ich nicht weiß, welche Ports schon vom System benutzt werden...
Das Adressregister ist aufgeteilt in Bus, Gerät und Funktion. Damit habe ich doch schon mehrere Busse. Wofür dann noch Bridges?Bridges sind ein Hardware-Feature. Die kriegst du, weil die Hardware so gebaut ist, und vermutlich kannst du sie auch erstmal ignorieren.
In dem Falle hat der Treiber PCI einfach eine Methode "rescan", die erneut nach Geräten sucht, aber nur für neue Geräte die Treiber lädt.Ja, klingt gut.
Ja, aber das kann man auch einfacher haben: Ein Array aus 26 Einträgen, wo jeweils ein Handle auf eine Dateisystems-Instanz abgelegt wird, und zwei Funktionen GibMirLaufwerksbuchstaben() und IchGebLaufwerksbuchstabenZurueck().Zitatoder jedes Dateisystem stellt sein eigenes VFS-Interface bereit ("Laufwerksbuchstaben").Die Idee gefällt mir, weil ich sowieso auf Laufwerksbuchstaben hinaus wollte. Aber dise Buchstaben müssen ja auch verwaltet werden. (Damit es keine doppelten gibt) Also werde ich doch ein zentrales VFS benötigen...
Eine PCI-PCI-Bridge schenkt dir einen neuen PCI-Bus, nachdem du sie initialisiert hast. Aber was ich meinte, war allgemeiner. Wenn du z.B. ein Notebook mit CardBus-Schnittstelle hast, dann ist diese Schnittstelle ein "PCI-Gerät". Und wenn du den Treiber für dieses Gerät lädst, dann taucht ein neuer PCI-Bus auf, mit der evtl. eingesteckten Karte drin. Entweder, dein Kernel erzeugt dann ein Event "neue Hardware gefunden", oder du musst alle deine PCI-Treiber neu laden, damit sie vielleicht jetzt etwas finden, was sie vorher nicht gefunden haben.Zitatdass du die Treiber in einer gewissen Reihenfolge laden musst, und dass du gewisse Treiber u.U. auch mehrfach laden musst (z.B. PCI-PCI-Bridges).Das mit den PCI-PCI-Bridges verstehe ich noch nicht so ganz. Ich weiß, dass sie 2 Busse miteinander verbinden, aber sind die nicht schon vom BIOS initialisiert?
Ist nicht alles vom BIOS initialisiert was PCI betrifft?Das weiß ich nicht. Ich kann mir aber gut vorstellen, dass manche BIOSse nur das initialisieren, was sie zum booten brauchen.
Edit: Vielleicht sollte ich einfach alle Treiber in den Kernel integrieren. Das ist ja nur ein Hobbyprojekt und so groß wird das sicher auch nicht.Dann brauchst du dir über meine Hinweise auch keine großen Gedanken machen.
Wer und wie erkennt wann, welcher Treiber benötigt wird? Um bei den Dateisystemen zu bleiben: Der ATA Treiber erkennt eine Festplatte, wie erkenne ich, ob ich eine Instanz von FAT, EFS, oder sonstwas brauche? Soll einfach jeder Treiber mal geladen und getestet werden?Im Falle einer Festplatte brauchst du vermutlich erstmal einen Partitions-Layer, der erstmal MBR (ggf. GPT) zerpflückt. Wenn der durchgelaufen ist, dann hast du statt einer Festplatte mehrere voneinander streng zu trennende Blöcke (Partitionen), und du kennst von jeder Partition den Typen (= Dateisystem). Da die Typen nicht immer eindeutig sind (Linux-Partitionen haben alle die MBR-ID 0x83), kannst du dafür einfach eine feste Liste von Dateisystemen nacheinander ausprobieren.
Ich wollte erstmal einfach alle Treiber aus dem Verzeichnis Driver laden. Wahrscheinlich erstelle ich eine Liste pro Interface mit den zugehörigen Treibern.Je nachdem, was du für Hardware unterstützen möchtest, musst du unterscheiden zwischen erkennbaren und nicht erkennbaren Geräten.
PCI Treiber durchsucht alle PCI Geräte, für jeden gefundenen DiskController erstellt er eine Instanz des zugehörigen Treibers, dieser erstellt pro angeschlossenem ATA/ATAPI Device wieder eine Instanz, diese wiederum pro Dateisystem ebenfalls eine Instanz. Aber am Ende muss es genau eine Instanz des VFS Treibers geben, der dann alle Instanzen der Dateisysteme zusammenführt.Exakt. Entweder, alle aktiven Dateisysteme müssen sich im einzigen VFS-Treiber anmelden ("Mounten"), oder jedes Dateisystem stellt sein eigenes VFS-Interface bereit ("Laufwerksbuchstaben").