iar ewarm checksum crc32

 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 }

 

你可能感兴趣的:(checksum)