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.
Thank you very much! It's really looks better. I add .ini file as initialization file in debug/simulator.
FUNC void Setup (void) { SP = _RDWORD(0x10000000); // Setup Stack Pointer PC = _RDWORD(0x10000004); // Setup Program Counter _WDWORD(0xE000ED08, 0x10000000); // Setup Vector Table Offset Register - VTOR } LOAD %L INCREMENTAL // load the application Setup(); // Setup for Running g, main
And try to run my programm in simulator. But it doesn't work even in simulator... It's stoped in 1st instruction :
0x00000000 0000 MOVS r0,r0
Where is my mistake??? Does anyone knows?
With best regards, Vladimir
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.
View all questions in Keil forum