This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

unable to use fread() function

Hi,

I am working on MCB2300 (with LPC2378 processor). I have written a small function that will read the values into a matrix. But when the control comes to fread it completely hangs up, nothing can be done. Below is the my function which is giving problem

 void loadImage(FILE* arq, unsigned char** Matrix){
        int i,j;
        unsigned char tmp;
        long pos = 51;

        fseek(arq,0,0);

        for (i=0; i<300; i++){
                for (j=0; j<400; j++){
                        pos+= 3;
                        fseek(arq,pos,0);
                        fread(&tmp,3,1,arq);
                        Matrix[i][j] = tmp;
                }
        }
}

Its working fine in GNU C. But when I have tried to use the same code in Keil uVision4, its is not working. Please let me know how to sort this problem

Parents Reply Children
  • I have already tried previously by allocating one big chunk of memory for a three-dimensionsl array:

    unsigned char bitmap[height][width][3]
    

    So it's actually 320 x 240 x3 = 675K

  • My default heap size in startup file is Heap_Size EQU 0x00000800.

    I have increased the heap size step by step and tested on images with different sizes. When I have set the heap size to 0x 00007000 , the final image that worked is of size 26.3 KB (109 x 82 x 3). But if I change heap value further it is not working. But my required image size is much larger. What things I need to do so that I can change heap value further and ensure it works with large images?

    My IRAM1 settings are default (IRAM1: 0x40000000 Size: 0x8000)

  • My IRAM1 settings are default (IRAM1: 0x40000000 Size: 0x8000)

    OK, this is the 3rd time I'm asking this: how much RAM do you have? This is important for your application, as you should have realized by now.
    You indicated that you have 32 Kbytes of RAM. Obviously, this is too little.