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.
Hello. As you can see in second message. You have to write correct jump in your application. And you will need to use "NO CRP" key in your main project settings (Tab "ASM"). And my mistake was is using variables with __attribute__((at(0xxxx))). And if my variable was locate in sector with bootloader, after writing main firmware my bootloader was ereased.
With best regards, Vladimir.
Thanks for the info Vladimir!. What i have done is- used the jump instruction and it works fine. Now, I have introduced RTX in my App code - as soon as I do that - the jump does not work fine. Is there something special that needs to be done in case of RTX in App code?
Boot code goes like this:
typedef void ( *AppCode )(void); static const AppCode AppCodeStart = (AppCode)(0x4001); int main(void) { __disable_fault_irq( ); AppCodeStart(); }
When there is no reference to RTX there is no issue. But as soon as I introduce RTX in App code - my jump comes back to the boot
-Vani
Unfortunally i don't use RTX. And therefore i can't help you in this question. But when i search in this forum, i found some messages with RTX and bootloader. Try to use search in this forum.
Hi Vladimir,
Referred to few of your previous posts and the issue is now resolved! thanks!
I think you must to say thanks these people who help me! :-) With best regards, Vladimir.