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

LPC1778 can't start from any IROM Address only 0x0

Dear All,

I use LPC1778 and try to divide internal flash memory for my handmade bootloader and firmware.
And when i set another IROM1 start address for my firmware (for example 0x1000) i see SWD Communication Failure message in window "Building Output". After that i can't debug or update my mcu. Can use only ISP.
Why changing IROM1 start address is stopping MCU?
What i have to do to run my code from any address?
P.S. When i use LPC2367 there is no these problems.
P.P.S. My version 4.53

I trying apply RAM_MODE, REMAP commands for my startup file. But doesn't work.
With best regards, Vladimir.

Parents
  • I removed .ini file. And created bootloader with next code:

    
    #define NVIC_VectTab_FLASH       0x10000
    #define SP_OFFS                     0
    #define RESET_OFFS                  4
    
    
    int main (void)
    {
            //========== NEW BOOTLOADER FOR CORTEX-M3 =================
      void (*user_code_entry)(void);
      register uint32_t MSP __ASM("msp");
      SCB->VTOR       = NVIC_VectTab_FLASH;
      user_code_entry = (void (*)(void))(( *((unsigned int *)(NVIC_VectTab_FLASH + RESET_OFFS))) );
      MSP             = *((unsigned int *)(NVIC_VectTab_FLASH + SP_OFFS));
    
      user_code_entry();
    }
    

    And after burning my programm from: 0x10000 address
    I see next message:

    SWD Communication Failure.

    Where is my mistake?
    Please help.

Reply
  • I removed .ini file. And created bootloader with next code:

    
    #define NVIC_VectTab_FLASH       0x10000
    #define SP_OFFS                     0
    #define RESET_OFFS                  4
    
    
    int main (void)
    {
            //========== NEW BOOTLOADER FOR CORTEX-M3 =================
      void (*user_code_entry)(void);
      register uint32_t MSP __ASM("msp");
      SCB->VTOR       = NVIC_VectTab_FLASH;
      user_code_entry = (void (*)(void))(( *((unsigned int *)(NVIC_VectTab_FLASH + RESET_OFFS))) );
      MSP             = *((unsigned int *)(NVIC_VectTab_FLASH + SP_OFFS));
    
      user_code_entry();
    }
    

    And after burning my programm from: 0x10000 address
    I see next message:

    SWD Communication Failure.

    Where is my mistake?
    Please help.

Children
No data