做bootloader,遇到程序跳转问题,询问几个基础性问题:
在CMD文件定义中,与编译完成后输出的out文件、bin文件,程序的入口地址在哪里?比如:将bin文件烧写进入flash, bootloader跳转到这个bin文件开始执行,这个地址是从CMD或者map文件的哪个位置可以看出来?入口地址是否可以设置为固定地址?
1.比如下面的是C28 APP程序编译完成后map文件的前面一段,这个从bootloader程序跳转后进入APP运行的地址是0x0000e24a吗?如果是的话,这个"code_start"的地址是否可以设置为固定地址?怎么设置?
******************************************************************************
TMS320C2000 Linker PC v6.4.6******************************************************************************
>> Linked Tue Mar 01 14:04:59 2016
OUTPUT FILE NAME: <flash_programming_c28.out>
ENTRY POINT SYMBOL: "code_start" address: 0000e24a
MEMORY CONFIGURATION
name origin length used unused attr fill
———————- ——– ——— ——– ——– —- ——–
PAGE 0:
RAMS0 0000c000 00005000 0000224c 00002db4 RWIX
FLASH 00100000 0003ff80 00000000 0003ff80 RWIX
CSM_RSVD 0013ff80 00000070 00000070 00000000 RWIX
BEGIN 0013fff0 00000002 00000000 00000002 RWIX
FLASH_EXE_ONLY_P0 0013fff2 00000002 00000002 00000000 RWIX
ECSL_PWL_P0 0013fff4 00000004 00000004 00000000 RWIX
CSM_PWL_P0 0013fff8 00000008 00000008 00000000 RWIX
FPUTABLES 003fd258 000006a0 00000000 000006a0 RWIX
IQTABLES 003fd8f8 00000b50 00000000 00000b50 RWIX
IQTABLES2 003fe448 0000008c 00000000 0000008c RWIX
IQTABLES3 003fe4d4 000000aa 00000000 000000aa RWIX
BOOTROM 003feda8 00001200 00000000 00001200 RWIX
PIEMISHNDLR 003fffbe 00000002 00000000 00000002 RWIX
RESET 003fffc0 00000002 00000000 00000002 RWIX
VECTORS 003fffc2 0000003e 00000000 0000003e RWIX
PAGE 1:
BOOT_RSVD 00000000 00000050 00000050 00000000 RWIX
RAMM0 00000050 000003b0 000003b0 00000000 RWIX
RAMM1 00000400 00000400 00000400 00000000 RWIX
RAML0 00008000 00004000 0000084b 000037b5 RWIX
RAMS5 00011000 00001000 00000000 00001000 RWIX
RAMS6 00012000 00001000 00000000 00001000 RWIX
RAMS7 00013000 00001000 00000000 00001000 RWIX
CTOMRAM 0003f800 00000380 00000000 00000380 RWIX
MTOCRAM 0003fc00 00000380 00000000 00000380 RWIX
SEGMENT ALLOCATION MAP
run origin load origin length init length attrs members
———- ———– ———- ———– —– ——-
00200030 00200030 00000006 00000006 r-x
00200030 00200030 00000006 00000006 r-x .resetisr
00201000 00201000 000001b0 00000000 rw-
00201000 00201000 000001b0 00000000 rw- .intvecs
00204000 00204000 00004968 00004968 r-x
00204000 00204000 00004384 00004384 r-x .text
00208384 00208384 00000359 00000359 r– .const
002086e0 002086e0 00000288 00000288 r– .cinit
20000000 00201200 00000068 00000068 r-x
20000000 00201200 00000068 00000068 r-x ramfuncs
20002000 20002000 000019e8 00000000 rw-
20002000 20002000 00001000 00000000 rw- .stack
20003000 20003000 00000924 00000000 rw- .bss
20003924 20003924 000000c4 00000000 rw- .data
20003c00 20003c00 00000258 00000000 rw-
20003c00 20003c00 00000258 00000000 rw- .vtable
2,下面是m3 APP程序编译完成后map文件的前面一段,这个从bootloader程序跳转后进入APP运行的地址是00207a05吗?如果是的话,这个"code_start"的地址是否可以设置为固定地址?怎么设置?
******************************************************************************
TI ARM Linker PC v5.2.2******************************************************************************
>> Linked Tue Jan 05 14:40:46 2016
OUTPUT FILE NAME: <Shenjun_Lab3_M3.out>
ENTRY POINT SYMBOL: "_c_int00" address: 00207a05
MEMORY CONFIGURATION
name origin length used unused attr fill
———————- ——– ——— ——– ——– —- ——–
CSM_ECSL_Z1 00200000 00000024 00000000 00000024 RWIX
CSM_RSVD_Z1 00200024 0000000c 00000000 0000000c RWIX
RESETISR 00200030 00000008 00000006 00000002 R X
INTVECS 00201000 000001b0 000001b0 00000000 R X
FLASHLOAD 00201200 00002e00 00000068 00002d98 R X
FLASH 00204000 0007bf00 00004965 0007759b R X
CSM_RSVD_Z2 0027ff00 000000dc 00000000 000000dc RWIX
CSM_ECSL_Z2 0027ffdc 00000024 00000000 00000024 RWIX
C0 20000000 00002000 00000068 00001f98 RW X
C1 20002000 00002000 00001c40 000003c0 RW X
BOOT_RSVD 20004000 00000900 00000000 00000900 R X
C2 20004900 00001700 00000000 00001700 RW X
C3 20006000 00002000 00000000 00002000 RW X
S0 20008000 00002000 00000000 00002000 RW X
S1 2000a000 00002000 00000000 00002000 RW X
S2 2000c000 00002000 00000000 00002000 RW X
S3 2000e000 00002000 00000000 00002000 RW X
S4 20010000 00002000 00000000 00002000 RW X
S5 20012000 00002000 00000000 00002000 RW X
S6 20014000 00002000 00000000 00002000 RW X
S7 20016000 00002000 00000000 00002000 RW X
CTOMRAM 2007f000 00000800 00000000 00000800 R X
MTOCRAM 2007f800 00000800 00000000 00000800 RW X
SEGMENT ALLOCATION MAP
run origin load origin length init length attrs members
———- ———– ———- ———– —– ——-
00200030 00200030 00000006 00000006 r-x
00200030 00200030 00000006 00000006 r-x .resetisr
00201000 00201000 000001b0 00000000 rw-
00201000 00201000 000001b0 00000000 rw- .intvecs
00204000 00204000 00004968 00004968 r-x
00204000 00204000 00004384 00004384 r-x .text
00208384 00208384 00000359 00000359 r– .const
002086e0 002086e0 00000288 00000288 r– .cinit
20000000 00201200 00000068 00000068 r-x
20000000 00201200 00000068 00000068 r-x ramfuncs
20002000 20002000 000019e8 00000000 rw-
20002000 20002000 00001000 00000000 rw- .stack
20003000 20003000 00000924 00000000 rw- .bss
20003924 20003924 000000c4 00000000 rw- .data
20003c00 20003c00 00000258 00000000 rw-
20003c00 20003c00 00000258 00000000 rw- .vtable
mangui zhang:
入口地址一般是_c_int00
如果要进行修改 一般是进行二次引导