AnsweredAssumed Answered

Anyone know why frame buffer B write causes exception? Blackfin 561

Question asked by DanW0830 on Apr 29, 2015
Latest reply on May 20, 2015 by Jithul_Janardhanan

In encoder.c I added a frame buffer rotate function.

 

       for(i=0; i<coreA_Num_Of_Channels; i++)

      {

        pvc = &video_codec_object[i];

        CALL_CONFIG_PREPROC(i, 0);

 

      FrameBufferRotate(pf[i]);

        pf[i] = (ifrm_t*)h264_encode(pvc, pf[i], ppstream[i], &pn[i+buf_index*MAX_CHANNELS]);

        if(pvc->ptelem) moveblk( pp[i], pvc->ptelem, pvc->telemlength);

      }

 

for now, I just want to test write anything inside framebuffer.

The first call (with an offset of 0x00000004) worked correctly. I can write into the buffer.

I view the image in the frame buffer and I see the data I wrote.

But the second call to the same function has a frame buffer offset of 0x01000000 (Which is the second frame buffer offset)

I get a NonNesting Exception. 

 

My FrameBufferRotate just looks like this now:

 

void FlirPreProcess(ifrm_t *pFrame)

{

    ubyte *frameptr_a = pFrame->pucFramePtr;

    ULONG *pulFrameAPixel = 0;

    ULONG ulOffset = 0;

    int nWidth = 640;

    int nHeight = VID_OUT_YCNT/2;

    int nXLoc = 0;

    int nYLoc = 0;

   

  

    for (nYLoc = 0; nYLoc < nHeight;nYLoc++)

    {

   for (nXLoc = 0; nXLoc < nWidth;nXLoc+=4)
   {
   ulOffset = frameptr_a+(nWidth*nYLoc)+nXLoc;
   pulFrameAPixel =  (ULONG *)ulOffset;
   *pulFrameAPixel = 0xAAAAAAAA;
   }

    }

 

Anyone have any ideas?    THANKS!

Outcomes