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
  • So what goes wrong with your allocation? Does it exit after a failure? Or does it return

    It exits after failure.

    sizeof(RGB) in my code is 3 bytes. In my application I am trying to read an image with 320 x 240 size. In my startup code heap is set as Heap_Size EQU 0x00000800 and if I try to change these values .\Obj\Memory.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section

    If I am taking an image with 10x8 dimensions it is working but beyond that it does n't.

    How have you verified that your height and width really have the values you think they have?

    Yes I have have verified. They have actual values (I mean height and width of input image)

Reply
  • So what goes wrong with your allocation? Does it exit after a failure? Or does it return

    It exits after failure.

    sizeof(RGB) in my code is 3 bytes. In my application I am trying to read an image with 320 x 240 size. In my startup code heap is set as Heap_Size EQU 0x00000800 and if I try to change these values .\Obj\Memory.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section

    If I am taking an image with 10x8 dimensions it is working but beyond that it does n't.

    How have you verified that your height and width really have the values you think they have?

    Yes I have have verified. They have actual values (I mean height and width of input image)

Children
  • Stop fooling around. 320*200*3 = 64000*3.

    The processor don't have enough internal RAM to handle it.

    The processor doesn't even have RAM memory regions that are neighbour to each other to allow a single memory allocation of the full size, since the 64kB of main RAM is not neighbour to USB or Ethernet RAM or to the two 64kB external memory banks. And the two 64kB external memory banks are not neighbour either.

    Do you have external RAM connected? How much? If yes - how have you convinced the RTL to place 128kB heap in external RAM and 64kB heap in internal RAM?