📄 bootloader.lst
字号:
1 .file "bootloader.c"
9 .Ltext0:
10 .section .rodata.str1.4,"aMS",%progbits,1
11 .align 2
12 .LC0:
13 0000 56657269 .ascii "Verify \000"
13 66792000
14 .align 2
15 .LC1:
16 0008 0A0D00 .ascii "\012\015\000"
17 000b 00 .align 2
18 .LC2:
19 000c 46696C65 .ascii "File \000"
19 2000
20 0012 0000 .align 2
21 .LC3:
22 0014 206E6F74 .ascii " not found!\012\015\000"
22 20666F75
22 6E64210A
22 0D00
23 0022 0000 .align 2
24 .LC4:
25 0024 4D656D6F .ascii "Memory Error %x : %x EX: %x \015\012\000"
25 72792045
25 72726F72
25 20257820
25 3A202578
26 0043 00 .align 2
27 .LC5:
28 0044 2E00 .ascii ".\000"
29 .text
30 .align 2
31 .global verify_file
33 verify_file:
34 .LFB3:
35 .file 1 "bootloader.c"
1:bootloader.c **** /*#######################################################################################
2:bootloader.c **** ARM Linux MMC Boot Loader
3:bootloader.c ****
4:bootloader.c **** Copyright (C) 2004 Ulrich Radig
5:bootloader.c **** #######################################################################################*/
6:bootloader.c ****
7:bootloader.c **** #include "bootloader.h"
8:bootloader.c ****
9:bootloader.c **** void load_file (char *filename, int *mem_adresse)
10:bootloader.c **** {
11:bootloader.c ****
12:bootloader.c **** unsigned char buffer[513];
13:bootloader.c **** unsigned short int cluster= 0;
14:bootloader.c **** unsigned char Dir_Attrib = 0;
15:bootloader.c **** long File_Size = 0;
16:bootloader.c ****
17:bootloader.c **** if (Search_File(filename,&cluster,&File_Size,&Dir_Attrib,buffer) == 1)
18:bootloader.c **** {
19:bootloader.c **** printf("Loading ");
20:bootloader.c **** printf(filename);
21:bootloader.c **** printf("\n\r");
22:bootloader.c **** }
23:bootloader.c **** else
24:bootloader.c **** {
25:bootloader.c **** printf("File ");
26:bootloader.c **** printf(filename);
27:bootloader.c **** printf(" not found!\n\r");
28:bootloader.c **** while(1)
29:bootloader.c **** {
30:bootloader.c **** }
31:bootloader.c **** }
32:bootloader.c ****
33:bootloader.c **** unsigned long block_counter = 0;
34:bootloader.c ****
35:bootloader.c **** while(File_Size>0)
36:bootloader.c **** {
37:bootloader.c **** Read_File (cluster,buffer,block_counter);
38:bootloader.c **** block_counter++;
39:bootloader.c **** for (unsigned short int a=0;a<512;a=a+4)
40:bootloader.c **** {
41:bootloader.c **** *mem_adresse = (buffer[a+3]<<24)+
42:bootloader.c **** (buffer[a+2]<<16)+
43:bootloader.c **** (buffer[a+1]<<8)+
44:bootloader.c **** buffer[a];
45:bootloader.c ****
46:bootloader.c **** mem_adresse++;
47:bootloader.c **** *mem_adresse = 0x00000000;
48:bootloader.c **** mem_adresse--;
49:bootloader.c ****
50:bootloader.c **** if(*mem_adresse != ( (buffer[a+3]<<24)+
51:bootloader.c **** (buffer[a+2]<<16)+
52:bootloader.c **** (buffer[a+1]<<8)+
53:bootloader.c **** buffer[a]) )
54:bootloader.c **** {
55:bootloader.c **** printf("Memory Error %x : %x EX: %x \r\n",mem_adresse,*mem_adresse,((buffer[a+3]<<24)+
56:bootloader.c **** (buffer[a+2]<<16)+
57:bootloader.c **** (buffer[a+1]<<8)+
58:bootloader.c **** buffer[a]));
59:bootloader.c **** }
60:bootloader.c ****
61:bootloader.c ****
62:bootloader.c **** mem_adresse++;
63:bootloader.c ****
64:bootloader.c **** File_Size = File_Size - 4;
65:bootloader.c **** if(File_Size<=0)
66:bootloader.c **** {
67:bootloader.c **** break;
68:bootloader.c **** }
69:bootloader.c **** }
70:bootloader.c **** printf(".");
71:bootloader.c **** }
72:bootloader.c **** printf("\n\r");
73:bootloader.c **** return;
74:bootloader.c **** };
75:bootloader.c ****
76:bootloader.c **** void verify_file (char *filename, int *mem_adresse)
77:bootloader.c **** {
36 0, frame = 524
37 @ frame_needed = 0, uses_anonymous_args = 0
38 .LVL0:
39 stmfd sp!, {r4, r5, r6, lr}
40 0000 70402DE9 .LCFI0:
41 sub sp, sp, #528
42 0004 21DE4DE2 .LCFI1:
43 .loc 1 84 0
78:bootloader.c ****
79:bootloader.c **** unsigned char buffer[513];
80:bootloader.c **** unsigned short int cluster= 0;
81:bootloader.c **** unsigned char Dir_Attrib = 0;
82:bootloader.c **** long File_Size = 0;
83:bootloader.c ****
84:bootloader.c **** if (Search_File(filename,&cluster,&File_Size,&Dir_Attrib,buffer) == 1)
44 sp, #8
45 0008 08C08DE2 sub ip, ip, #1
46 000c 01C04CE2 add r3, sp, #524
47 0010 833F8DE2 .loc 1 80 0
48 mov r5, #0
49 0014 0050A0E3 .loc 1 84 0
50 str ip, [sp, #0]
51 0018 00C08DE5 .loc 1 77 0
52 mov r6, r1
53 001c 0160A0E1 .loc 1 80 0
54 add ip, sp, #512
55 0020 02CC8DE2 .loc 1 84 0
56 add r1, sp, #524
57 0024 831F8DE2 .LVL1:
58 add r2, sp, #520
59 0028 822F8DE2 add r3, r3, #3
60 002c 033083E2 .loc 1 81 0
61 strb r5, [sp, #527]
62 0030 0F52CDE5 .LVL2:
63 .loc 1 80 0
64 strh r5, [ip, #12] @ movhi
65 0034 BC50CCE1 .LVL3:
66 .loc 1 82 0
67 str r5, [sp, #520]
68 0038 08528DE5 .LVL4:
69 .loc 1 77 0
70 mov r4, r0
71 003c 0040A0E1 .loc 1 84 0
72 bl Search_File
73 0040 FEFFFFEB .LVL5:
74 cmp r0, #1
75 0044 010050E3 bne .L2
76 0048 0500001A .loc 1 86 0
85:bootloader.c **** {
86:bootloader.c **** printf("Verify ");
77 1 87 0
78 004c D8009FE5 mov r0, r4
79 0050 FEFFFFEB bl _printf_P
87:bootloader.c **** printf(filename);
80 oc 1 88 0
81 0054 0400A0E1 ldr r0, .L16+4
82 0058 FEFFFFEB b .L15
88:bootloader.c **** printf("\n\r");
83 :
84 005c CC009FE5 .loc 1 92 0
85 0060 290000EA ldr r0, .L16+8
86 bl _printf_P
89:bootloader.c **** }
90:bootloader.c **** else
91:bootloader.c **** {
92:bootloader.c **** printf("File ");
87 c 1 93 0
88 0064 C8009FE5 mov r0, r4
89 0068 FEFFFFEB bl _printf_P
93:bootloader.c **** printf(filename);
90 oc 1 94 0
91 006c 0400A0E1 ldr r0, .L16+12
92 0070 FEFFFFEB bl _printf_P
94:bootloader.c **** printf(" not found!\n\r");
93 :
94 0074 BC009FE5 b .L5
95 0078 FEFFFFEB .LVL6:
96 .L6:
97 007c FEFFFFEA .loc 1 104 0
98 add r3, sp, #512
99 .LVL7:
95:bootloader.c **** while(1)
96:bootloader.c **** {
97:bootloader.c **** }
98:bootloader.c **** }
99:bootloader.c ****
100:bootloader.c **** unsigned long block_counter = 0;
101:bootloader.c ****
102:bootloader.c **** while(File_Size>0)
103:bootloader.c **** {
104:bootloader.c **** Read_File (cluster,buffer,block_counter);
100 , sp, #8
101 0080 023C8DE2 sub r1, r1, #1
102 ldrh r0, [r3, #12]
103 0084 08108DE2 mov r2, r5
104 0088 011041E2 bl Read_File
105 008c BC00D3E1 mov r4, #0
106 0090 0520A0E1 .LVL8:
107 0094 FEFFFFEB .LVL9:
108 0098 0040A0E3 .L7:
109 .LBB2:
110 .loc 1 108 0
111 add ip, sp, #528
112 add r1, ip, r4
105:bootloader.c **** block_counter++;
106:bootloader.c **** for (unsigned short int a=0;a<512;a=a+4)
107:bootloader.c **** {
108:bootloader.c **** if(*mem_adresse != ( (buffer[a+3]<<24)+
113 , #-519] @ zero_extendqisi2
114 009c 21CE8DE2 add r2, sp, #8
115 00a0 04108CE0 ldrb r0, [r1, #-518] @ zero_extendqisi2
116 00a4 073251E5 sub r2, r2, #1
117 00a8 08208DE2 ldrb r2, [r4, r2] @ zero_extendqisi2
118 00ac 060251E5 mov r3, r3, asl #16
119 00b0 012042E2 add r3, r3, r0, asl #24
120 00b4 0220D4E7 ldrb r1, [r1, #-520] @ zero_extendqisi2
121 00b8 0338A0E1 add r3, r3, r2
122 00bc 003C83E0 ldr r2, [r6, #0]
123 00c0 081251E5 add r3, r3, r1, asl #8
124 00c4 023083E0 cmp r2, r3
125 00c8 002096E5 .loc 1 125 0
126 00cc 013483E0 add r4, r4, #4
127 00d0 030052E1 .loc 1 113 0
109:bootloader.c **** (buffer[a+2]<<16)+
110:bootloader.c **** (buffer[a+1]<<8)+
111:bootloader.c **** buffer[a]) )
112:bootloader.c **** {
113:bootloader.c **** printf("Memory Error %x : %x EX: %x \r\n",mem_adresse,*mem_adresse,((buffer[a+3]<<24)+
114:bootloader.c **** (buffer[a+2]<<16)+
115:bootloader.c **** (buffer[a+1]<<8)+
116:bootloader.c **** buffer[a]));
117:bootloader.c **** }
118:bootloader.c ****
119:bootloader.c ****
120:bootloader.c **** mem_adresse++;
121:bootloader.c ****
122:bootloader.c **** File_Size = File_Size - 4;
123:bootloader.c **** if(File_Size<=0)
124:bootloader.c **** {
125:bootloader.c **** break;
128 r r0, .L16+16
129 00d4 044084E2 .loc 1 108 0
130 .LVL10:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -