This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Tool/software: TI C/C++ Compiler
I work with Code Composer Studio 6.
My project contains two parts: my boot loader a application, the entry point symbol in application is defined by the following manner:
The lnk_msp430f5659.cmd file has this change:
MEMORY
{
CINIT_00 : origin = 0x8000, length = 0x200
}
SECTION
{
.text:_isr:_c_int00_noexit : > CINIT_00
}
Then the my_project.map file looks like this:
ENTRY POINT SYMBOL: "_c_int00" address 00008000
MEMORY CONFIGURATION
name origin length used unsused attr fill
CINIT_00 00008000 00000200 0000001a 000001e6 RWIX
SECTION ALLOCATION MAP
output attributes/
section page origin length input sections
-------- ---- ---------- ---------- ----------------
.cinit 0 00009200 00000448
00009200 00000417 (.cinit..data.load) [load image, compression = rle]
00009617 00000001 --HOLE-- [fill = 0]
00009618 0000000c (__TI_handler_table)
00009624 00000006 (.cinit..TI.bound:InfoFlashSegC.load) [load image, compression = zero_init]
0000962a 00000006 (.cinit..bss.load) [load image, compression = zero_init]
00009630 00000018 (__TI_cinit_table)
This is a good expected result, right now I have the following problem:
I had write some new code and add the new module to the project, I did not change configuration files, but my ENTRY POINT SYMBOL LOCATION is changed and I don't understand why ?
Now my my_project.map file looks like this:
ENTRY POINT SYMBOL: "_c_int00" address 0000a434
MEMORY CONFIGURATION
name origin length used unsused attr fill
CINIT_00 00008000 00000200 00000000 0000200 RWIX
SECTION ALLOCATION MAP
output attributes/
section page origin length input sections
-------- ---- ---------- ---------- ----------------
.cinit 0 00009200 00000464
00009200 00000433 (.cinit..data.load) [load image, compression = rle]
00009633 00000001 --HOLE-- [fill = 0]
00009634 0000000c (__TI_handler_table)
00009640 00000006 (.cinit..TI.bound:InfoFlashSegC.load) [load image, compression = zero_init]
00009646 00000006 (.cinit..bss.load) [load image, compression = zero_init]
0000964c 00000018 (__TI_cinit_table)
This code is working, but I have a problem to run my application from the boot loader ENTRY POINT which located in address 0x8000 because the location of the application ENTRY POINT is changed.
1. I want understand what is the cause of this problem ?
2. I need any good practice way to solve it.
Hi Alexander
Could you share your whole project to me?
Best regards
Gary
Hi
First the symbol CINIT_00 is just you defined and this will not affect the entry point.
We do have a boot loader demo (More detail refer to this)
The way this demo do to jump from boot code to application code is use a function pointer
#define TI_MSPBoot_APPMGR_JUMPTOAPP() {((void (*)()) _Appl_Reset_Vector) ();}
The way this demo to get the application code entry point is use the .reset. Because the CCS always put the entry point to the .reset vector.
Best regards
Gary
**Attention** This is a public forum