KINGx - Das inoffizielle PlayStation Forum & News Portal
keine EBOOT.PBP beim debuggen - 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: keine EBOOT.PBP beim debuggen (/showthread.php?tid=21471)


keine EBOOT.PBP beim debuggen - Yata - 24.07.2010 01:14

Hay,
wie es oben im Betreff steht krieg ich iwie keine EBOOT.PBP beim debuggen raus.
Hab ein Screenshot von der Compilerausgabe und der Makefile gemacht vlt ist es ja ein kleiner Fehler den ich übersehen hab.

Hier sind die Screenshots:

Compilerausgabe/Error und die Makefile

Bin wie immer für jede Hilfe dankbar Wink

Greetz
Yata


RE: keine EBOOT.PBP beim debuggen - Superfly - 24.07.2010 01:19

Ist der Pfad richtig?
Da steht ja ....\UMD\UMD\EBOOT.PBP


RE: keine EBOOT.PBP beim debuggen - Yata - 24.07.2010 01:27

Ja der ist richtig,weil hab das Projekt und das App UMD genannt.Im Ordner Projects ist ein Ordner namens UMD und in dem Ordner UMD ist widerrum noch ein Ordner namens UMD der die main,...etc. beinhaltet.


RE: keine EBOOT.PBP beim debuggen - _Kai_ - 24.07.2010 01:36

Wenn ich richtig sehe steht da unten in deiner Fehlerkonsole im 2. Screen:
undefined reference to 'sceUmdCheckMedium'

Ich glaub du musst folgendes deinem makefile hinzufügen:
LIBS = -lpspumd


RE: keine EBOOT.PBP beim debuggen - Yata - 24.07.2010 12:31

Danke PSP-Hilfe hat geklappt.
Hätte da eine Frage,wie weiß ich den eigentlich was ich in eine Makefile einfügen muss und woher krieg ich die Begriffe wie zum Beispiel was du mir jetzt gesagt hast "LIBS = -lpspumd ".


MfG
Yata


RE: keine EBOOT.PBP beim debuggen - HacKmaN - 24.07.2010 12:40

Yata :
Danke PSP-Hilfe hat geklappt.
Hätte da eine Frage,wie weiß ich den eigentlich was ich in eine Makefile einfügen muss und woher krieg ich die Begriffe wie zum Beispiel was du mir jetzt gesagt hast "LIBS = -lpspumd ".


MfG
Yata


Such dir mal ein gutes Makefile Tutorial (Bsp.: hier), die Variablen Namen sind danach leicht herrauszufinden.


RE: keine EBOOT.PBP beim debuggen - Yata - 24.07.2010 12:54

Danke HacKmaN werd ich mir früher oder später durchlesen Wink .
Ich hab mal gehört das es einen Makefilemaker gibt Noidea
Oder ist der nicht zu gebrauchen und totaler Müll Noidea


RE: keine EBOOT.PBP beim debuggen - Arcanum - 24.07.2010 13:21

Brauchst du nicht, sind bei der PSP doch nur ein paar Zeilen, die in die Makefile müssen.


RE: keine EBOOT.PBP beim debuggen - HacKmaN - 24.07.2010 13:53

Arcanum :
Brauchst du nicht, sind bei der PSP doch nur ein paar Zeilen, die in die Makefile müssen.


Weil dass alles vom Compiler vordefiniert ist. Du kannst immer noch psp-gcc etc. benutzten (der Compiler erledigt halt alles für dich).
Natürlich kannst den makefile maker benutzten, aber ich finde man sollte sich mit makefiles auskennen.


RE: keine EBOOT.PBP beim debuggen - anmabagima - 24.07.2010 21:20

Hi,

zum debuggen deiner HB solltest du auch ein PRX erstellen. Dazu in das Make-File:
BUILD_PRX = 1
einbauen...eine reine EBOOT.PBP kann man mit psplink nicht vom pc aus debuggen - so weit ich weiß :o)


RE: keine EBOOT.PBP beim debuggen - HacKmaN - 24.07.2010 22:22

anmabagima :
Hi,

zum debuggen deiner HB solltest du auch ein PRX erstellen. Dazu in das Make-File:
BUILD_PRX = 1
einbauen...eine reine EBOOT.PBP kann man mit psplink nicht vom pc aus debuggen - so weit ich weiß :o)


Richtig. Man kann nur ELFs (sowohl standart ELFs als auch Relocateables) debuggen.


RE: keine EBOOT.PBP beim debuggen - Yata - 24.07.2010 22:30

anmabagima :
Hi,

zum debuggen deiner HB solltest du auch ein PRX erstellen. Dazu in das Make-File:
BUILD_PRX = 1
einbauen...eine reine EBOOT.PBP kann man mit psplink nicht vom pc aus debuggen - so weit ich weiß :o)


sry aber ich weiß nich was du genau meinst mit psplink (ich benutze VC++2008 mit PSPSDK)


Ich hab mir diesen MAkefilemaker runtergeladen.Aber ich weiß nicht genau wo ich ein Häckchen setzen muss und wo nicht.
Hab einfach mal überall ein Häckchen gesetzt bei den Libs trotzdem kommt ein Fehler das etwas in der Makefile fehlt wie das erste mit UMD.
Help Noidea


RE: keine EBOOT.PBP beim debuggen - Arcanum - 24.07.2010 23:37

Zitat:
einbauen...eine reine EBOOT.PBP kann man mit psplink nicht vom pc aus debuggen - so weit ich weiß :o)


Hab ich auch mal gehört. Hatte es gestestet und gesehn, dass man damit nur Module laden / starten kann und anderen Sachen wie Prozessliste, Exceptions bei crashes usw.

Zum Debuggen benutze ich Irshell mit usbhostfs_ps, damit spare ich 70% der Zeit. Man kann dann einfach von IRshell auf den Rechner (usb kabel muss dran sein und usbhostfs muss auf dem Rechner laufen) zugreifen. Ich starte dann immer usbhostfs_pc von meinem Projektordner, dann gehe ich in IRShell auf die Eboot und kann ganz normal die Eboot testen. Damit macht das proggen für die PSP richtig spaß.


RE: keine EBOOT.PBP beim debuggen - Yata - 24.07.2010 23:56

@ Arcanum
IRSHELL ist doch ein Hombrew für die PSP oder Irre ich mich da Noidea
Wie kannst du mit einem Hombrew auf deiner PSP ein noch nicht Fertiges debuggen ?

PS:Hab PSP gerade mit dem Datenkabel am PC verbunden.IRSHELL habe ich auch drauf.Auf was muss ich jz drauf bei IRSHELL um es auszuprobieren was du meinst ????


RE: keine EBOOT.PBP beim debuggen - Arcanum - 25.07.2010 00:02

Dann musst du auf dem rechner usbhostfs_pc starten. dann klickst du bei irshell auf toggle usbhost. Dann kannste auf Dateistruktur (1. Icon links oben) und da dann auf usbhost0:/. Da kannste dann auf die Eboot klicken und sie starten ohne sie auf die PSP zu laden.


RE: keine EBOOT.PBP beim debuggen - Yata - 25.07.2010 00:11

Werds morgen ausprobieren,vielen dank.

Greetz
Yata


RE: keine EBOOT.PBP beim debuggen - pspbricker - 25.07.2010 12:31

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 Sad


RE: keine EBOOT.PBP beim debuggen - anmabagima - 25.07.2010 18:51

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


RE: keine EBOOT.PBP beim debuggen - HacKmaN - 25.07.2010 19:01

pspbricker :
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 Sad


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.


RE: keine EBOOT.PBP beim debuggen - Yata - 26.07.2010 12:53

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 Noidea
Hier ist der Code

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


RE: keine EBOOT.PBP beim debuggen - Yata - 26.07.2010 15:35

*PUSH*


RE: keine EBOOT.PBP beim debuggen - anmabagima - 27.07.2010 08:33

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...


RE: keine EBOOT.PBP beim debuggen - Yata - 27.07.2010 22:33

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


RE: keine EBOOT.PBP beim debuggen - Arcanum - 27.07.2010 22:39

Kann kann aber auch die While-Bedinung auf "1" lassen, wenn man z.B. folgendes macht:

Code:
SceCtrlData pd;

while(1)
{
        sceCtrlReadBufferPositive(&pd,1);
        if(pd.Buttons & PSP_CTRL_CROSS)
                break;
}

sceKernelExitGame();


Mit "break" kann man die Schleife stoppen.


RE: keine EBOOT.PBP beim debuggen - anmabagima - 28.07.2010 08:14

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...


RE: keine EBOOT.PBP beim debuggen - HacKmaN - 28.07.2010 13:26

Ich machs üblicherweiße so:

Code:
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.


RE: keine EBOOT.PBP beim debuggen - pspbricker - 28.07.2010 13:50

anmabagima :
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.


RE: keine EBOOT.PBP beim debuggen - Arcanum - 28.07.2010 16:12

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. Big Grin

@anmabagima:

Also ich arbeite gerne mit break; und continue; und der Code wird aus meiner Sicht nicht unübersichtlich.


RE: keine EBOOT.PBP beim debuggen - anmabagima - 29.07.2010 15:58

Hey,

jeder hat seinen eigenen Stil Smile don't worry Big Grin