Cafe OS: Unterschied zwischen den Versionen
(Stub.) |
ICON (Diskussion | Beiträge) (zlib Link auf Tag statt auf Commit) |
||
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Cafe OS ist der PowerPC-Teil des Betriebssystem der Wii U. Es besteht aus dem Cafe-OS-Kernel, dem ausführbaren Loader und Systembibliotheken. Anders als auf der Wii, wo Spiele mit vollem Hardwarezugriff auf dem "blanken Metall" liefen, laufen Wii-U-Spiele vollständig voneinander isoliert unter der Aufsicht des Kernels. Alle Applikationen sind - genau wie die Bibliotheken - [[RPL|modifizierte ELF-Dateien]] und werden dynamisch mit den Bibliotheken verbunden, um Zugriff auf OS-Services zu erhalten. Cafe OS enthält auch einige Systemprozesse, wie das HOME-Menü und den Error Handler. | |||
Cafe OS ist | |||
Der ARM-Teil des Betriebssystems heißt [[IOSU]]. | |||
* http://wiiubrew.org/wiki/Cafe_OS | |||
== Architektur == | |||
=== Kernel === | |||
Der Kernel läuft im Supervisor-Modus auf dem PowerPC und führt einfache Aufgabe eines Mikrokernels aus. Er ist verantwortlich für die Prozessisolation, Speichermanagement und Interrupt Dispatching, als auch die Kommunikation mit [[IOSU]]. Cafe OS Applikationen laufen als Usermode-Prozesse mit separierten Adressräumen und W^X ([[wikipedia:W^X|Write xor Execute]]) Speicherschutz. Der Kernel stellt einfache Systemaufrufe zum Starten von Prozessen zur Verfügung. | |||
=== Prozesse === | |||
Ein Prozess in Cafe OS stellt eine laufende Applikation mit eigenem Code, Speicher und Rechten dar. Cafe OS führt nur den Code eines einzigen Prozesses auf einmal aus, kann aber Daten von mehreren Prozessen gleichzeitig im Speicher halten und zwischen diesen wechseln. Anstatt das Ausführen von irgendwelchen Prozessen zu erlauben, wird RAM für eine einzige Vordergrund-, eine Hintergrund-Applikation und mehreren anderen, speziellen Prozessen reserviert. Jedem laufenden Prozess wird eine einzigartige Kennung zugewiesen, die RAMPID genannt wird: | |||
{| class="wikitable" | |||
|- | |||
! RAMPID | |||
! Beschreibung | |||
! IOS-Name | |||
|- | |||
| 0 | |||
| Cafe OS | |||
| COS-KERNEL | |||
|- | |||
| 1 | |||
| root.rpx | |||
| COS-ROOT | |||
|- | |||
| 2 | |||
| ??? | |||
| COS-02 | |||
|- | |||
| 3 | |||
| ??? | |||
| COS-03 | |||
|- | |||
| 4 | |||
| Hintergrund-Applikation | |||
| COS-OVERLAY | |||
|- | |||
| 5 | |||
| HOME-Menü | |||
| COS-HBM | |||
|- | |||
| 6 | |||
| Fehleranzeige | |||
| COS-ERROR | |||
|- | |||
| 7 | |||
| Vordergrund-Applikation | |||
| COS-MASTER | |||
|} | |||
Zusätzlich zur RAMPID besitzen Prozesse noch eine andere Art von Prozess-ID, die "fixed Process ID" (PFID) genannt wird. Anstatt anzuzeigen, welchen Teil des Speichers ein Prozess belegt, zeigt PFID an, welche Applikation/welche Aufgabe läuft (Browser, Spiel, eShop, etc.). Cafe OS mappt PFIDs zu den RAMPID, die diese belegen (beispielsweise ist ein Spiel RAMPID 7, weil es im Vordergrund läuft): | |||
{| class="wikitable" | |||
|- | |||
! PFID | |||
! Beschreibung | |||
! RAMPID | |||
|- | |||
| 0 | |||
| Cafe-OS-Kernel | |||
| 0 | |||
|- | |||
| 1 | |||
| root.rpx | |||
| 1 | |||
|- | |||
| 2 | |||
| Wii-U-Menü | |||
| 7 | |||
|- | |||
| 3 | |||
| TVii | |||
| ??? | |||
|- | |||
| 4 | |||
| Elektronische Bedienungsanleitung | |||
| ??? | |||
|- | |||
| 5 | |||
| HOME-Menü | |||
| 5 | |||
|- | |||
| 6 | |||
| Fehleranzeige | |||
| 6 | |||
|- | |||
| 7 | |||
| "MiniMiiverse" | |||
| ??? | |||
|- | |||
| 8 | |||
| [[Wii U Internetbrowser]] | |||
| 4 | |||
|- | |||
| 9 | |||
| [[Miiverse]] | |||
| ??? | |||
|- | |||
| 10 | |||
| eShop | |||
| ??? | |||
|- | |||
| 11 | |||
| COS-FLV | |||
| ??? | |||
|- | |||
| 12 | |||
| Download-Manager | |||
| ??? | |||
|- | |||
| 13 | |||
| COS-RSVD-13 | |||
| ??? | |||
|- | |||
| 14 | |||
| COS-RSVD-14 | |||
| ??? | |||
|- | |||
| 15 | |||
| Spiel | |||
| 7 | |||
|} | |||
=== Loader === | |||
Der Loader ist verantwortlich für das Laden von Bibliotheken im RPL-Format und ausführbaren Dateien in den Speicher. Er ist eine Standard ELF-Executable mit dem Namen "loader.elf" und enthält eine statisch gelinkte Kopie von zlib, wahrscheinlich zum Dekomprimieren von Sektionen von RPL-Dateien. | |||
=== Bibliotheken === | |||
Cafe OS Applikationen linken dynamisch mit Systembibliotheken, um Zugriff auf OS-Services zu erhalten. Diese OS-Services beinhalten Speichermanagement, Grafiken, Audio und Controller-Eingabe. Alle Bibliotheken sind [[RPL|RPL-Dateien]], eine Modifikation vom Standard ELF-Format mit komprimierten Sektionen und mehr Windows-artigem, dynamischem Linking. Die Haupt-Systembibliotheken sind unten gelistet: | |||
{| class="wikitable" | |||
|- | |||
! Name | |||
! Beschreibung | |||
|- | |||
| avm.rpl | |||
| '''A'''udio/'''V'''ideo-'''M'''anager | |||
|- | |||
| camera.rpl | |||
| GamePad-Kamera | |||
|- | |||
| coreinit.rpl | |||
| Kernel, Speicher und Dateisystem | |||
|- | |||
| dc.rpl | |||
| '''D'''isplay-'''C'''ontroller | |||
|- | |||
| dmae.rpl | |||
| DMA (Direct Memory Access/Speicherdirektzugriff) | |||
|- | |||
| drmapp.rpl | |||
| Digitale Rechteverwaltung (DRM) | |||
|- | |||
| erreula.rpl | |||
| Fehleranzeiger | |||
|- | |||
| gx2.rpl | |||
| Grafiken | |||
|- | |||
| h264.rpl | |||
| Unterstützung für H.264 | |||
|- | |||
| lzma920.rpl | |||
| LZMA-Komprimierung | |||
|- | |||
| mic.rpl | |||
| GamePad-Mikrofon | |||
|- | |||
| nfc.rpl | |||
| Low-Level NFC-Bibliothek | |||
|- | |||
| nio_prof.rpl | |||
| IO-Profiler | |||
|- | |||
| nlibcurl.rpl | |||
| libcurl v7.21.7, Funktionen gleichen sich mit der [https://curl.haxx.se/libcurl/c/ offiziellen Bibliothek], beinhaltet [http://wiiubrew.org/wiki/Nlibcurl.rpl extra Optionen für curl_easy_setopt] | |||
|- | |||
| nlibnss.rpl | |||
| libnss | |||
|- | |||
| nlibnss2.rpl | |||
| | |||
|- | |||
| nn_ac.rpl | |||
| Nintendo Network Auto Connection | |||
|- | |||
| nn_acp.rpl | |||
| Nintendo Network Account/Access Protection | |||
|- | |||
| nn_act.rpl | |||
| Nintendo Network Accounts | |||
|- | |||
| nn_aoc.rpl | |||
| Nintendo Network Add-On-Content | |||
|- | |||
| nn_boss.rpl | |||
| Nintendo Network BOSS ([[SpotPass]]) | |||
|- | |||
| nn_ccr.rpl | |||
| | |||
|- | |||
| nn_cmpt.rpl | |||
| Verwaltet Boot in den [[vWii|Wii-Modus]] | |||
|- | |||
| nn_dlp.rpl | |||
| 3DS Download-Play-Hosting-Bibliothek | |||
|- | |||
| nn_ec.rpl | |||
| Nintendo Network E-Commerce | |||
|- | |||
| nn_fp.rpl | |||
| Nintendo Network Friend Presence | |||
|- | |||
| nn_hai.rpl | |||
| Hilfsbibliothek für nn_cmpt.rpl für Wii VC-Titel | |||
|- | |||
| nn_hpad.rpl | |||
| Controller? | |||
|- | |||
| nn_idbe.rpl | |||
| Downloadet und entschlüsselt Spiele-Icons von einer [[IDBE|Online-Icon-Datenbank]] | |||
|- | |||
| nn_ndm.rpl | |||
| Daemons? | |||
|- | |||
| nn_nets2.rpl | |||
| Mehr Netzwerk-Funktionen | |||
|- | |||
| nn_nfp.rpl | |||
| Nintendo Network Figurine Platform (amiibo) | |||
|- | |||
| nn_nim.rpl | |||
| | |||
|- | |||
| nn_olv.rpl | |||
| Olive/OLV - [[Miiverse]] | |||
|- | |||
| nn_pdm.rpl | |||
| Aktivitätslog-Daten (Spielzeit, etc.) | |||
|- | |||
| nn_save.rpl | |||
| Speicherdaten-Zugriff | |||
|- | |||
| nn_sl.rpl | |||
| | |||
|- | |||
| nn_spm.rpl | |||
| Speicher-relevante Funktionen (USB?) | |||
|- | |||
| nn_temp.rpl | |||
| TEMP-Bibliothek (für temporäre Dateien) | |||
|- | |||
| nn_uds.rpl | |||
| Bibliothek zum Hostne von lokalen 3DS WLAN-Netzwerken | |||
|- | |||
| nn_vctl.rpl | |||
| | |||
|- | |||
| nsysccr.rpl | |||
| DRH-Kommunikation (GamePad und RPC) | |||
|- | |||
| nsyshid.rpl | |||
| Human Interface Device Bibliothek (USB-Eingabegeräte) | |||
|- | |||
| nsyskbd.rpl | |||
| USB-Tastatur-Bibliothek | |||
|- | |||
| nsysnet.rpl | |||
| BSD-Sockets, Netzwerkkonfiguration und SSL | |||
|- | |||
| nsysuhs.rpl | |||
| Low-Level USB-Zugriff | |||
|- | |||
| nsysuvd.rpl | |||
| | |||
|- | |||
| ntag.rpl | |||
| NTAG High-Level NFC-Bibliothek | |||
|- | |||
| padscore.rpl | |||
| Andere Controller (Wiimote, Balance Board...) | |||
|- | |||
| proc_ui.rpl | |||
| | |||
|- | |||
| snd_core.rpl | |||
| Sound-1 Core | |||
|- | |||
| snd_user.rpl | |||
| Sound-1 User | |||
|- | |||
| sndcore2.rpl | |||
| Sound-2 Core | |||
|- | |||
| snduser2.rpl | |||
| Sound-2 User | |||
|- | |||
| swkbd.rpl | |||
| Software-Tastatur | |||
|- | |||
| sysapp.rpl | |||
| Wechseln zu/Laden von Applikationen | |||
|- | |||
| tcl.rpl | |||
| Texture-Core-Bibliothek | |||
|- | |||
| tve.rpl | |||
| TV-Engine | |||
|- | |||
| uac.rpl | |||
| DRH-Kommunikation (GamePad-Mikrofon) | |||
|- | |||
| uac_rpl.rpl | |||
| | |||
|- | |||
| usb_mic.rpl | |||
| | |||
|- | |||
| uvc.rpl | |||
| DRH-Kommunikation (GamePad-Kamera) | |||
|- | |||
| uvd.rpl | |||
| AMDs [http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/OpenVideo_Decode_API.PDF OpenVideo-Decode-Bibliothek] mit einigen geänderten Funktionsnamen | |||
|- | |||
| vpad.rpl | |||
| GamePad-Eingabe | |||
|- | |||
| vpadbase.rpl | |||
| GamePad-Basis-Bibliothek | |||
|- | |||
| zlib125.rpl | |||
| zlib v1.2.5, Funktionen gleichen sich mit der [https://github.com/madler/zlib/tree/v1.2.5 offiziellen Bibliothek] | |||
|} | |||
== Einzelnachweis == | |||
* [http://wiiubrew.org/wiki/Cafe_OS WiiUBrew] | |||
{{Top Icon Wii U}} | |||
[[Kategorie:Nintendo Wii U]] |
Aktuelle Version vom 9. September 2022, 23:15 Uhr
Cafe OS ist der PowerPC-Teil des Betriebssystem der Wii U. Es besteht aus dem Cafe-OS-Kernel, dem ausführbaren Loader und Systembibliotheken. Anders als auf der Wii, wo Spiele mit vollem Hardwarezugriff auf dem "blanken Metall" liefen, laufen Wii-U-Spiele vollständig voneinander isoliert unter der Aufsicht des Kernels. Alle Applikationen sind - genau wie die Bibliotheken - modifizierte ELF-Dateien und werden dynamisch mit den Bibliotheken verbunden, um Zugriff auf OS-Services zu erhalten. Cafe OS enthält auch einige Systemprozesse, wie das HOME-Menü und den Error Handler.
Der ARM-Teil des Betriebssystems heißt IOSU.
Architektur
Kernel
Der Kernel läuft im Supervisor-Modus auf dem PowerPC und führt einfache Aufgabe eines Mikrokernels aus. Er ist verantwortlich für die Prozessisolation, Speichermanagement und Interrupt Dispatching, als auch die Kommunikation mit IOSU. Cafe OS Applikationen laufen als Usermode-Prozesse mit separierten Adressräumen und W^X (Write xor Execute) Speicherschutz. Der Kernel stellt einfache Systemaufrufe zum Starten von Prozessen zur Verfügung.
Prozesse
Ein Prozess in Cafe OS stellt eine laufende Applikation mit eigenem Code, Speicher und Rechten dar. Cafe OS führt nur den Code eines einzigen Prozesses auf einmal aus, kann aber Daten von mehreren Prozessen gleichzeitig im Speicher halten und zwischen diesen wechseln. Anstatt das Ausführen von irgendwelchen Prozessen zu erlauben, wird RAM für eine einzige Vordergrund-, eine Hintergrund-Applikation und mehreren anderen, speziellen Prozessen reserviert. Jedem laufenden Prozess wird eine einzigartige Kennung zugewiesen, die RAMPID genannt wird:
RAMPID | Beschreibung | IOS-Name |
---|---|---|
0 | Cafe OS | COS-KERNEL |
1 | root.rpx | COS-ROOT |
2 | ??? | COS-02 |
3 | ??? | COS-03 |
4 | Hintergrund-Applikation | COS-OVERLAY |
5 | HOME-Menü | COS-HBM |
6 | Fehleranzeige | COS-ERROR |
7 | Vordergrund-Applikation | COS-MASTER |
Zusätzlich zur RAMPID besitzen Prozesse noch eine andere Art von Prozess-ID, die "fixed Process ID" (PFID) genannt wird. Anstatt anzuzeigen, welchen Teil des Speichers ein Prozess belegt, zeigt PFID an, welche Applikation/welche Aufgabe läuft (Browser, Spiel, eShop, etc.). Cafe OS mappt PFIDs zu den RAMPID, die diese belegen (beispielsweise ist ein Spiel RAMPID 7, weil es im Vordergrund läuft):
PFID | Beschreibung | RAMPID |
---|---|---|
0 | Cafe-OS-Kernel | 0 |
1 | root.rpx | 1 |
2 | Wii-U-Menü | 7 |
3 | TVii | ??? |
4 | Elektronische Bedienungsanleitung | ??? |
5 | HOME-Menü | 5 |
6 | Fehleranzeige | 6 |
7 | "MiniMiiverse" | ??? |
8 | Wii U Internetbrowser | 4 |
9 | Miiverse | ??? |
10 | eShop | ??? |
11 | COS-FLV | ??? |
12 | Download-Manager | ??? |
13 | COS-RSVD-13 | ??? |
14 | COS-RSVD-14 | ??? |
15 | Spiel | 7 |
Loader
Der Loader ist verantwortlich für das Laden von Bibliotheken im RPL-Format und ausführbaren Dateien in den Speicher. Er ist eine Standard ELF-Executable mit dem Namen "loader.elf" und enthält eine statisch gelinkte Kopie von zlib, wahrscheinlich zum Dekomprimieren von Sektionen von RPL-Dateien.
Bibliotheken
Cafe OS Applikationen linken dynamisch mit Systembibliotheken, um Zugriff auf OS-Services zu erhalten. Diese OS-Services beinhalten Speichermanagement, Grafiken, Audio und Controller-Eingabe. Alle Bibliotheken sind RPL-Dateien, eine Modifikation vom Standard ELF-Format mit komprimierten Sektionen und mehr Windows-artigem, dynamischem Linking. Die Haupt-Systembibliotheken sind unten gelistet:
Name | Beschreibung |
---|---|
avm.rpl | Audio/Video-Manager |
camera.rpl | GamePad-Kamera |
coreinit.rpl | Kernel, Speicher und Dateisystem |
dc.rpl | Display-Controller |
dmae.rpl | DMA (Direct Memory Access/Speicherdirektzugriff) |
drmapp.rpl | Digitale Rechteverwaltung (DRM) |
erreula.rpl | Fehleranzeiger |
gx2.rpl | Grafiken |
h264.rpl | Unterstützung für H.264 |
lzma920.rpl | LZMA-Komprimierung |
mic.rpl | GamePad-Mikrofon |
nfc.rpl | Low-Level NFC-Bibliothek |
nio_prof.rpl | IO-Profiler |
nlibcurl.rpl | libcurl v7.21.7, Funktionen gleichen sich mit der offiziellen Bibliothek, beinhaltet extra Optionen für curl_easy_setopt |
nlibnss.rpl | libnss |
nlibnss2.rpl | |
nn_ac.rpl | Nintendo Network Auto Connection |
nn_acp.rpl | Nintendo Network Account/Access Protection |
nn_act.rpl | Nintendo Network Accounts |
nn_aoc.rpl | Nintendo Network Add-On-Content |
nn_boss.rpl | Nintendo Network BOSS (SpotPass) |
nn_ccr.rpl | |
nn_cmpt.rpl | Verwaltet Boot in den Wii-Modus |
nn_dlp.rpl | 3DS Download-Play-Hosting-Bibliothek |
nn_ec.rpl | Nintendo Network E-Commerce |
nn_fp.rpl | Nintendo Network Friend Presence |
nn_hai.rpl | Hilfsbibliothek für nn_cmpt.rpl für Wii VC-Titel |
nn_hpad.rpl | Controller? |
nn_idbe.rpl | Downloadet und entschlüsselt Spiele-Icons von einer Online-Icon-Datenbank |
nn_ndm.rpl | Daemons? |
nn_nets2.rpl | Mehr Netzwerk-Funktionen |
nn_nfp.rpl | Nintendo Network Figurine Platform (amiibo) |
nn_nim.rpl | |
nn_olv.rpl | Olive/OLV - Miiverse |
nn_pdm.rpl | Aktivitätslog-Daten (Spielzeit, etc.) |
nn_save.rpl | Speicherdaten-Zugriff |
nn_sl.rpl | |
nn_spm.rpl | Speicher-relevante Funktionen (USB?) |
nn_temp.rpl | TEMP-Bibliothek (für temporäre Dateien) |
nn_uds.rpl | Bibliothek zum Hostne von lokalen 3DS WLAN-Netzwerken |
nn_vctl.rpl | |
nsysccr.rpl | DRH-Kommunikation (GamePad und RPC) |
nsyshid.rpl | Human Interface Device Bibliothek (USB-Eingabegeräte) |
nsyskbd.rpl | USB-Tastatur-Bibliothek |
nsysnet.rpl | BSD-Sockets, Netzwerkkonfiguration und SSL |
nsysuhs.rpl | Low-Level USB-Zugriff |
nsysuvd.rpl | |
ntag.rpl | NTAG High-Level NFC-Bibliothek |
padscore.rpl | Andere Controller (Wiimote, Balance Board...) |
proc_ui.rpl | |
snd_core.rpl | Sound-1 Core |
snd_user.rpl | Sound-1 User |
sndcore2.rpl | Sound-2 Core |
snduser2.rpl | Sound-2 User |
swkbd.rpl | Software-Tastatur |
sysapp.rpl | Wechseln zu/Laden von Applikationen |
tcl.rpl | Texture-Core-Bibliothek |
tve.rpl | TV-Engine |
uac.rpl | DRH-Kommunikation (GamePad-Mikrofon) |
uac_rpl.rpl | |
usb_mic.rpl | |
uvc.rpl | DRH-Kommunikation (GamePad-Kamera) |
uvd.rpl | AMDs OpenVideo-Decode-Bibliothek mit einigen geänderten Funktionsnamen |
vpad.rpl | GamePad-Eingabe |
vpadbase.rpl | GamePad-Basis-Bibliothek |
zlib125.rpl | zlib v1.2.5, Funktionen gleichen sich mit der offiziellen Bibliothek |
Einzelnachweis