AnsweredAssumed Answered

_primIO() which (by convention) is interpreted as an I/O failure?

Question asked by jelly on Aug 8, 2010
Latest reply on Aug 10, 2010 by CraigG



Some info about our project as below,


IDE: VisualDSP++ 5.0 Update 6
Processor: ADSP BF548 Silicon Revision 0.1 or 0.2
Board: private, not EZ-KIT
SD CARD: SanDisk SD 2GB class 2, Kingston SD 2GB


I modified and built your example code from below location.
C:\Program Files\Analog Devices\VisualDSP 5.0\Blackfin\Examples\ADSP-BF548
EZ-KIT Lite\Services\File System\HardDisk\HardDiskAccess


I call the TestFunction( ), and
Step 1: create a new sub directory named “Directory 1”


Step 2: move to the sub directory


Step 3: create one thousand files in the sub directory. Each file size is
800*600*3bytes(about 1.4MB)


Step 4: delete all files


Step 5: remove the sub directory


Step 6: jump to step 1


I don't know why my program will be blocked(sometimes about run step1 to step6
about several hundred times, sometimes 10+ times). I traced the code and found the variable _Godot is not NULL, so the program will always wait for Godot.
Does anyone has experienced the same problems ?


Thanks for any idea !


...code snippet from xprim.c
void _primIO(void)
    /* If the debugger is present, it will put a breakpoint on this
       label, and none of this code will execute. 


       If the DLK is being used, then it will tell us by resetting
       _lone_SHARC, and we'll interact through the _Godot pointer.


       If we're all alone, we'll just return without doing anything,
       which (by convention) is interpreted as an I/O failure.


    if (!_lone_SHARC)
        _Godot = &PrimIOCB;
        while (_Godot != NULL)    /* Waiting for Godot */