AnsweredAssumed Answered

MQX lite and bootlaoder

Question asked by Daniele Cortellazzi on Jul 1, 2015
Latest reply on Jul 14, 2015 by Daniele Cortellazzi

Hi all,

 

i have a device with a uTasker Bootlader an MQX lite. I have change the Memory map of the firmware :

 

MEMORY {

  m_interrupts (RX) : ORIGIN = 0x00008080, LENGTH = 0x00000200

  m_cfmprotrom (RX) : ORIGIN = 0x00008400, LENGTH = 0x00000010

  m_text      (RX) : ORIGIN = 0x00008410, LENGTH = 0x00037BF0

  m_data      (RW) : ORIGIN = 0x1FFFE200, LENGTH = 0x00007E00

}

 

I know that MQX can copy the interrupt to RAM with the setting MQX_ROM_VECTORS set to 0 in user_config.h. This is necessary for a correct functioning because at 0x00 address i have the bootlaoder. Although this setting the system crash as visible in the image when is execute

 

 #ifdef PEX_RTOS_INIT
    PEX_RTOS_INIT();                   /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */
  #endif

 

in PE_low_level_init.

Thanks

 

PS: the system crash in

 

void _psp_int_install(void)
{
    KERNEL_DATA_STRUCT_PTR kernel_data;


    _GET_KERNEL_DATA(kernel_data);
    __set_MSP((uint_32)kernel_data->INTERRUPT_STACK_PTR);


#if !MQX_ROM_VECTORS
    {
        uint_32         i;
        uint_32_ptr     ptr = (pointer)(&__vect_table);


        /* Initialize the hardware interrupt vector table
         * 0: Initial stack pointer
         * 1: Initial program counter
         */
        for (i = 16; i < PSP_MAXIMUM_INTERRUPT_VECTORS; i++) {
            ptr[i] = (uint_32)_int_kernel_isr;
        }
    }
#endif
}

 

when the ptr[i] = (uint_32)_int_kernel_isr; is executed

Attachments

Outcomes