1 /*###ICF### Section handled by ICF editor, don't touch! ****/
2 /*-Editor annotation file-*/
3 /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
4 /*-Memory Regions-*/
5 define symbol __ICFEDIT_region_ROM_start__ =
0x00000000;
6 define symbol __ICFEDIT_region_ROM_end__ =
0x0000FFFF;
7 define symbol __ICFEDIT_region_RAM_start__ =
0x00010000;
8 define symbol __ICFEDIT_region_RAM_end__ =
0x0001FFFF;
9 /*-Sizes-*/
10 define symbol __ICFEDIT_size_cstack__ =
0x2000;
11 define symbol __ICFEDIT_size_heap__ =
0x8000;
12 /**** End of ICF editor section. ###ICF###*/
13
14
15 define memory mem with size =
4G;
16 define region ROM_region = mem:[
from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
17 define region RAM_region = mem:[
from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
18
19 define block CSTACK with alignment =
8, size =
__ICFEDIT_size_cstack__ { };
20 define block HEAP with alignment =
8, size =
__ICFEDIT_size_heap__ { };
21
22 initialize by copy { readwrite };
23 do not initialize { section .noinit };
24
25 // Project > Options > Build Actions > Post-build command line
26 //
27 // ielftool --checksum __checksum:4,crc32,0x0;__checksum_first_dword-__checksum_last_dword+3 --verbose "$TARGET_PATH$" "$TARGET_PATH$"
28
29 define block RAM_CONTENT with
fixed order
30 {
31 readwrite,
32 block HEAP,
33 block CSTACK
34 };
35
36 //define block ROM_CONTENT with fixed order
37 //{
38 // readonly section read_only_start,
39 // readonly,
40 // readonly section read_only_end
41 //};
42 //place in ROM_region { block ROM_CONTENT };
43
44 place at address mem:__ICFEDIT_region_ROM_start__ {
readonly section read_only_start };
45
46 //define block read_only_start { readonly section read_only_start };
47 //place in ROM_region { first block read_only_start };
48
49 place
in ROM_region {
readonly };
50
51 define block read_only_end {
readonly section read_only_end };
52 place
in ROM_region { last block read_only_end };
53
54 place
in RAM_region { block RAM_CONTENT };
1 MODULE startup
2
3 EXTERN main
4
5 PUBLIC __read_only_size
6 PUBLIC __iar_program_start
7 PUBLIC __checksum_first_dword
8 PUBLIC __checksum_last_dword
9 PUBLIC __checksum
10
11 SECTION
read_only_end:CODE:ROOT(
2)
12 CODE32
13 __checksum_last_dword
14 DCD 0x55AA55AA
; magic dword
15 __checksum
16 DCD 0x00000000
; will be filled ielftool
17 __read_only_end
18
19 ; Forward declaration of sections.
20 SECTION
CSTACK:DATA:NOROOT(
3)
21 SECTION
read_only_start:CODE:ROOT(
2)
22 CODE32
23
24 __read_only_start
25 __checksum_first_dword
26 RST B __iar_program_start
; 0x00000000
27 UND B __iar_program_start
; 0x00000004
28 SWI B __iar_program_start
; 0x00000008
29 IABT B __iar_program_start
; 0x0000000C
30 DABT B __iar_program_start
; 0x00000010
31 __read_only_size
32 SIZ DCD
__read_only_end-__read_only_start ; 0x00000014
33 IRQ B __iar_program_start
; 0x00000018
34 FIQ B __iar_program_start
; 0x0000001C
35
36 ;-------------------------------------------------------------------------------
37 __iar_program_start
38 ;-------------------------------------------------------------------------------
39 MSR CPSR_c, #0x1F
; Change to User mode, Enable IRQ/FIQ
40 ldr sp,=SFE(CSTACK)
; End of CSTACK(user)
41 B
main ; Note : use B not BL, because an
42 ; application will never return
43
44 END
1 int main(void)
2 {
3 for (
;;);
4 }
转载于:https://www.cnblogs.com/shangdawei/archive/2013/01/01/2841469.html
相关资源:DirectX修复工具V4.0增强版