KINGx - Das inoffizielle PlayStation Forum & News Portal
Slim Memory - Druckversion

+- KINGx - Das inoffizielle PlayStation Forum & News Portal (http://www.kingx.de/forum)
+-- Forum:    PS Vita / PSP (/forumdisplay.php?fid=1)
+--- Forum: Homebrew (/forumdisplay.php?fid=8)
+---- Forum: Development (/forumdisplay.php?fid=34)
+---- Thema: Slim Memory (/showthread.php?tid=26588)


Slim Memory - Chaosduckman - 12.11.2010 13:46

Huhu Tongue
Ich habe 2 Frage und will mich kurz fassen Big Grin
Ist 0x0A000000 die statische Addresse zu den extra 32 Mbs der Slim?
Ist der Speicherbereich User oder Kernel Space?

Ich bin im Web auf wiedersprüchliche Aussagen gestoßen,
deshalb hoffe ich das mir hier jemand diese beiden Fragen mit "an Sicherheit grenzender Warscheinlichkeit" beantworten kann ;-)


RE: Slim Memory - HacKmaN - 12.11.2010 14:22

Chaosduckman :
Huhu Tongue
Ich habe 2 Frage und will mich kurz fassen Big Grin
Ist 0x0A000000 die statische Addresse zu den extra 32 Mbs der Slim?
Ist der Speicherbereich User oder Kernel Space?

Ich bin im Web auf wiedersprüchliche Aussagen gestoßen,
deshalb hoffe ich das mir hier jemand diese beiden Fragen mit "an Sicherheit grenzender Warscheinlichkeit" beantworten kann ;-)


1. Ja, 0x0A000000 ist die Start-Adresse der extra 32Mbs.
2. IIRC sind sind diese Adressen nur im KernelMode erreichbar.


RE: Slim Memory - Chaosduckman - 12.11.2010 17:48

Das mit dem nur im Kernel Mode erreichbar sollte sich widerlegen lassen:

Code:
/**
* Sets the partition 2 and 8  memory for next loadexec.
*
* @param p2 - The size in MB for the user partition. Must be > 0
* @param p8 - The size in MB for partition 8. Can be 0.
*
* @returns 0 on success, < 0 on error.
* This function is only available in the slim. The function will fail
* if p2+p8 > 52 or p2 == 0
*/
int sctrlHENSetMemory(u32 p2, u32 p8);

Weiß aber nicht ob die Funktion funktioniert ;-)


RE: Slim Memory - HacKmaN - 12.11.2010 17:55

Chaosduckman :
Das mit dem nur im Kernel Mode erreichbar sollte sich widerlegen lassen:

Code:
/**
* Sets the partition 2 and 8  memory for next loadexec.
*
* @param p2 - The size in MB for the user partition. Must be > 0
* @param p8 - The size in MB for partition 8. Can be 0.
*
* @returns 0 on success, < 0 on error.
* This function is only available in the slim. The function will fail
* if p2+p8 > 52 or p2 == 0
*/
int sctrlHENSetMemory(u32 p2, u32 p8);

Weiß aber nicht ob die Funktion funktioniert ;-)


Diese Funktion wird von der Systemctrl (ein CFW Modul) per Syscall Modus exportiert, und ist damit für User Module benutzbar. Ich hab mit meiner Aussage gemeint dass man die extra-32-Mbs nicht per Zeiger erreichen kann, und auf OFWs ist es für User Module unmöglich auf den extra RAM zuzugreifen.

Die Funktion oben erlaubt, den RAM der RAM-Partitionen P2 (User 1) und P8 (??? Ich denk mal Slim Memory) aufzuteilen. Wenn du z.B.

Code:
sctrlHENSetMemory(52, 0);


schreibst, ist P2 52Mbs groß, wärend P8 nicht mehr wirklich existiert.
Die Änderungen werden beim nächsten Kernel Reboot übernommen.


RE: Slim Memory - Chaosduckman - 12.11.2010 18:09

Natürlich kann man mit dem Zeiger auf den Speicherbereich zugreifen.
Davor muss man nur den Speicher mit sceKernelSetDdrMemoryProtection() "allocen".

Aber mit der OFW hast du Recht. Aber warum baut Sony extra Ram ein und benutzt davon ca. 1 MB?!
( Zumindest bei MHF Tongue )

Aber Danke für dein Code Beispiel Big Grin


RE: Slim Memory - HacKmaN - 12.11.2010 18:17

Chaosduckman :
Natürlich kann man mit dem Zeiger auf den Speicherbereich zugreifen.
Davor muss man nur den Speicher mit sceKernelSetDdrMemoryProtection() "allocen".

Aber mit der OFW hast du Recht. Aber warum baut Sony extra Ram ein und benutzt davon ca. 1 MB?!
( Zumindest bei MHF Tongue )

Aber Danke für dein Code Beispiel Big Grin


Tja, Sony hat halt ne Schraube locker^^
Ich glaube die wollten die PSP nur teuerer machen, und haben deshalb mehr RAM eingebaut^^


RE: Slim Memory - 743acid743 - 12.11.2010 18:18

Also wenn ich das richtig verstehe kann ich mit der adresse 0x0A000000,
ein databuffer dorthin laden und davon laden... Aber nur bei der slim und CFW.

oder habe ich da etz etwas missverstanden?

und wenn ja, kann ich das hochgeladene auch nach einen neustart (von vsh zu game) benutzen aus dem x-tra ram?

MfG 743acid743


RE: Slim Memory - Chaosduckman - 12.11.2010 18:23

Zitat:
Also wenn ich das richtig verstehe kann ich mit der adresse 0x0A000000,
ein databuffer dorthin laden und davon laden... Aber nur bei der slim und CFW.

Also ich glaube schon.

Zitat:
und wenn ja, kann ich das hochgeladene auch nach einen neustart (von vsh zu game) benutzen aus dem x-tra ram?

Ich glaube nicht, aber schaue mal noch Volatile Memory oder hier.


RE: Slim Memory - Chaosduckman - 12.11.2010 18:29

@HacKmaN: Recht hast du Tongue


RE: Slim Memory - 743acid743 - 12.11.2010 19:13

Chaosduckman :
Natürlich kann man mit dem Zeiger auf den Speicherbereich zugreifen.
Davor muss man nur den Speicher mit sceKernelSetDdrMemoryProtection() "allocen".


Könntest du das erläutern und vielleicht ein code-beispiel bringen?


RE: Slim Memory - Chaosduckman - 12.11.2010 21:43

Klar Big Grin
C++:

Code:
sceKernelSetDdrMemoryProtection( reinterpret_cast<void*> (0x0A000000), Size in Bytes in Hex, 0xF );


C:

Code:
sceKernelSetDdrMemoryProtection( (void*) 0x0A000000, Size in Bytes in Hex, 0xF );


Danach solltest du das ganz normal mit Memcpy und so benutzen können.
Ich habe das selbst aber noch nie versucht, also kann auch sein das es nicht Funktioniert^^