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

Why FlashFS and CAN RTX example in MCB1700 are not be able to work with each other?

I used FlashFS example and RTX_CAN example in RL folder examples in keil uvision and combined them together.But less than one minute I face with Runtime error and in debug mode the code climb to os_error function in RTX_Conf_CM.c.

For playing .Wave file i must to modify RTX_Conf_CM.c as below:

#ifndef OS_TASKCNT
 #define OS_TASKCNT     26
#endif


#ifndef OS_PRIVCNT
 #define OS_PRIVCNT     1
#endif


#ifndef OS_STKSIZE
 #define OS_STKSIZE     75
#endif

#ifndef OS_STKCHECK
 #define OS_STKCHECK    1
#endif


#ifndef OS_RUNPRIV
 #define OS_RUNPRIV     1
#endif


#ifndef OS_CLOCK
 #define OS_CLOCK       100000000
#endif


#ifndef OS_TICK
 #define OS_TICK        15
#endif


#ifndef OS_ROBIN
 #define OS_ROBIN       1
#endif

#ifndef OS_ROBINTOUT
 #define OS_ROBINTOUT   10
#endif

#ifndef OS_TIMERCNT
 #define OS_TIMERCNT    0
#endif

#ifndef OS_FIFOSZ
 #define OS_FIFOSZ      16
#endif

#ifndef OS_MUTEXCNT
 #define OS_MUTEXCNT    500
#endif


after for example 20s or 30s or more trying for fclose() command i face to runtime error.
Maybe the processor has problem with fclose() command .

this is the code in my Receive data funcion:

__task void loop_1(void){
for(;;){
  os_dly_wait(1);
        //os_mut_wait(&mut_IO, 0xffff);
        //os_mut_wait(&mut_CAN, 0xffff);
   /*---------------------------Music is played-----------------------------------------*/
        if(/*!(Rx1_val&1<<FAST_REL)&&*/music_start==0)
        {

        initcard:
        tsk_lock();
        if(finit () == 0)  {
         tsk_unlock ();
         }
         else{
         tsk_unlock ();
         os_dly_wait(50000);
         goto initcard;
         }
         next1="M:\\_1.wav";
      // os_mut_wait(mut_IO, 0xffff);
         os_dly_wait(1000);
         tsk_lock ();
         fp = fopen (next1,"rb");
         tsk_unlock ();
         if (fp == NULL) {
            os_dly_wait(50000);
            goto initcard;
         }
         music_start=1;
         }
         if(music_start==1)
         {
          file_read_bac=feof(fp);
          if(!file_read_bac)
          {
          tsk_lock ();
          ch=fgetc(fp);
          tsk_unlock ();
          LPC_DAC->DACR= (1024/255)*ch<<6|0x10000;
          }
          else
          {
            rewind(fp);
closing:

          tsk_lock();
          if (!fclose (fp))  {
          tsk_unlock ();
          }
          else if(fclose (fp)==EOF)  {
          tsk_unlock ();
          os_dly_wait(50000);
          goto closing;
          }
          os_dly_wait(1000);
          flushing:
          tsk_lock();
          if (fflush (fp))  {
          tsk_unlock ();
          os_dly_wait(50000);
          goto flushing;
          }
          else
          tsk_unlock ();
          music_start=0;
          }
     }
  }
}

This is my CAN task:

__task void task_rece_CAN (void)  {
  CAN_msg msg_rece;

  for (;;)  {
    /* When message arrives store received value to global variable Rx_val   */
                os_mut_wait (&mut_CAN, 0xffff);
    if (CAN_receive (1, &msg_rece, 0xFFFF) == CAN_OK)  {

                //os_evt_clr(0x0001,t_task_send_CAN);
                //      os_mut_wait(mut_IO, 0xffff);
      Rx_val  = msg_rece.data[0];
                        Rx1_val = msg_rece.data[1];
                        Rx2_val = msg_rece.data[2];
                        Ext1 = msg_rece.data[3];
                        Ext2 = msg_rece.data[4];
                        Rx3_val = msg_rece.data[5];//sensors
                        Rx4_val = msg_rece.data[6];//init_elevator
                        mainboard_receive_frame();
                        os_evt_set(0x0001,t_task_send_CAN);
    }
                os_mut_release (&mut_CAN);
  }
}

when i disable CAN task the sd card reading is fine but when i enable both task i face with Runtime error .the problem is on fclose() or fopen()
I think I have problem with SPI function.because FlashFS example is not RTX.
What should i do?is it any Flash Fs example which can work with RTX?or can you help me to improve my code?