|
Verfasser |
Nachricht |
Yata
Halbprofi
Beiträge: 166
Gruppe: User
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 23
|
RE: keine EBOOT.PBP beim debuggen
Werds morgen ausprobieren,vielen dank.
Greetz
Yata
|
|
25.07.2010 00:11 |
|
|
|
pspbricker
Mod a.D.
Beiträge: 3.428
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 1641
|
RE: keine EBOOT.PBP beim debuggen
Man kann nur auf der OFW 1.5 Elfs debuggen.
Ab der 3.4 kann man nur noch prx's über PSPLink starten. Auch wenn sich bei mir die PSP meistens dabei aufhängt
Meine PS3 Games : Warhawk , NFS: Pro Street, Motorstorm ,Midnight Club LA, LittleBigPlanet, GTA4, Uncharted 2, Overlord, Killzone2, PES10, Battlefield ´43, Socom: Confrontation,
Forum Regeln Beachten! KEIN ISO Talk! KEINE Beleidigungen! KEINE illegalen Links!
|
|
25.07.2010 12:31 |
|
|
|
anmabagima
Ex-Developer
Beiträge: 348
Gruppe: User
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 530
|
RE: keine EBOOT.PBP beim debuggen
Hi,
ich hab' eine CFW 5.50 GEN irgendwas....da klappt das debuggen mit psplink ohne probleme :o)
Als kurze Erklärung:
Ich arbeite mit Eclipse und habe dort usbhost als externes Tool eingebunden - ebenso wie pspsh (shell für psp)...
Dann auf der PSP die PSP-Link HBN starten. USB Kabel rein und das externe Tool usbhost und danach pspsh über eclipse gestartet....dann kann man in eclipse den Debugger einrichten. In der psp-shell wird über den Befehl "debug myHB.prx" die HB im Debug-Modus gestartet...dann noch den Eclipse debugger anschmeißen und die HB wird gestartet und der debugger hält als erstes in der main.c/.cpp an....läuft bei mir auch unter Windows 7(64Bit) ohne knurren :o)
Gruß AnMaBaGiMa
|
|
25.07.2010 18:51 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: keine EBOOT.PBP beim debuggen
Man kann nur auf der OFW 1.5 Elfs debuggen.
Ab der 3.4 kann man nur noch prx's über PSPLink starten. Auch wenn sich bei mir die PSP meistens dabei aufhängt
PRXs sind auch ELFs... ("Portable Relocateable eXecuteable"), nur dass sie keine festen Adressen in der ELF selber haben (dass heißt sie können überall in den RAM geladen werden).
Standart ELFs dagegen (wie man sie mit EXTRA_TARGETS = EBOOT.PBP erstellt) müssen auf eine feste, von der ELF bestimmte Adresse im RAM geladen werden (elf_header.p_vaddr, auf der PSP dasselbe wie elf_header.p_paddr, da es auf der PSP keine virtuellen Adressen gibt), sonst werden sie wegen den festen Adressen nicht funktionieren.
|
|
25.07.2010 19:01 |
|
Folgende User bedanken sich: |
|
Yata
Halbprofi
Beiträge: 166
Gruppe: User
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 23
|
RE: keine EBOOT.PBP beim debuggen
Hay,
hab wieder ein Problem.Hab versucht ein bissl rum zu coden und hab versucht den Batteriestand etc. von der PSP auszulesen.
Vom Compiler aus ist alles in Ordnung (0 Fehler und 0 Warnungen) aber die PSP hängt immer und wenn ich über den Homebutton das Homebrew verlasse geht die PSP nach ein paar Sekunden aus
Hier ist der Code
/*Author: Yata*/
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspkerneltypes.h>
#include <pspctrl.h>
#include <pspwlan.h>
#include <psppower.h>
#define printf pspDebugScreenPrintf
#define prints printTextScreen
/* Define the module info section */
PSP_MODULE_INFO("Service", 0, 1, 1);
/* Define the main thread's attribute value (optional) */
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
//.............................................................
//Callbacks
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
int CallbackThread(SceSize args, void *argp) {
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
int SetupCallbacks(void) {
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
//.............................................................
int aktivmenu = 0;
int maxmenu = 2;
char menupoints [3] [20] = {"Check Batterie Life","Check Batterie Exist","Exit"};
void printmenu()
{
int i;
printf("Service Tool for the PSP (by Yata)\n\n\n\n\t");
for (i = 0; i<maxmenu+1; i++)//+1
{
if (aktivmenu == i)
{
printf("->%s\n",menupoints[i]);
}
else
{
printf("-> %s\n",menupoints[i]);
}
}
}
int main(int argc, char *argv[])
{
pspDebugScreenInit();
SetupCallbacks();
SceCtrlData pad;
int scePowerGetBatteryLifePercent();
int scePowerGetBatteryLifeTime ();
int scePowerIsBatteryExist ();
int sceWlanDevIsPowerOn();
int button = 0;
printmenu();
sceCtrlReadBufferPositive(&pad, 1);
while(1)
{
sceCtrlReadBufferPositive(&pad, 1);
if ((pad.Buttons & PSP_CTRL_DOWN) && (aktivmenu != maxmenu) && (button == 0))
{
aktivmenu++;
pspDebugScreenClear();
printmenu();
}
if ((pad.Buttons & PSP_CTRL_UP) && (aktivmenu != 0) && (button == 0))
{
aktivmenu -= 1;
pspDebugScreenClear();
printmenu();
}
if ((pad.Buttons & PSP_CTRL_UP) || (pad.Buttons & PSP_CTRL_DOWN))
{
button = 1;
}
else
{
button = 0;
}
if ((aktivmenu == 0) && (pad.Buttons & PSP_CTRL_CROSS))
{
pspDebugScreenClear();
printf("Batterylife:%d\n",scePowerGetBatteryLifePercent());
break;
}
if ((aktivmenu == 1) && (pad.Buttons & PSP_CTRL_CROSS) && scePowerIsBatteryExist() == 0)
{
printf("Battery: No exist");
break;
}
if ((aktivmenu == 1) && (pad.Buttons & PSP_CTRL_CROSS) && scePowerIsBatteryExist() == 1)
{
printf("Battery: Yes exist");
break;
}
if ((aktivmenu == 2) && (pad.Buttons & PSP_CTRL_CROSS))
{
break;
sceKernelExitGame();
}
}
if (pad.Buttons & PSP_CTRL_CIRCLE)
{
pspDebugScreenClear();
printmenu();
}
return 0;
}
Bitte helft mir ....
Grüße
Yata
|
|
26.07.2010 12:53 |
|
|
|
Yata
Halbprofi
Beiträge: 166
Gruppe: User
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 23
|
RE: keine EBOOT.PBP beim debuggen
|
|
26.07.2010 15:35 |
|
|
|
anmabagima
Ex-Developer
Beiträge: 348
Gruppe: User
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 530
|
RE: keine EBOOT.PBP beim debuggen
Hi,
so wie ich das sehe liegt es an deiner Schleife : while(1)...
diese wird niemals beendet. Darum hängt sich die PSP irgendwann auf, da sie ja über sceKernelExitGame();
weiß das die HB eigentlich zu ende ist, dein Thread aber noch in der schleife läuft...
Besser ist hier eine Bedingung zu nutzen wie z.Bsp.
while (running){
}
außerhalb der schleife setzt du dann sceKernelExitGame();
den wert für running setzt du auf false, wenn die home-Taste gedrückt wurde (und dann der callback thread "ENDE" signalisiert, oder wenn du die HB von dir aus beenden magst...
|
|
27.07.2010 08:33 |
|
Folgende User bedanken sich: |
|
Yata
Halbprofi
Beiträge: 166
Gruppe: User
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 23
|
RE: keine EBOOT.PBP beim debuggen
Danke für deine hilfe anmabagima.Ob while(running){} oder while(1){} ist das selbe nur while(1){} geht schneller xD.Aber hab das Problem gelöst,funktioniert jetzt einwandfrei mein menü xD.
Greezt
Yata
|
|
27.07.2010 22:33 |
|
|
|
Arcanum
Halbprofi
Beiträge: 170
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 48
|
RE: keine EBOOT.PBP beim debuggen
Kann kann aber auch die While-Bedinung auf "1" lassen, wenn man z.B. folgendes macht:
SceCtrlData pd;
while(1)
{
sceCtrlReadBufferPositive(&pd,1);
if(pd.Buttons & PSP_CTRL_CROSS)
break;
}
sceKernelExitGame();
Mit "break" kann man die Schleife stoppen.
PSP 1004 - Datecode 6B - CFW 5.00 M33-6
PSP 3004 - Datecode 8D - OFW 6.20
|
|
27.07.2010 22:39 |
|
|
|
anmabagima
Ex-Developer
Beiträge: 348
Gruppe: User
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 530
|
RE: keine EBOOT.PBP beim debuggen
Hi,
in der Theorie hast du 100% recht, aber im Sinne von Software-Engeneering ist dies eher ein schlechter Stil. Man sollte es vermeiden mit GOTO, BREAK oder ähnlichen Sprungmarken-Befehlen den Programablauf zu steuern, da die Programme dadurch schnell unleserlich werden...
|
|
28.07.2010 08:14 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: keine EBOOT.PBP beim debuggen
Ich machs üblicherweiße so:
SceCtrlData paddata;
while(paddata.Buttons != PSP_CTRL_CROSS)
{
sceCtrlReadBufferPositive(&paddata, 1);
// und so weiter
};
Dann kann man halt den X Knopf nicht in der Schleife benutzten.
Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2010 13:27 von HacKmaN.
|
|
28.07.2010 13:26 |
|
|
|
pspbricker
Mod a.D.
Beiträge: 3.428
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 1641
|
RE: keine EBOOT.PBP beim debuggen
Hi,
ich hab' eine CFW 5.50 GEN irgendwas....da klappt das debuggen mit psplink ohne probleme :o)
Als kurze Erklärung:
Ich arbeite mit Eclipse und habe dort usbhost als externes Tool eingebunden - ebenso wie pspsh (shell für psp)...
Dann auf der PSP die PSP-Link HBN starten. USB Kabel rein und das externe Tool usbhost und danach pspsh über eclipse gestartet....dann kann man in eclipse den Debugger einrichten. In der psp-shell wird über den Befehl "debug myHB.prx" die HB im Debug-Modus gestartet...dann noch den Eclipse debugger anschmeißen und die HB wird gestartet und der debugger hält als erstes in der main.c/.cpp an....läuft bei mir auch unter Windows 7(64Bit) ohne knurren :o)
Gruß AnMaBaGiMa
Danke. Ich hab Ubuntu. Normalerweise hab ich Sachen einfach mit ./test.prx gestartet ich probier es mal mit dem debug Befehlt.
Meine PS3 Games : Warhawk , NFS: Pro Street, Motorstorm ,Midnight Club LA, LittleBigPlanet, GTA4, Uncharted 2, Overlord, Killzone2, PES10, Battlefield ´43, Socom: Confrontation,
Forum Regeln Beachten! KEIN ISO Talk! KEINE Beleidigungen! KEINE illegalen Links!
|
|
28.07.2010 13:50 |
|
|
|
Arcanum
Halbprofi
Beiträge: 170
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 48
|
RE: keine EBOOT.PBP beim debuggen
So gehts doch viel einfacher:
1. usbhostfs_pc starten
2. Irshell auf der PSP starten
3. Bei irshell auf Directory List (1. Icon)
4. Dann auf usbhost0:/
5. Dann die Eboot auswählen
6. Starten
Wenn man das HB beendet landet man wieder bei IRshell und die Eboot ist noch ausgewählt.
So mach ich es jedenfalls.
Einfach immer nur am Rechner auf Build & Clean drücken und auf der PSP einfach 2x X und die Eboot ist an.
@anmabagima:
Also ich arbeite gerne mit break; und continue; und der Code wird aus meiner Sicht nicht unübersichtlich.
PSP 1004 - Datecode 6B - CFW 5.00 M33-6
PSP 3004 - Datecode 8D - OFW 6.20
Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2010 16:14 von Arcanum.
|
|
28.07.2010 16:12 |
|
|
|
anmabagima
Ex-Developer
Beiträge: 348
Gruppe: User
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 530
|
RE: keine EBOOT.PBP beim debuggen
Hey,
jeder hat seinen eigenen Stil don't worry
|
|
29.07.2010 15:58 |
|
|
|
|