I use MC56F83783 now. I created two projects A and B.
Project A is my application.
Project B is a boot code for checking all status in flash before jump to Project A.
I split flash into two parts. The section of Project A is from 0x6000 to 0x18000.
The section of Project B is from 0x0000 to 0x6000.
I would use the debug tool to write Project A into Flash. And then I use the flash programmer of CodeWarrior to write Project B into Flash and skip the section of Project A.
The end of the line of the main function has placed the assembly code "asm(JMP 0x6000;);" in Project B.
I saw the status after running Project B but don't saw any status when jumping to Project A.
All above are for updating the section of Project A in the future and no modify the section of Project B.
Thanks.
Cody
已解决! 转到解答。
I do some modifies. I can let Project B jump to Project A now, but I meet a problem that needs help.
First I put a GPIO in while(1), then I can saw the toggle status of GPIO after jumping from Project B to Project A.
And then I modified my code to insert the pointer of the function array for creating more tasks.
There is no toggle status of GPIO after jumping from Project B to Project A.
And then I place a keyword __pmem, then it works.
If I use the function pointer of the array and no place __pmem, then the program would be restarted again and again after resetting the power.
Is there anyone who can help me and tell me what kind of thing I did wrong?
Thanks a lot.
Cody
CH2(Blue) is the working status of Project B.
CH4(Green) is the jumping status after jump from Project B to Project A.
CH1(Yellow) is the working status of Project A.
My operation sequence:
1. I use debug tool erase and program Project A into Flash.
2. I use the flash programmer tool to erase and program the section of Project B.
3. Reset the power.