With the reference, I'm trying to implement Flash Boot Loader concept (FBL) for my MPC5602P in CW Ver 2.9. I'm facing the following issues. Kindly solve this.
1.) Is it possible to download both the user application program and boot loader application without erasing earlier program? As I tried programming the boot loader application using the PE Micro USB Multilink, it erases the earlier programmed user application, and vice versa. ( I ensured it by seeing the memory window. It completely erased the earlier programmed memory. including the key. So my user application is not executing the user application. So What I need to do? )
2.) I also faced this issue, when executing the __start file, it is not executing after the step lwz r10,0(r9), as my complete memory filled with XX XX XX. The address r9 is a valid one 0x0003_FFF8.
Thanks in advance,
1. Yes, it is possible. It depends on tools you are using. PE always erase and then program. for example in Lauterbach you can select erase or reprogram before loading the code.
2. this is caused by executing load instruction from empty location. But erase memory must be filled with 0xFFFF and not XX.
Very thanks for your reply. I just implemented FBL the and when reset it should jump to the address location. Kindly suggest whether I need to jump to main() address location or the starting address (of the sector) location.This is the main reason I'm getting the error.
Thanks and regards,
Thanks for your swift response. I developed Flash bootloader in sector B0F0 and user application in B0F5. Now as per the thread we need to jump to 0x00020004 address to start the user application. But if I do that IVOR trap is happening. Now I need to know to which address location I need to jump to execute the exact user application.
Thanks in advance,
Most probably you are getting illegal instruction IVOR. I expect you executing jump to location where you have no code loaded. Please check it.
Share debugger memory screen of address 0x20004 first.
Now I got something. Once it jumps to user application, in the assembler section it can be seen the execution of system call instruction (se_sc instruction) which actually creating IVOR8 interrupt. One can see the below screen shot which is executing se_sc instruction and therefor the IVOR8 interrupt occurs. Now I need to know the things to be performed in my bootloader application so that the execution of se_sc instruction wont lead to IVOR8 trap. Some thing I need to do with vector address shifting.
Hope you understand my problem and comeback with solution,