gcc\libgcc\fp-bit.c not found

Forum related to ERIKA Enterprise and RT-Druid version 3

Moderator: paolo.gai

Locked
alexsheu

gcc\libgcc\fp-bit.c not found

Post by alexsheu »

Hi,
I'm using iLLD QSPI module with ERIKA(GH65), the problem was when finish the initModule it stuck in libos_exit.c, can anyone help me solve this problem ?

Here's my conf.oil setting

Code: Select all

CPU mySystem {

  OS myOs {
    /*EE_OPT = "OS_EE_VERBOSE";*/
    //EE_OPT = "OSEE_DEBUG";
    EE_OPT = "OSEE_ASSERT";
    EE_OPT = "OS_EE_APPL_BUILD_DEBUG";
    EE_OPT = "OS_EE_BUILD_DEBUG";
    //EE_OPT = "OSEE_TC_LINK_BMHD";

    CPU_DATA = TRICORE {
      ID = 0x0;
      CPU_CLOCK = 200.0;
      MULTI_STACK = TRUE;
      COMPILER = GCC;
      IDLEHOOK = TRUE {
        HOOKNAME = "idle_hook_core0";
      };      
    };
    
    CPU_DATA = TRICORE {
      ID = 0x1;
      MULTI_STACK = TRUE;
      IDLEHOOK = TRUE {
        HOOKNAME = "idle_hook_core1";
      };
    };
    
    CPU_DATA = TRICORE {
      ID = 0x2;
      MULTI_STACK = TRUE;
      IDLEHOOK = TRUE {
        HOOKNAME = "idle_hook_core2";
      };
    };
    
    CPU_DATA = TRICORE {
      ID = 0x3;
      MULTI_STACK = TRUE;
      IDLEHOOK = TRUE {
        HOOKNAME = "idle_hook_core3";
      };
    };
    
    CPU_DATA = TRICORE {
      ID = 0x4;
      MULTI_STACK = TRUE;
      IDLEHOOK = TRUE {
        HOOKNAME = "idle_hook_core4";
      };
    };
    
    CPU_DATA = TRICORE {
      ID = 0x6;
      MULTI_STACK = TRUE;
      IDLEHOOK = TRUE {
        HOOKNAME = "idle_hook_core5";
      };
    };
    

    MCU_DATA = TC39X {
      DERIVATIVE = "tc397xe";
      //DERIVATIVE = "tc399xe-Astep";
      //REVISION = "AA";
    };

    STATUS = EXTENDED;
    ERRORHOOK = TRUE;
    USERESSCHEDULER = FALSE;

    USEORTI = TRUE;

    KERNEL_TYPE = OSEK {
      CLASS = ECC1;    
      RQ    = MQ;
    };
  };

  TASK Task__1ms {
  	CPU_ID = 0x0;
    PRIORITY = 1;
    SCHEDULE = FULL;
  };

  TASK Task__5ms {
  	CPU_ID = 0x0;
    PRIORITY = 1;
    SCHEDULE = FULL;
  };

  TASK Task__10ms {
  	CPU_ID = 0x0;
    PRIORITY = 1;
    SCHEDULE = FULL;
  };

  TASK Task__20ms {
  	CPU_ID = 0x0;
    PRIORITY = 1;
    SCHEDULE = FULL;
  };

  TASK Task__50ms {
  	CPU_ID = 0x0;
    PRIORITY = 1;
    SCHEDULE = FULL;
  };
  
  TASK Task__100ms {
  	CPU_ID = 0x0;
    PRIORITY = 1;
    SCHEDULE = FULL;
  };

  ISR ISR_gtp12_t6 {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "GPT12_GPT120_T6";
	PRIORITY = 3;
  }; 
  
  /*ISR ISR_Asc_Shell_rx {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "ASCLIN_ASCLIN2_RX";
	PRIORITY = 4;
  };
  
  ISR ISR_Asc_Shell_tx {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "ASCLIN_ASCLIN2_TX";
	PRIORITY = 5;
  }; 
  
  ISR ISR_Asc_Shell_ex {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "ASCLIN_ASCLIN2_ERR";
	PRIORITY = 6;
  };*/
  
  ISR ISR_Lin1_rx {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "ASCLIN_ASCLIN1_RX";
	PRIORITY = 7;
  };
  
  ISR ISR_Lin1_tx {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "ASCLIN_ASCLIN1_TX";
	PRIORITY = 8;
  }; 
  
  ISR ISR_Lin1_ex {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "ASCLIN_ASCLIN1_ERR";
	PRIORITY = 9;
  }; 

  ISR ISR_tlf_qspi_Er {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "QSPI_QSPI2_ERR";
	PRIORITY = 23;
  };

  ISR ISR_tlf_qspi_Tx {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "QSPI_QSPI2_TX";
	PRIORITY = 33;
  };  
  
  ISR CAN_irqBusOff00Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN0_INT0";
	PRIORITY = 40;
  }; 
  
  ISR CAN_irqBusOff01Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN0_INT1";
	PRIORITY = 41;
  }; 
  
  ISR CAN_irqBusOff10Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN1_INT4";
	PRIORITY = 44;
  }; 
  
  ISR CAN_irqBusOff11Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN1_INT1";
	PRIORITY = 45;
  }; 
  
  ISR ISR_tlf_qspi_Rx {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "QSPI_QSPI2_RX";
	PRIORITY = 51;
  };

  ISR ERAY_irqInt0Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "ERAY_ERAY0_INT0";
	PRIORITY = 55;
  };
  
  ISR ERAY_irqInt1Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "ERAY_ERAY0_INT1";
	PRIORITY = 56;
  };
  
  ISR ERAY_irqNdat1Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "ERAY_ERAY0_NDAT0";
	PRIORITY = 57;
  };
  
  ISR CAN_irqTx00Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN0_INT8";
	PRIORITY = 60;
  };
  
  ISR CAN_irqRx00Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN0_INT0";
	PRIORITY = 80;
  };
  
  ISR CAN_irqTx01Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN0_INT9";
	PRIORITY = 61;
  };
  
  ISR CAN_irqRx01Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN0_INT1";
	PRIORITY = 81;
  };

  ISR CAN_irqTx10Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN1_INT8";
	PRIORITY = 64;
  };
  
  ISR CAN_irqRx10Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN1_INT0";
	PRIORITY = 84;
  };
  
  ISR CAN_irqTx11Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN1_INT9";
	PRIORITY = 65;
  };
  
  ISR CAN_irqRx11Handler {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "CAN_CAN1_INT1";
	PRIORITY = 85;
  };
  
  ISR ISR_spi4_qspi_Tx {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "QSPI_QSPI4_TX";
	PRIORITY = 99;
  };
  
  ISR ISR_spi4_qspi_Rx {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "QSPI_QSPI4_RX";
	PRIORITY = 101;
  };

  ISR ISR_spi4_qspi_Er {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "QSPI_QSPI4_ERR";
	PRIORITY = 97;
  };
  
  /*ISR UsrIsr_Stm_0 {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "STM_STM0_SR0";
	PRIORITY = 102;
  };*/
  
  ISR ISR_spi3_qspi_Tx {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "QSPI_QSPI3_TX";
	PRIORITY = 34;
  };
  
  ISR ISR_spi3_qspi_Rx {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "QSPI_QSPI3_RX";
	PRIORITY = 52;
  };

  ISR ISR_spi3_qspi_Er {
  	CPU_ID = 0x0;
	CATEGORY = 2;
	SOURCE = "QSPI_QSPI3_ERR";
	PRIORITY = 24;
  };
  

  COUNTER system_timer_master {
    CPU_ID = 0x0;
    MINCYCLE = 1;
    MAXALLOWEDVALUE = 2147483647;
    TICKSPERBASE = 1;
    TYPE = HARDWARE {
        DEVICE = "STM_SR0";
        SYSTEM_TIMER = TRUE;
        PRIORITY = 2;
    };
    SECONDSPERTICK = 0.01;
  };

  ALARM Alarm_1ms {
    COUNTER = system_timer_master;
    ACTION = ACTIVATETASK { TASK = Task__1ms; };
    AUTOSTART = TRUE { ALARMTIME = 100; CYCLETIME = 1; };
  };
  
  ALARM Alarm_5ms {
    COUNTER = system_timer_master;
    ACTION = ACTIVATETASK { TASK = Task__5ms; };
    AUTOSTART = TRUE { ALARMTIME = 100; CYCLETIME = 5; };
  };
  
  ALARM Alarm_10ms {
    COUNTER = system_timer_master;
    ACTION = ACTIVATETASK { TASK = Task__10ms; };
    AUTOSTART = TRUE { ALARMTIME = 100; CYCLETIME = 10; };
  };
  
  ALARM Alarm_20ms {
    COUNTER = system_timer_master;
    ACTION = ACTIVATETASK { TASK = Task__20ms; };
    AUTOSTART = TRUE { ALARMTIME = 100; CYCLETIME = 20; };
  };
  
  ALARM Alarm_50ms {
    COUNTER = system_timer_master;
    ACTION = ACTIVATETASK { TASK = Task__50ms; };
    AUTOSTART = TRUE { ALARMTIME = 100; CYCLETIME = 50; };
  };
  
  ALARM Alarm_100ms {
    COUNTER = system_timer_master;
    ACTION = ACTIVATETASK { TASK = Task__100ms; };
    AUTOSTART = TRUE { ALARMTIME = 100; CYCLETIME = 100; };
  };
};
WeChat 圖片_20211101104816.png
WeChat 圖片_20211101104816.png (239.66 KiB) Viewed 12608 times
Best regards,
Alex
alexsheu

Re: gcc\libgcc\fp-bit.c not found

Post by alexsheu »

Code: Select all

/* disable interrupts */
    boolean interruptState = IfxCpu_disableInterrupts();

    IfxQspi_SpiMaster_Config        spiMasterConfig;

    /* create module config */
    IfxQspi_SpiMaster_initModuleConfig(&spiMasterConfig, TLF_SCLK_PIN.module);

    /* set the maximum baudrate */
    spiMasterConfig.base.maximumBaudrate = TLF_QSPI_MAX_BAUDRATE;

    /* ISR priorities and interrupt target */
    spiMasterConfig.base.txPriority  = ISR_PRIORITY_TLF_QSPI_TX;
    spiMasterConfig.base.rxPriority  = ISR_PRIORITY_TLF_QSPI_RX;
    spiMasterConfig.base.erPriority  = ISR_PRIORITY_TLF_QSPI_ER;
    if (CPU_WHICH_SERVICE_TLF)
        spiMasterConfig.base.isrProvider = (IfxSrc_Tos)(CPU_WHICH_SERVICE_TLF+1);
    else
        spiMasterConfig.base.isrProvider = (IfxSrc_Tos)CPU_WHICH_SERVICE_TLF;

#ifdef TLF_QSPI_USE_DMA
        // DMA configuration
        spiMasterConfig.dma.txDmaChannelId = DMA_CH_TLF_QSPI_TX;
        spiMasterConfig.dma.rxDmaChannelId = DMA_CH_TLF_QSPI_RX;
        spiMasterConfig.dma.useDma = 1;
#endif

    spiMasterConfig.pins = &tlf_qspi_pins;

    /* initialize module */
    IfxQspi_SpiMaster_initModule(&(g_Qspi_TLF_Cpu.drivers.spiMaster), &spiMasterConfig);
    /* set the MRST_input also to the selected pad driver mode if needed */
    IfxPort_setPinPadDriver(spiMasterConfig.pins->mrst->pin.port, spiMasterConfig.pins->mrst->pin.pinIndex, spiMasterConfig.pins->pinDriver);

    IfxQspi_SpiMaster_ChannelConfig spiMasterChannelConfig;

Code: Select all

/** \brief Handle tlf_qspi_Tx interrupt.
 *
 * \isrProvider \ref CPU_WHICH_SERVICE_TLF
 * \isrPriority \ref ISR_PRIORITY_TLF_QSPI
 *
 */
void ISR_tlf_qspi_Tx()
{
    IfxCpu_enableInterrupts();
#ifdef TLF_USE_DMA
    IfxQspi_SpiMaster_isrDmaTransmit(&(g_Qspi_TLF_Cpu.drivers.spiMaster));
#else
    IfxQspi_SpiMaster_isrTransmit(&(g_Qspi_TLF_Cpu.drivers.spiMaster));
#endif

}
#if 0
IFX_INTERRUPT(ISR_tlf_qspi_Tx, CPU_WHICH_SERVICE_TLF, ISR_PRIORITY_TLF_QSPI_TX)
{
    IfxCpu_enableInterrupts();
#ifdef TLF_USE_DMA
    IfxQspi_SpiMaster_isrDmaTransmit(&(g_Qspi_TLF_Cpu.drivers.spiMaster));
#else
    IfxQspi_SpiMaster_isrTransmit(&(g_Qspi_TLF_Cpu.drivers.spiMaster));
#endif

}
#endif

/** \brief Handle tlf_qspi_Rx interrupt.
 *
 * \isrProvider \ref CPU_WHICH_SERVICE_TLF
 * \isrPriority \ref ISR_PRIORITY_TLF_QSPI
 *
 */
void ISR_tlf_qspi_Rx()
{
    IfxCpu_enableInterrupts();
#ifdef TLF_USE_DMA
    IfxQspi_SpiMaster_isrDmaReceive(&(g_Qspi_TLF_Cpu.drivers.spiMaster));
#else
    IfxQspi_SpiMaster_isrReceive(&(g_Qspi_TLF_Cpu.drivers.spiMaster));
#endif
}

#if 0
IFX_INTERRUPT(ISR_tlf_qspi_Rx, CPU_WHICH_SERVICE_TLF, ISR_PRIORITY_TLF_QSPI_RX)
{
    IfxCpu_enableInterrupts();
#ifdef TLF_USE_DMA
    IfxQspi_SpiMaster_isrDmaReceive(&(g_Qspi_TLF_Cpu.drivers.spiMaster));
#else
    IfxQspi_SpiMaster_isrReceive(&(g_Qspi_TLF_Cpu.drivers.spiMaster));
#endif
}
#endif
/** \brief Handle tlf_qspi_Er interrupt.
 *
 * \isrProvider \ref CPU_WHICH_SERVICE_TLF
 * \isrPriority \ref ISR_PRIORITY_TLF_QSPI
 *
 */
void ISR_tlf_qspi_Er()
{
    IfxCpu_enableInterrupts();
    IfxQspi_SpiMaster_isrError(&(g_Qspi_TLF_Cpu.drivers.spiMaster));
}

#if 0
IFX_INTERRUPT(ISR_tlf_qspi_Er, CPU_WHICH_SERVICE_TLF, ISR_PRIORITY_TLF_QSPI_ER)
{
    IfxCpu_enableInterrupts();
    IfxQspi_SpiMaster_isrError(&(g_Qspi_TLF_Cpu.drivers.spiMaster));
}
#endif
/** \brief TLF (QSPI) initialization
 *
 * This function initializes Qspix in master mode.
 */
Locked