forums.ps2dev.org Forum Index forums.ps2dev.org
Homebrew PS2, PSP & PS3 Development Discussions
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Building mass_usb

 
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PS2 Development
View previous topic :: View next topic  
Author Message
daveb



Joined: 21 Jul 2004
Posts: 12

PostPosted: Thu Jul 29, 2004 10:14 pm    Post subject: Building mass_usb Reply with quote

Hi
I'm having trouble building mass_usb.
I guess i dont know which version of PS2SDK or PS2LIB to use.

For example
the file usb_mass/iop/usb_mass.c uses
fileio_driver a struct that seems to be in the PS2LIB ioman.h but not the PS2SDK version

but usb_mass.c also uses iop_thread_t which seems to be in PS2SDK thbase.h but not the PS2LIB version.

So I dont know which to use to build mass_usb.

or have i just missed something very basic?
Back to top
View user's profile Send private message
ole



Joined: 08 May 2004
Posts: 92
Location: Czech Republic

PostPosted: Fri Jul 30, 2004 5:09 am    Post subject: Reply with quote

Uff,
Sorry to all - It's my mess.
I use ps2lib, but for thread and semaphores I used examples from ps2sdk.
I will correct it asap.
Back to top
View user's profile Send private message
fluke



Joined: 26 Jul 2004
Posts: 25

PostPosted: Fri Jul 30, 2004 5:10 am    Post subject: Reply with quote

I ran into the same sort of problem. I addressed the ioman.h issue by upgraded to ps2sdk to v2.2 which does provide the fileio_driver struct. But in ps2sdk v2.2, the thbase.h structures change. Here is my patch which I used to get the mass driver to compile. I even got the test example to compile and run. It is just that the example never did anything useful, except to display the others to hit one of two buttons (after pressing either button, it just seems to hang). Maybe someone with a better understanding of IOP threading can tell what I screwed up.

diff -ru usb_mass/iop/fat_driver.c usb_mass-22/iop/fat_driver.c
--- usb_mass/iop/fat_driver.c 2004-07-25 21:49:53.000000000 -0500
+++ usb_mass-22/iop/fat_driver.c 2004-07-25 21:50:32.000000000 -0500
@@ -18,7 +18,7 @@

#ifndef _PS2_
#include <stdlib.h>
-#include <memory.h>
+/* #include <memory.h> */
#endif

#include "scache.h"
diff -ru usb_mass/iop/Makefile usb_mass-22/iop/Makefile
--- usb_mass/iop/Makefile 2004-07-10 05:40:52.000000000 -0500
+++ usb_mass-22/iop/Makefile 2004-07-25 21:22:49.000000000 -0500
@@ -7,5 +7,5 @@
clean:
rm -f *.elf *.o *.a *.irx

-include ../../../Makefile.pref
-include ../../../Makefile.iopglobal
+include ../Makefile.pref
+include ../Makefile.iopglobal
diff -ru usb_mass/iop/mass_stor.c usb_mass-22/iop/mass_stor.c
--- usb_mass/iop/mass_stor.c 2004-07-25 21:49:53.000000000 -0500
+++ usb_mass-22/iop/mass_stor.c 2004-07-25 21:50:32.000000000 -0500
@@ -203,12 +203,12 @@
void set_configuration(mass_dev* dev, int configNumber) {
int ret;
int semh;
- iop_sema_t s;
+ struct t_sema s;

- s.initial = 0;
- s.max = 1;
+ s.init_count = 1;
+ s.max_count = 1;
s.option = 0;
- s.attr = 0;
+ s.attr = 1;
semh = CreateSema(&s);


@@ -229,12 +229,12 @@
void set_interface(mass_dev* dev, int interface, int altSetting) {
int ret;
int semh;
- iop_sema_t s;
+ struct t_sema s;

- s.initial = 0;
- s.max = 1;
+ s.init_count = 1;
+ s.max_count = 1;
s.option = 0;
- s.attr = 0;
+ s.attr = 1;
semh = CreateSema(&s);


@@ -255,12 +255,12 @@
void set_device_feature(mass_dev* dev, int feature) {
int ret;
int semh;
- iop_sema_t s;
+ struct t_sema s;

- s.initial = 0;
- s.max = 1;
+ s.init_count = 1;
+ s.max_count = 1;
s.option = 0;
- s.attr = 0;
+ s.attr = 1;
semh = CreateSema(&s);


@@ -281,13 +281,13 @@
void usb_bulk_clear_halt(mass_dev* dev, int direction) {
int ret;
int semh;
- iop_sema_t s;
+ struct t_sema s;
int endpoint;

- s.initial = 0;
- s.max = 1;
+ s.init_count = 1;
+ s.max_count = 1;
s.option = 0;
- s.attr = 0;
+ s.attr = 1;

if (direction = 0) {
endpoint = dev->bulkEpOAddr;
@@ -319,12 +319,12 @@
void usb_bulk_reset(mass_dev* dev, int mode) {
int ret;
int semh;
- iop_sema_t s;
+ struct t_sema s;

- s.initial = 0;
- s.max = 1;
+ s.init_count = 1;
+ s.max_count = 1;
s.option = 0;
- s.attr = 0;
+ s.attr = 1;
semh = CreateSema(&s);

//Call Bulk only mass storage reset
@@ -362,13 +362,13 @@

int usb_bulk_status(mass_dev* dev, csw_packet* csw, int tag) {
int ret;
- iop_sema_t s;
+ struct t_sema s;
int semh;

- s.initial = 0;
- s.max = 1;
+ s.init_count = 1;
+ s.max_count = 1;
s.option = 0;
- s.attr = 0;
+ s.attr = 1;
semh = CreateSema(&s);

initCSWPacket(csw);
@@ -420,13 +420,13 @@

void usb_bulk_command(mass_dev* dev, cbw_packet* packet ) {
int ret;
- iop_sema_t s;
+ struct t_sema s;
int semh;

- s.initial = 0;
- s.max = 1;
+ s.init_count = 1;
+ s.max_count = 1;
s.option = 0;
- s.attr = 0;
+ s.attr = 1;
semh = CreateSema(&s);

ret = UsbBulkTransfer(
@@ -453,13 +453,13 @@
int blockSize = transferSize;
int offset = 0;

- iop_sema_t s;
+ struct t_sema s;
int semh;

- s.initial = 0;
- s.max = 1;
+ s.init_count = 1;
+ s.max_count = 1;
s.option = 0;
- s.attr = 0;
+ s.attr = 1;
semh = CreateSema(&s);

while (transferSize > 0) {
diff -ru usb_mass/iop/scache.c usb_mass-22/iop/scache.c
--- usb_mass/iop/scache.c 2004-07-25 21:49:53.000000000 -0500
+++ usb_mass-22/iop/scache.c 2004-07-25 21:50:32.000000000 -0500
@@ -24,10 +24,10 @@
#else
#include <stdio.h>
#include <stdlib.h>
-#include <memory.h>
+/* #include <memory.h> */
#define MEMCPY(a,b,c) memcpy((a),(b),(c))

-#include "vdisk.h"
+/* #include "vdisk.h" */

#define DISK_INIT(a,b) vdisk_init((a), (b))
#define DISK_CLOSE vdisk_close
diff -ru usb_mass/iop/usb_mass.c usb_mass-22/iop/usb_mass.c
--- usb_mass/iop/usb_mass.c 2004-07-25 21:49:53.000000000 -0500
+++ usb_mass-22/iop/usb_mass.c 2004-07-25 21:50:32.000000000 -0500
@@ -15,6 +15,7 @@
#include <sifcmd.h>
#include <sifrpc.h>
#include <fileio.h>
+#include <thbase.h>
#include "mass_stor.h"
#include "fat_driver.h"

@@ -67,7 +68,7 @@

int _start( int argc, char **argv)
{
- iop_thread_t param;
+ struct t_thread param;
int th;


@@ -77,11 +78,11 @@
initFsDriver();

/*create thread*/
- param.attr = TH_C;
- param.thread = rpcMainThread;
- param.priority = 40;
- param.stacksize = 0x800;
- param.option = 0;
+ param.type = TH_C;
+ param.function = rpcMainThread;
+ param.priority = 40;
+ param.stackSize = 0x800;
+ param.unknown = 0;


th = CreateThread(&param);
Back to top
View user's profile Send private message
daveb



Joined: 21 Jul 2004
Posts: 12

PostPosted: Fri Jul 30, 2004 6:51 am    Post subject: Reply with quote

Thanks.
Im glad to know the problem was with the code and not me!
Back to top
View user's profile Send private message
ole



Joined: 08 May 2004
Posts: 92
Location: Czech Republic

PostPosted: Sat Jul 31, 2004 6:12 pm    Post subject: Reply with quote

The usb_mass is now fixed to be ps2sdk compatible. Copy the content into your ps2sdk/samples/usb_mass directory and run make in iop and ee subdirectories.

Though I had a problem during compilation of the ee sources. The common/include/sifcmd.h caused error and refused to compile. So I added some includes (according the ps2lib) to fix it:

Code:
#define SYSTEM_CMD   0x80000000

#include <tamtypes.h> // <=== new
#include <sifdma.h> //<=== new

typedef struct t_SifCmdHeader


In order to compile the iop sources (by supplied makefile) you need the Makefile.iopglobal that can be found in ps2lib and is currently missing in the ps2sdk/samples directory.
Back to top
View user's profile Send private message
daveb



Joined: 21 Jul 2004
Posts: 12

PostPosted: Wed Aug 04, 2004 7:37 pm    Post subject: Reply with quote

Hi Ole,
Thanks for fixing this so quick.
I updated my usb_mass.

However when I try to compile the iop directory, it complains it doesnt find the kernal.h file. PS2SDK doesnt have have iop/kernal.h only an ee one. So perhaps I need to do more than copy the PS2LIB/Makefile.iopglobal (obviously changing the paths within)
Back to top
View user's profile Send private message
ole



Joined: 08 May 2004
Posts: 92
Location: Czech Republic

PostPosted: Thu Aug 05, 2004 5:44 pm    Post subject: Reply with quote

Code:
PS2SDK doesnt have have iop/kernal.h

You are right, my fault again. I have updated the sources, so hopefully it will be ok now.
In the Makefile.iopglobal change $(PS2LIB) to $(PS2SDK) and comment the IOP_LIBS+= -lkernel.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PS2 Development All times are GMT + 10 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group