Quantcast
Channel: MSP430 Technical Forums
Viewing all articles
Browse latest Browse all 2077

Mspusblib Massstorage-Problem

$
0
0

Hello everybody,

 

edit: Forget it, it's not a Problem on the controller-side. Everything is working like expected, it's the Host-side: windows didn't realize the File had changed and just "reopened" the old one...

 

I have a problem using the FatFS-library coming with MSPWare and the Mass-Storage-Class Implementation delivered with TI's USB-Dev-Package. I'm using a SD-Card to log some process data, which is working well. To access the data, I'm using the Mass-Storage-Class Implementation, like it is used in the examples delivered with the Dev-Package ("M2_SDCardReader"), which is working, too.

 

My problem is, that I'm not able to access any file using FatFS-library after opening that specific file on the host-PC. Opening any other file doesn't disturb the access.

 

What is bothering me, is that The FatFS-Library still thinks everything works and every access to the specified File results in "FR_OK", and the number of written bytes equals the expected number. 

 

I tried different approaches:

 

first to keep the file open on the MSP and appending the incoming Data

    ...

    f_mount(0, &FatFs);
    fr = f_open(&file, "time_1.txt", FA_WRITE | FA_OPEN_ALWAYS);
 
    while (1)
    {
        if(flags & RTC_FLAG)
        {
           fr = f_write(&file, "Something\n\r", 11, &bw);
           flags &= ~RTC_FLAG;*/
        }

        ...
        //The USB-Stuff exactly like in the example
        switch(USB_getConnectionState())
        {
            case ST_ENUM_ACTIVE:
            	USBMSC_processMSCBuffer(); // Handle READ/WRITE cmds from the host
            ...
        }
           
    }

and second to reopen and close the File for every write.

    ...

    f_mount(0, &FatFs);
 
    while (1)
    {
        if(flags & RTC_FLAG)
        {
           fr = f_open(&file, "time_2.txt", FA_WRITE | FA_OPEN_ALWAYS);
           fr = f_write(&file, "Something else\n\r", 16, &bw);
           fr = f_close(&file);

           flags &= ~RTC_FLAG;*/
        }

        ...
        //The USB-Stuff exactly like in the example
        switch(USB_getConnectionState())
        {
            case ST_ENUM_ACTIVE:
            	USBMSC_processMSCBuffer(); // Handle READ/WRITE cmds from the host
            ...
        }
    }

As I mentioned before, both versions work well, as long as I don't access the file from my host-PC. After that I'm unable to access the File again. Files I didn't open from the PC work like before...

 

What am I doing wrong?


Viewing all articles
Browse latest Browse all 2077

Trending Articles