Memory Map of the image
Image Entry point : 0x00000179
Load Region LR_ROM (Base: 0x00000000, Size: 0x000015a4, Max: 0x00200000, ABSOLUTE)
Execution Region ER_CODE1_CONSTDATA1 (Base: 0x00000000, Size: 0x00000b80, Max: 0xffffffff, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x00000000 0x000000bc Data RO 4 RESET startup_nuc505series.o
0x000000bc 0x00000008 Code RO 946 * !!!main c_w.l(__main.o)
0x000000c4 0x00000034 Code RO 1098 !!!scatter c_w.l(__scatter.o)
0x000000f8 0x0000001a Code RO 1100 !!handler_copy c_w.l(__scatter_copy.o)
0x00000112 0x00000002 PAD
0x00000114 0x0000001c Code RO 1102 !!handler_zi c_w.l(__scatter_zi.o)
0x00000130 0x00000006 Code RO 975 .ARM.Collect$$libinit$$00000000 c_w.l(libinit.o)
0x00000136 0x00000000 Code RO 983 .ARM.Collect$$libinit$$00000006 c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 985 .ARM.Collect$$libinit$$00000008 c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 987 .ARM.Collect$$libinit$$0000000A c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 990 .ARM.Collect$$libinit$$0000000D c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 992 .ARM.Collect$$libinit$$0000000F c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 994 .ARM.Collect$$libinit$$00000011 c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 996 .ARM.Collect$$libinit$$00000013 c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 998 .ARM.Collect$$libinit$$00000015 c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 1000 .ARM.Collect$$libinit$$00000017 c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 1002 .ARM.Collect$$libinit$$00000019 c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 1004 .ARM.Collect$$libinit$$0000001B c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 1006 .ARM.Collect$$libinit$$0000001D c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 1008 .ARM.Collect$$libinit$$0000001F c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 1010 .ARM.Collect$$libinit$$00000021 c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 1014 .ARM.Collect$$libinit$$00000028 c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 1016 .ARM.Collect$$libinit$$0000002A c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 1018 .ARM.Collect$$libinit$$0000002C c_w.l(libinit2.o)
0x00000136 0x00000000 Code RO 1020 .ARM.Collect$$libinit$$0000002E c_w.l(libinit2.o)
0x00000136 0x00000002 Code RO 1021 .ARM.Collect$$libinit$$0000002F c_w.l(libinit2.o)
0x00000138 0x00000002 Code RO 1041 .ARM.Collect$$libshutdown$$00000000 c_w.l(libshutdown.o)
0x0000013a 0x00000000 Code RO 1055 .ARM.Collect$$libshutdown$$00000003 c_w.l(libshutdown2.o)
0x0000013a 0x00000000 Code RO 1058 .ARM.Collect$$libshutdown$$00000006 c_w.l(libshutdown2.o)
0x0000013a 0x00000000 Code RO 1061 .ARM.Collect$$libshutdown$$00000009 c_w.l(libshutdown2.o)
0x0000013a 0x00000000 Code RO 1063 .ARM.Collect$$libshutdown$$0000000B c_w.l(libshutdown2.o)
0x0000013a 0x00000000 Code RO 1066 .ARM.Collect$$libshutdown$$0000000E c_w.l(libshutdown2.o)
0x0000013a 0x00000002 Code RO 1067 .ARM.Collect$$libshutdown$$0000000F c_w.l(libshutdown2.o)
0x0000013c 0x00000000 Code RO 948 .ARM.Collect$$rtentry$$00000000 c_w.l(rtentry.o)
0x0000013c 0x00000000 Code RO 952 .ARM.Collect$$rtentry$$00000002 c_w.l(rtentry2.o)
0x0000013c 0x00000006 Code RO 964 .ARM.Collect$$rtentry$$00000004 c_w.l(rtentry4.o)
0x00000142 0x00000000 Code RO 954 .ARM.Collect$$rtentry$$00000009 c_w.l(rtentry2.o)
0x00000142 0x00000004 Code RO 955 .ARM.Collect$$rtentry$$0000000A c_w.l(rtentry2.o)
0x00000146 0x00000000 Code RO 957 .ARM.Collect$$rtentry$$0000000C c_w.l(rtentry2.o)
0x00000146 0x00000008 Code RO 958 .ARM.Collect$$rtentry$$0000000D c_w.l(rtentry2.o)
0x0000014e 0x00000002 Code RO 979 .ARM.Collect$$rtexit$$00000000 c_w.l(rtexit.o)
0x00000150 0x00000000 Code RO 1025 .ARM.Collect$$rtexit$$00000002 c_w.l(rtexit2.o)
0x00000150 0x00000004 Code RO 1026 .ARM.Collect$$rtexit$$00000003 c_w.l(rtexit2.o)
0x00000154 0x00000006 Code RO 1027 .ARM.Collect$$rtexit$$00000004 c_w.l(rtexit2.o)
0x0000015a 0x00000002 PAD
0x0000015c 0x0000001c Code RO 686 .emb_text retarget.o
0x00000178 0x00000040 Code RO 5 * .text startup_nuc505series.o
0x000001b8 0x0000008a Code RO 942 .text c_w.l(rt_memcpy_v6.o)
0x00000242 0x00000006 Code RO 944 .text c_w.l(heapauxi.o)
0x00000248 0x00000064 Code RO 949 .text c_w.l(rt_memcpy_w.o)
0x000002ac 0x0000004a Code RO 966 .text c_w.l(sys_stackheap_outer.o)
0x000002f6 0x0000000c Code RO 968 .text c_w.l(exit.o)
0x00000302 0x00000002 PAD
0x00000304 0x00000008 Code RO 976 .text c_w.l(libspace.o)
0x0000030c 0x0000000c Code RO 1033 .text c_w.l(sys_exit.o)
0x00000318 0x00000002 Code RO 1044 .text c_w.l(use_no_semi.o)
0x0000031a 0x00000000 Code RO 1046 .text c_w.l(indicate_semi.o)
0x0000031a 0x0000000a Ven RO 1104 Veneer$$Code anon$$obj.o
0x00000324 0x0000001e Code RO 122 i.CLK_EnableModuleClock clk.o
0x00000342 0x00000002 PAD
0x00000344 0x00000050 Code RO 124 i.CLK_GetAPLLClockFreq clk.o
0x00000394 0x00000014 Code RO 127 i.CLK_GetHXTFreq clk.o
0x000003a8 0x00000034 Code RO 129 i.CLK_GetPLLClockFreq clk.o
0x000003dc 0x000000b0 Code RO 132 i.CLK_SetCoreClock clk.o
0x0000048c 0x00000074 Code RO 134 i.CLK_SetModuleClock clk.o
0x00000500 0x00000002 Code RO 688 i.Hard_Fault_Handler retarget.o
0x00000502 0x00000008 Code RO 578 i.I2S_EnableInt i2s.o
0x0000050a 0x0000004a Code RO 579 i.I2S_EnableMCLK i2s.o
0x00000554 0x0000004c Code RO 580 i.I2S_GetSourceClockFreq i2s.o
0x000005a0 0x0000006c Code RO 776 i.I2S_Init main.o
0x0000060c 0x000000c8 Code RO 581 i.I2S_Open i2s.o
0x000006d4 0x00000018 Code RO 843 i.I2S_SET_INTERNAL_CODEC codes_audio.o
0x000006ec 0x000000b0 Code RO 137 i.PLL_calculate clk.o
0x0000079c 0x00000044 Code RO 777 i.SYS_Init main.o
0x000007e0 0x0000001a Code RO 257 i.SYS_ResetModule sys.o
0x000007fa 0x00000002 PAD
0x000007fc 0x00000048 Code RO 13 i.SystemCoreClockUpdate system_nuc505series.o
0x00000844 0x00000010 Code RO 14 i.SystemInit system_nuc505series.o
0x00000854 0x00000090 Code RO 845 i.demo_MIC0 codes_audio.o
0x000008e4 0x00000098 Code RO 779 i.main main.o
0x0000097c 0x0000000a Code RO 1022 x$fpl$fpinit fz_wm.l(fpinit.o)
0x00000986 0x00000002 PAD
0x00000988 0x000001c8 Data RO 138 .constdata clk.o
0x00000b50 0x00000030 Data RO 1096 Region$$Table anon$$obj.o
Execution Region ER_VECTOR2 (Base: 0x1ff00000, Size: 0x00000400, Max: 0x00000400, ABSOLUTE, UNINIT)
Base Addr Size Type Attr Idx E Section Name Object
0x1ff00000 0x00000400 Zero RW 1 ER_VECTOR2.bss anon$$obj.o
Execution Region ER_CODE2_CONSTDATA2 (Base: 0x1ff00400, Size: 0x0001e688, Max: 0x0001fc00, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x1ff00400 0x00000678 Code RO 910 .emb_text audio_irq.o
0x1ff00a78 0x00000050 Code RO 911 i.I2S_IRQHandler audio_irq.o
0x1ff00ac8 0x00000002 Code RO 912 i.SW audio_irq.o
0x1ff00aca 0x00000002 PAD
0x1ff00acc 0x00000010 Data RW 15 .data system_nuc505series.o
0x1ff00adc 0x00000348 Data RW 914 .data audio_irq.o
0x1ff00e24 0x0001daf8 Zero RW 913 .bss audio_irq.o
0x1ff1e91c 0x00000060 Zero RW 977 .bss c_w.l(libspace.o)
0x1ff1e97c 0x00000004 PAD
0x1ff1e980 0x00000008 Zero RW 3 HEAP startup_nuc505series.o
0x1ff1e988 0x00000100 Zero RW 2 STACK startup_nuc505series.o
以上是我编译后的内存结果方法是编辑scatter.ld文件 。
LR_ROM 0x00000000 0x00200000 ; 2MB (SPI Flash)
{
; here is the SPI Flash section (code and const data) that just use once only at startup
ER_CODE1_CONSTDATA1 +0
{
startup_NUC505Series.o(RESET, +First)
startup_NUC505Series.o
system_NUC505Series.o
anon$$obj.o
clk.o
sys.o
i2s.o
rt_memcpy_v6.o
heapauxi.o
rtentry.o
rt_memcpy_w.o
rtentry2.o
rtentry4.o
sys_stackheap_outer.o
exit.o
libspace.o
sys_exit.o
use_no_semi.o
indicate_semi.o
retarget.o
fpinit.o
libinit.o
libinit2.o
libshutdown.o
libshutdown2.o
rtexit.o
rtexit2.o
;i.demo_MIC0
;i.I2S_SET_INTERNAL_CODEC
;i.SYS_Init
;i.I2S_Init
;i.main
codes_audio.o
main.o
__main.o
__scatter*.o
;*(+RO) ; text code and const data
}
; here are the SRAM sections moved at startup for fast accessing.
; Relocate vector table in SRAM for fast interrupt handling.
ER_VECTOR2 0x1FF00000 EMPTY 0x00000400
{
}
ER_CODE2_CONSTDATA2 0x1FF00400 0x0001FC00
{
audio_irq.o
*(+RW, +ZI) ; data and others
}
;ER_DATA_ZI 0x1FF10000 0x00010000
;{
;*(+RW, +ZI) ; data and others
;}
}
|