Quellcode durchsuchen

[add] 移植coredump

coredump
huangyulong vor 1 Jahr
Ursprung
Commit
95e441a4e6

+ 4
- 1
Core/Src/freertos.c Datei anzeigen

@@ -109,6 +109,7 @@ void MX_FREERTOS_Init(void) {
109 109
 #include "gpio.h"
110 110
 static int CCCC()
111 111
 {
112
+  uint32_t v = 67;
112 113
   pkt_kprintf("enter %s\n", __FUNCTION__);
113 114
   return *(uint32_t *)(0) = 8;
114 115
 }
@@ -136,8 +137,10 @@ void StartDefaultTask(void *argument)
136 137
   /* USER CODE BEGIN StartDefaultTask */
137 138
   __attribute__((weak)) void fun_weak();
138 139
   /* Infinite loop */
139
-  //AAAA();
140 140
   float f = 0.24321324325325;
141
+  uint32_t v = 67;
142
+  AAAA();
143
+  
141 144
   for(;;)
142 145
   {
143 146
     pkt_kprintf("%s = %f\n", __FUNCTION__, f);

+ 0
- 259
Core/Src/stm32f1xx_it.c Datei anzeigen

@@ -175,265 +175,6 @@ void TIM1_UP_IRQHandler(void)
175 175
 }
176 176
 
177 177
 /* USER CODE BEGIN 1 */
178
-struct exception_stack_frame
179
-{
180
-    rt_uint32_t r0;
181
-    rt_uint32_t r1;
182
-    rt_uint32_t r2;
183
-    rt_uint32_t r3;
184
-    rt_uint32_t r12;
185
-    rt_uint32_t lr;
186
-    rt_uint32_t pc;
187
-    rt_uint32_t psr;
188
-};
189
-
190
-struct stack_frame
191
-{
192
-#if USE_FPU
193
-    rt_uint32_t flag;
194
-#endif /* USE_FPU */
195
-
196
-    /* r4 ~ r11 register */
197
-    rt_uint32_t r4;
198
-    rt_uint32_t r5;
199
-    rt_uint32_t r6;
200
-    rt_uint32_t r7;
201
-    rt_uint32_t r8;
202
-    rt_uint32_t r9;
203
-    rt_uint32_t r10;
204
-    rt_uint32_t r11;
205
-
206
-    struct exception_stack_frame exception_stack_frame;
207
-};
208
-
209
-struct exception_info
210
-{
211
-    rt_uint32_t exc_return;
212
-    struct stack_frame stack_frame;
213
-};
214
-
215
-#include <stdbool.h>
216
-#include <stdint.h>
217
-
218
-#if defined(__ARMCC_VERSION)
219
-    /* C stack block name, default is STACK */
220
-    #ifndef CMB_CSTACK_BLOCK_NAME
221
-    #define CMB_CSTACK_BLOCK_NAME          Image$$ARM_LIB_STACK$$ZI
222
-    #endif
223
-    /* code section name, default is ER_IROM1 */
224
-    #ifndef CMB_CODE_SECTION_NAME
225
-    #define CMB_CODE_SECTION_NAME          FLASH_CODE
226
-    #endif
227
-#elif defined(__ICCARM__)
228
-    /* C stack block name, default is 'CSTACK' */
229
-    #ifndef CMB_CSTACK_BLOCK_NAME
230
-    #define CMB_CSTACK_BLOCK_NAME          "CSTACK"
231
-    #endif
232
-    /* code section name, default is '.text' */
233
-    #ifndef CMB_CODE_SECTION_NAME
234
-    #define CMB_CODE_SECTION_NAME          ".text"
235
-    #endif
236
-#elif defined(__GNUC__)
237
-    /* C stack block start address, defined on linker script file, default is _sstack */
238
-    #ifndef CMB_CSTACK_BLOCK_START
239
-    #define CMB_CSTACK_BLOCK_START         _sstack
240
-    #endif
241
-    /* C stack block end address, defined on linker script file, default is _estack */
242
-    #ifndef CMB_CSTACK_BLOCK_END
243
-    #define CMB_CSTACK_BLOCK_END           _estack
244
-    #endif
245
-    /* code section start address, defined on linker script file, default is _stext */
246
-    #ifndef CMB_CODE_SECTION_START
247
-    #define CMB_CODE_SECTION_START         _stext
248
-    #endif
249
-    /* code section end address, defined on linker script file, default is _etext */
250
-    #ifndef CMB_CODE_SECTION_END
251
-    #define CMB_CODE_SECTION_END           _etext
252
-    #endif
253
-#else
254
-    #error "not supported compiler"
255
-#endif
256
-
257
-#if __STDC_VERSION__ < 199901L
258
-    #error "must be C99 or higher. try to add '-std=c99' to compile parameters"
259
-#endif
260
-
261
-#if defined(__CC_ARM)
262
-    #define SECTION_START(_name_)                _name_##$$Base
263
-    #define SECTION_END(_name_)                  _name_##$$Limit
264
-    #define IMAGE_SECTION_START(_name_)          Image$$##_name_##$$Base
265
-    #define IMAGE_SECTION_END(_name_)            Image$$##_name_##$$Limit
266
-    #define CSTACK_BLOCK_START(_name_)           SECTION_START(_name_)
267
-    #define CSTACK_BLOCK_END(_name_)             SECTION_END(_name_)
268
-    #define CODE_SECTION_START(_name_)           IMAGE_SECTION_START(_name_)
269
-    #define CODE_SECTION_END(_name_)             IMAGE_SECTION_END(_name_)
270
-
271
-    extern const int CSTACK_BLOCK_START(CMB_CSTACK_BLOCK_NAME);
272
-    extern const int CSTACK_BLOCK_END(CMB_CSTACK_BLOCK_NAME);
273
-    extern const int CODE_SECTION_START(CMB_CODE_SECTION_NAME);
274
-    extern const int CODE_SECTION_END(CMB_CODE_SECTION_NAME);
275
-#elif defined(__ICCARM__)
276
-    #pragma section=CMB_CSTACK_BLOCK_NAME
277
-    #pragma section=CMB_CODE_SECTION_NAME
278
-#elif defined(__GNUC__)
279
-    extern const int CMB_CSTACK_BLOCK_START;
280
-    extern const int CMB_CSTACK_BLOCK_END;
281
-    extern const int CMB_CODE_SECTION_START;
282
-    extern const int CMB_CODE_SECTION_END;
283
-#else
284
-    #error "not supported compiler"
285
-#endif  
286
-    
287
-static bool is_in_text(uint32_t addr)
288
-{
289
-#if 0
290
-    uint32_t code_start_addr = (uint32_t)&CODE_SECTION_START(CMB_CODE_SECTION_NAME);
291
-    uint32_t code_size = (uint32_t)&CODE_SECTION_END(CMB_CODE_SECTION_NAME) - code_start_addr;
292
-#else
293
-    uint32_t code_start_addr = (uint32_t)__section_begin(CMB_CODE_SECTION_NAME);
294
-    uint32_t code_size = (uint32_t)__section_end(CMB_CODE_SECTION_NAME) - code_start_addr;
295
-#endif
296
-    
297
-    if (code_start_addr < addr && addr <= code_start_addr + code_size)
298
-    {
299
-        return true;
300
-    }
301
-    
302
-    return false;
303
-}
304 178
 
305
-static bool disassembly_ins_is_bl_blx(uint32_t addr) 
306
-{
307
-    #define BL_INS_MASK         0xF800
308
-    #define BL_INS_HIGH         0xF800
309
-    #define BL_INS_LOW          0xF000
310
-    #define BLX_INX_MASK        0xFF00
311
-    #define BLX_INX             0x4700
312
-  
313
-    uint16_t ins1 = *((uint16_t *)addr);
314
-    uint16_t ins2 = *((uint16_t *)(addr + 2));
315
-    
316
-    if ((ins2 & BL_INS_MASK) == BL_INS_HIGH && (ins1 & BL_INS_MASK) == BL_INS_LOW) 
317
-    {
318
-        return true;
319
-    } 
320
-    else if ((ins2 & BLX_INX_MASK) == BLX_INX) 
321
-    {
322
-        return true;
323
-    } 
324
-    else 
325
-    {
326
-        return false;
327
-    }
328
-}
329
-
330
-void rt_hw_hard_fault_exception(struct exception_info *exception_info)
331
-{
332
-    //struct exception_stack_frame *exception_stack = &exception_info->stack_frame.exception_stack_frame;
333
-    struct stack_frame *context = &exception_info->stack_frame;
334
-    rt_kprintf("psr: 0x%08x\n", context->exception_stack_frame.psr);
335
-
336
-    rt_kprintf("r00: 0x%08x\n", context->exception_stack_frame.r0);
337
-    rt_kprintf("r01: 0x%08x\n", context->exception_stack_frame.r1);
338
-    rt_kprintf("r02: 0x%08x\n", context->exception_stack_frame.r2);
339
-    rt_kprintf("r03: 0x%08x\n", context->exception_stack_frame.r3);
340
-    rt_kprintf("r04: 0x%08x\n", context->r4);
341
-    rt_kprintf("r05: 0x%08x\n", context->r5);
342
-    rt_kprintf("r06: 0x%08x\n", context->r6);
343
-    rt_kprintf("r07: 0x%08x\n", context->r7);
344
-    rt_kprintf("r08: 0x%08x\n", context->r8);
345
-    rt_kprintf("r09: 0x%08x\n", context->r9);
346
-    rt_kprintf("r10: 0x%08x\n", context->r10);
347
-    rt_kprintf("r11: 0x%08x\n", context->r11);
348
-    rt_kprintf("r12: 0x%08x\n", context->exception_stack_frame.r12);
349
-    rt_kprintf(" lr: 0x%08x\n", context->exception_stack_frame.lr);
350
-    rt_kprintf(" pc: 0x%08x\n", context->exception_stack_frame.pc);
351
-    
352
-    rt_kprintf("use command: addr2line -e your.out -a -f ");
353
-    rt_kprintf("%08x ", context->exception_stack_frame.pc);
354
-    rt_kprintf("%08x ", context->exception_stack_frame.lr);
355
-    uint32_t lr;
356
-    uint32_t pc;
357
-    uint32_t *app_sp = (unsigned int *)(exception_info + 1); // 得到栈顶;
358
-    
359
-    for(int i = 0; i < 1024; i++)
360
-    {
361
-        lr = *app_sp;
362
-        app_sp++;
363
-        
364
-        if ((lr & 0x01) && true == is_in_text(lr))
365
-        {
366
-            pc = (lr & ~0x01) - 4;
367
-
368
-            if (true == disassembly_ins_is_bl_blx(pc))
369
-            {
370
-                rt_kprintf("%08x ", pc);
371
-            }
372
-        }
373
-    }
374
-    
375
-    while(1);
376
-}
377
-
378
-void svc_exception(struct exception_info *exception_info)
379
-{
380
-    //struct exception_stack_frame *exception_stack = &exception_info->stack_frame.exception_stack_frame;
381
-    struct stack_frame *context = &exception_info->stack_frame;
382
-    
383
-    unsigned int addr;
384
-    unsigned short swi_inst;
385
-    unsigned int *old_sp;
386
-    unsigned int value;
387
-    
388
-    /* 取出swi指令 */
389
-    addr = context->exception_stack_frame.pc;
390
-    addr -= 2;
391
-    
392
-    swi_inst = *((unsigned short *)addr);
393
-    rt_kprintf("swi_inst = 0x%04x\n", swi_inst);
394
-    swi_inst = swi_inst & 0xff;
395
-    
396
-    /* 分析swi指令 */
397
-    old_sp = (unsigned int *)(exception_info + 1); // 得到栈顶
398
-    unsigned int *p_reg = &context->exception_stack_frame.r0; // 得到r0的地址
399
-    
400
-    if (swi_inst == 0xff)
401
-    {
402
-        /* POP {PC} */
403
-        value = *old_sp;
404
-        old_sp++;
405
-        context->exception_stack_frame.pc = value;
406
-    }
407
-    else
408
-    {
409
-        for (int i = 0; i < 8; i ++)
410
-        {
411
-            if (swi_inst & (1 << i))
412
-            {
413
-                /* POP {r0, PC} */
414
-                value = *old_sp;
415
-                old_sp++;
416
-                p_reg[i] = value; // 哪个寄存器就保存哪个值
417
-                
418
-                /* POP {PC} */
419
-                value = *old_sp;
420
-                old_sp++;
421
-                context->exception_stack_frame.pc = value;
422
-            }
423
-        }
424
-    }
425
-    
426
-    rt_kprintf("old_sp = 0x%0x\n", old_sp);
427
-    rt_kprintf("context->exception_stack_frame.pc= 0x%0x\n", context->exception_stack_frame.pc);
428
-    /* 模拟swi指令 */
429
-    struct exception_info stack_frame = *exception_info;
430
-    unsigned int old_pos  = (unsigned int)(exception_info + 1);
431
-    unsigned int new_pos = (unsigned int)old_sp;
432
-    unsigned int offset = new_pos - old_pos;
433
-    
434
-    exception_info = (struct exception_info *)((unsigned int)exception_info + offset);
435
-    *exception_info = stack_frame;
436
-    /* 返回 */
437
-}
438 179
 /* USER CODE END 1 */
439 180
 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 7
- 0
EWARM/stm32_broad_mini.ewp Datei anzeigen

@@ -349,6 +349,7 @@
349 349
                     <state>$PROJ_DIR$/../Drivers/CMSIS/Device/ST/STM32F1xx/Include</state>
350 350
                     <state>$PROJ_DIR$/../Drivers/CMSIS/Include</state>
351 351
                     <state>$PROJ_DIR$/../Middlewares/segger_rtt</state>
352
+                    <state>$PROJ_DIR$/../coredump</state>
352 353
                 </option>
353 354
                 <option>
354 355
                     <name>CCStdIncCheck</name>
@@ -1108,6 +1109,12 @@
1108 1109
             </group>
1109 1110
         </group>
1110 1111
     </group>
1112
+    <group>
1113
+        <name>coredump</name>
1114
+        <file>
1115
+            <name>$PROJ_DIR$\..\coredump\coredump.c</name>
1116
+        </file>
1117
+    </group>
1111 1118
     <group>
1112 1119
         <name>Drivers</name>
1113 1120
         <group>

BIN
EWARM/stm32_broad_mini/Exe/arm-none-eabi-gdb.exe Datei anzeigen


+ 515
- 0
EWARM/stm32_broad_mini/Exe/core_dump.txt Datei anzeigen

@@ -0,0 +1,515 @@
1
+Registers@current_thread
2
+R0: 0x20001E90
3
+R1: 0x00000000
4
+R2: 0x0000FFFF
5
+R3: 0x00000005
6
+R4: 0x00000043
7
+R5: 0x3E790CE4
8
+R6: 0x00000043
9
+R7: 0xA5A5A5A5
10
+R8: 0xA5A5A5A5
11
+R9: 0xA5A5A5A5
12
+R10: 0xA5A5A5A5
13
+R11: 0xA5A5A5A5
14
+R12: 0xA5A5A5A5
15
+R13(SP): 0x200008E0
16
+R14(LR): 0x08004B2F
17
+R15(PC): 0x080048F6
18
+xPSR: 0x61000000
19
+Data segment:
20
+mem@0x20000000, 0x00000048
21
+0x00000000 0x00000010 0x007A1200 0x080013FE
22
+0x080013FE 0x080013FE 0x080013FE 0x080013FE
23
+0x080013FE 0x080013FE 0xFFFFFFFF 0xFFFFFFFF
24
+0x080011EA 0x080013FE 0x080013FE 0xFFFFFFFF
25
+0x0000FFFF 0x00000001 
26
+ZI segment:
27
+mem@0x20000048, 0x00001A44
28
+0x00000002 0x20000260 0x00000000 0x200013BC
29
+0x200013BC 0x2000004C 0x200013B4 0x00000038
30
+0x00000000 0x00000000 0x2000004C 0x00000000
31
+0x00000000 0x200000A8 0x454C4449 0x00000000
32
+0x00000000 0x00000000 0x00000002 0x00000000
33
+0x00000000 0x00000000 0x00000000 0x00000200
34
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
35
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
36
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
37
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
38
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
39
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
40
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
41
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
42
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
43
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
44
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
45
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
46
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
47
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
48
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
49
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
50
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
51
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
52
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
53
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
54
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
55
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
56
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
57
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
58
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
59
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
60
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
61
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
62
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
63
+0xA5A5A5A5 0xA5A5A5A5 0x00000000 0xA5A5A5A5
64
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0x08002B21
65
+0x080024EC 0x01000000 0xA5A5A5A5 0xA5A5A5A5
66
+0x200006C0 0x00000000 0x200013E4 0x200013E4
67
+0x200002A8 0x200013DC 0x00000036 0x00000000
68
+0x00000000 0x200002A8 0x00000000 0x00000002
69
+0x20000304 0x20726D54 0x00637653 0x00000000
70
+0x00000000 0x00000003 0x00000000 0x00000002
71
+0x00000000 0x00000000 0x00000200 0xA5A5A5A5
72
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
73
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
74
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
75
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
76
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
77
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
78
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
79
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
80
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
81
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
82
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
83
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
84
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
85
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
86
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
87
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
88
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
89
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
90
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
91
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
92
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
93
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
94
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
95
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
96
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
97
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
98
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
99
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
100
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
101
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
102
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
103
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
104
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
105
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
106
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
107
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
108
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
109
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
110
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
111
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
112
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
113
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
114
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
115
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
116
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
117
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
118
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
119
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
120
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
121
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
122
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
123
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
124
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
125
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
126
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
127
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
128
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
129
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
130
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
131
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
132
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
133
+0xA5A5A5A5 0xA5A5A5A5 0x00000000 0xA5A5A5A5
134
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0x08002B21
135
+0x08003014 0x01000000 0xA5A5A5A5 0x20000918
136
+0x00000000 0x80000208 0xA5A5A5A5 0xA5A5A5A5
137
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
138
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
139
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
140
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
141
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
142
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
143
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
144
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
145
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
146
+0xA5A5A5A5 0xA5A5A5A5 0x200008BC 0x00000020
147
+0xFFFFFFFC 0x0800038B 0xFFFFFF30 0x0800038B
148
+0xFFFFFF30 0x0800038B 0x200008AC 0x08005608
149
+0x20000808 0x00000000 0x00000004 0x00000000
150
+0x00000000 0x00000000 0x00000000 0x0000000B
151
+0xFFFFFFFF 0x00000000 0x00000000 0x00000000
152
+0x00000000 0x00000000 0x00000000 0xA5A5A5A5
153
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
154
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
155
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
156
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
157
+0xA5A5A5A5 0xA5A5A5A5 0x00000000 0x00000000
158
+0x00000000 0x00000005 0xA5A5A5A5 0x08004B2F
159
+0x08004B20 0x61000000 0x20001A2B 0x20001A20
160
+0x200019DC 0x0000000B 0x0000FFFF 0x08004AE3
161
+0x0000FFFF 0xFFFFFFFD 0x00000043 0x3E790CE4
162
+0x00000043 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5
163
+0xA5A5A5A5 0xA5A5A5A5 0x20001E90 0x00000000
164
+0x0000FFFF 0x00000005 0xA5A5A5A5 0x08004B2F
165
+0x080048F6 0x61000000 0x00000000 0x08004907
166
+0xA5A5A5A5 0x08004917 0xA5A5A5A5 0x08004925
167
+0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0x08002B21
168
+0xA5A5A5A5 0xA5A5A5A5 0x00000000 0x80000068
169
+0x200008C8 0x00000000 0x2000159C 0x2000159C
170
+0x20000918 0x20001594 0x00000020 0x00000000
171
+0x00000000 0x20000918 0x00000000 0x00000018
172
+0x20000710 0x61666564 0x54746C75 0x006B7361
173
+0x00000000 0x00000001 0x00000000 0x00000018
174
+0x00000000 0x00000000 0x00000000 0x00000000
175
+0x20001300 0x00000988 0x00000000 0x00000000
176
+0x00000000 0x00000000 0x00000000 0x00000000
177
+0x00000000 0x00000000 0x00000000 0x00000000
178
+0x00000000 0x00000000 0x00000000 0x00000000
179
+0x00000000 0x00000000 0x00000000 0x00000000
180
+0x00000000 0x00000000 0x00000000 0x00000000
181
+0x00000000 0x00000000 0x00000000 0x00000000
182
+0x00000000 0x00000000 0x00000000 0x00000000
183
+0x00000000 0x00000000 0x00000000 0x00000000
184
+0x00000000 0x00000000 0x00000000 0x00000000
185
+0x00000000 0x00000000 0x00000000 0x00000000
186
+0x00000000 0x00000000 0x00000000 0x00000000
187
+0x00000000 0x00000000 0x00000000 0x00000000
188
+0x00000000 0x00000000 0x00000000 0x00000000
189
+0x00000000 0x00000000 0x00000000 0x00000000
190
+0x00000000 0x00000000 0x00000000 0x00000000
191
+0x00000000 0x00000000 0x00000000 0x00000000
192
+0x00000000 0x00000000 0x00000000 0x00000000
193
+0x00000000 0x00000000 0x00000000 0x00000000
194
+0x00000000 0x00000000 0x00000000 0x00000000
195
+0x00000000 0x00000000 0x00000000 0x00000000
196
+0x00000000 0x00000000 0x00000000 0x00000000
197
+0x00000000 0x00000000 0x00000000 0x00000000
198
+0x00000000 0x00000000 0x00000000 0x00000000
199
+0x00000000 0x00000000 0x00000000 0x00000000
200
+0x00000000 0x00000000 0x00000000 0x00000000
201
+0x00000000 0x00000000 0x00000000 0x00000000
202
+0x00000000 0x00000000 0x00000000 0x00000000
203
+0x00000000 0x00000000 0x00000000 0x00000000
204
+0x00000000 0x00000000 0x00000000 0x00000000
205
+0x00000000 0x00000000 0x00000000 0x00000000
206
+0x00000000 0x00000000 0x00000000 0x00000000
207
+0x00000000 0x00000000 0x00000000 0x00000000
208
+0x00000000 0x00000000 0x00000000 0x00000000
209
+0x00000000 0x00000000 0x00000000 0x00000000
210
+0x00000000 0x00000000 0x00000000 0x00000000
211
+0x00000000 0x00000000 0x00000000 0x00000000
212
+0x00000000 0x00000000 0x00000000 0x00000000
213
+0x00000000 0x00000000 0x00000000 0x00000000
214
+0x00000000 0x00000000 0x00000000 0x00000000
215
+0x00000000 0x00000000 0x00000000 0x00000000
216
+0x00000000 0x00000000 0x00000000 0x00000000
217
+0x00000000 0x00000000 0x00000000 0x00000000
218
+0x00000000 0x00000000 0x00000000 0x00000000
219
+0x00000000 0x00000000 0x00000000 0x00000000
220
+0x00000000 0x00000000 0x00000000 0x00000000
221
+0x00000000 0x00000000 0x00000000 0x00000000
222
+0x00000000 0x00000000 0x00000000 0x00000000
223
+0x00000000 0x00000000 0x00000000 0x00000000
224
+0x00000000 0x00000000 0x00000000 0x00000000
225
+0x00000000 0x00000000 0x00000000 0x00000000
226
+0x00000000 0x00000000 0x00000000 0x00000000
227
+0x00000000 0x00000000 0x00000000 0x00000000
228
+0x00000000 0x00000000 0x00000000 0x00000000
229
+0x00000000 0x00000000 0x00000000 0x00000000
230
+0x00000000 0x00000000 0x00000000 0x00000000
231
+0x00000000 0x00000000 0x00000000 0x00000000
232
+0x00000000 0x00000000 0x00000000 0x00000000
233
+0x00000000 0x00000000 0x00000000 0x00000000
234
+0x00000000 0x00000000 0x00000000 0x00000000
235
+0x00000000 0x00000000 0x00000000 0x00000000
236
+0x00000000 0x00000000 0x00000000 0x00000000
237
+0x00000000 0x00000000 0x00000000 0x00000000
238
+0x00000000 0x00000000 0x00000000 0x00000000
239
+0x00000000 0x00000000 0x00000000 0x00000000
240
+0x00000000 0x00000000 0x00000000 0x00000000
241
+0x00000000 0x00000000 0x00000000 0x00000000
242
+0x00000000 0x00000000 0x00000000 0x00000000
243
+0x00000000 0x00000000 0x00000000 0x00000000
244
+0x00000000 0x00000000 0x00000000 0x00000000
245
+0x00000000 0x00000000 0x00000000 0x00000000
246
+0x00000000 0x00000000 0x00000000 0x00000000
247
+0x00000000 0x00000000 0x00000000 0x00000000
248
+0x00000000 0x00000000 0x00000000 0x00000000
249
+0x00000000 0x00000000 0x00000000 0x00000000
250
+0x00000000 0x00000000 0x00000000 0x00000000
251
+0x00000000 0x00000000 0x00000000 0x00000000
252
+0x00000000 0x00000000 0x00000000 0x00000000
253
+0x00000000 0x00000000 0x00000000 0x00000000
254
+0x00000000 0x00000000 0x00000000 0x00000000
255
+0x00000000 0x00000000 0x00000000 0x00000000
256
+0x00000000 0x00000000 0x00000000 0x00000000
257
+0x00000000 0x00000000 0x00000000 0x00000000
258
+0x00000000 0x00000000 0x00000000 0x00000000
259
+0x00000000 0x00000000 0x00000000 0x00000000
260
+0x00000000 0x00000000 0x00000000 0x00000000
261
+0x00000000 0x00000000 0x00000000 0x00000000
262
+0x00000000 0x00000000 0x00000000 0x00000000
263
+0x00000000 0x00000000 0x00000000 0x00000000
264
+0x00000000 0x00000000 0x00000000 0x00000000
265
+0x00000000 0x00000000 0x00000000 0x00000000
266
+0x00000000 0x00000000 0x00000000 0x00000000
267
+0x00000000 0x00000000 0x00000000 0x00000000
268
+0x00000000 0x00000000 0x00000000 0x00000000
269
+0x00000000 0x00000000 0x00000000 0x00000000
270
+0x00000000 0x00000000 0x00000000 0x00000000
271
+0x00000000 0x00000000 0x00000000 0x00000000
272
+0x00000000 0x00000000 0x00000000 0x00000000
273
+0x00000000 0x00000000 0x00000000 0x00000000
274
+0x00000000 0x00000000 0x00000000 0x00000000
275
+0x00000000 0x00000000 0x00000000 0x00000000
276
+0x00000000 0x00000000 0x00000000 0x00000000
277
+0x00000000 0x00000000 0x00000000 0x00000000
278
+0x00000000 0x00000000 0x00000000 0x00000000
279
+0x00000000 0x00000000 0x00000000 0x00000000
280
+0x00000000 0x00000000 0x00000000 0x00000000
281
+0x00000000 0x00000000 0x00000000 0x00000000
282
+0x00000000 0x00000000 0x00000000 0x00000000
283
+0x00000000 0x00000000 0x00000000 0x00000000
284
+0x00000000 0x00000000 0x00000000 0x00000000
285
+0x00000000 0x00000000 0x00000000 0x00000000
286
+0x00000000 0x00000000 0x00000000 0x00000000
287
+0x00000000 0x00000000 0x00000000 0x00000000
288
+0x00000000 0x00000000 0x00000000 0x00000000
289
+0x00000000 0x00000000 0x00000000 0x00000000
290
+0x00000000 0x00000000 0x00000000 0x00000000
291
+0x00000000 0x00000000 0x00000000 0x00000000
292
+0x00000000 0x00000000 0x00000000 0x00000000
293
+0x00000000 0x00000000 0x00000000 0x00000000
294
+0x00000000 0x00000000 0x00000000 0x00000000
295
+0x00000000 0x00000000 0x00000000 0x00000000
296
+0x00000000 0x00000000 0x00000000 0x00000000
297
+0x00000000 0x00000000 0x00000000 0x00000000
298
+0x00000000 0x00000000 0x00000000 0x00000000
299
+0x00000000 0x00000000 0x00000000 0x00000000
300
+0x00000000 0x00000000 0x00000000 0x00000000
301
+0x00000000 0x00000000 0x00000000 0x00000000
302
+0x00000000 0x00000000 0x00000000 0x00000000
303
+0x00000000 0x00000000 0x00000000 0x00000000
304
+0x00000000 0x00000000 0x00000000 0x00000000
305
+0x00000000 0x00000000 0x00000000 0x00000000
306
+0x00000000 0x00000000 0x00000000 0x00000000
307
+0x00000000 0x00000000 0x00000000 0x00000000
308
+0x00000000 0x00000000 0x00000000 0x00000000
309
+0x00000000 0x00000000 0x00000000 0x00000000
310
+0x00000000 0x00000000 0x00000000 0x00000000
311
+0x00000000 0x00000000 0x00000000 0x00000000
312
+0x00000000 0x00000000 0x00000000 0x00000000
313
+0x00000000 0x00000000 0x00000000 0x00000000
314
+0x00000000 0x00000000 0x00000000 0x00000000
315
+0x00000000 0x00000000 0x00000000 0x00000000
316
+0x00000000 0x00000000 0x00000000 0x00000000
317
+0x00000000 0x00000000 0x00000000 0x00000000
318
+0x00000000 0x00000000 0x00000000 0x00000000
319
+0x00000000 0x00000000 0x00000000 0x00000000
320
+0x00000000 0x00000000 0x00000000 0x00000000
321
+0x00000000 0x00000000 0x00000000 0x00000000
322
+0x00000000 0x00000000 0x00000000 0x00000000
323
+0x00000000 0x00000000 0x00000000 0x00000000
324
+0x00000000 0x00000000 0x00000000 0x00000000
325
+0x00000000 0x00000000 0x00000000 0x00000000
326
+0x00000000 0x00000000 0x00000000 0x00000000
327
+0x00000000 0x00000000 0x00000000 0x00000000
328
+0x20000978 0x00000000 0x20001300 0x00000988
329
+0x00000988 0x80000000 0x00000300 0x08005640
330
+0x200018EC 0x00000000 0x00000000 0x00000000
331
+0x00000000 0x00000000 0x00000000 0x00000000
332
+0x00000000 0x00000000 0x00000000 0x00000000
333
+0x00000000 0x00000000 0x00000000 0x00000006
334
+0x40012C00 0x00000007 0x00000000 0x000003E7
335
+0x00000000 0x00000000 0x00000000 0x00000000
336
+0x00000000 0x00000000 0x00000000 0x00000000
337
+0x00000000 0x00000000 0x00000000 0x01010200
338
+0x01010101 0x00010101 0x20000918 0x00000001
339
+0x200013BC 0xFFFFFFFF 0x20000050 0x20000050
340
+0x00000000 0x200013D0 0xFFFFFFFF 0x200013D0
341
+0x200013D0 0x00000001 0x200013E4 0xFFFFFFFF
342
+0x200002AC 0x200002AC 0x00000000 0x200013F8
343
+0xFFFFFFFF 0x200013F8 0x200013F8 0x00000000
344
+0x2000140C 0xFFFFFFFF 0x2000140C 0x2000140C
345
+0x00000000 0x20001420 0xFFFFFFFF 0x20001420
346
+0x20001420 0x00000000 0x20001434 0xFFFFFFFF
347
+0x20001434 0x20001434 0x00000000 0x20001448
348
+0xFFFFFFFF 0x20001448 0x20001448 0x00000000
349
+0x2000145C 0xFFFFFFFF 0x2000145C 0x2000145C
350
+0x00000000 0x20001470 0xFFFFFFFF 0x20001470
351
+0x20001470 0x00000000 0x20001484 0xFFFFFFFF
352
+0x20001484 0x20001484 0x00000000 0x20001498
353
+0xFFFFFFFF 0x20001498 0x20001498 0x00000000
354
+0x200014AC 0xFFFFFFFF 0x200014AC 0x200014AC
355
+0x00000000 0x200014C0 0xFFFFFFFF 0x200014C0
356
+0x200014C0 0x00000000 0x200014D4 0xFFFFFFFF
357
+0x200014D4 0x200014D4 0x00000000 0x200014E8
358
+0xFFFFFFFF 0x200014E8 0x200014E8 0x00000000
359
+0x200014FC 0xFFFFFFFF 0x200014FC 0x200014FC
360
+0x00000000 0x20001510 0xFFFFFFFF 0x20001510
361
+0x20001510 0x00000000 0x20001524 0xFFFFFFFF
362
+0x20001524 0x20001524 0x00000000 0x20001538
363
+0xFFFFFFFF 0x20001538 0x20001538 0x00000000
364
+0x2000154C 0xFFFFFFFF 0x2000154C 0x2000154C
365
+0x00000000 0x20001560 0xFFFFFFFF 0x20001560
366
+0x20001560 0x00000000 0x20001574 0xFFFFFFFF
367
+0x20001574 0x20001574 0x00000000 0x20001588
368
+0xFFFFFFFF 0x20001588 0x20001588 0x00000001
369
+0x2000159C 0xFFFFFFFF 0x2000091C 0x2000091C
370
+0x00000000 0x200015B0 0xFFFFFFFF 0x200015B0
371
+0x200015B0 0x00000000 0x200015C4 0xFFFFFFFF
372
+0x200015C4 0x200015C4 0x00000000 0x200015D8
373
+0xFFFFFFFF 0x200015D8 0x200015D8 0x00000000
374
+0x200015EC 0xFFFFFFFF 0x200015EC 0x200015EC
375
+0x00000000 0x20001600 0xFFFFFFFF 0x20001600
376
+0x20001600 0x00000000 0x20001614 0xFFFFFFFF
377
+0x20001614 0x20001614 0x00000000 0x20001628
378
+0xFFFFFFFF 0x20001628 0x20001628 0x00000000
379
+0x2000163C 0xFFFFFFFF 0x2000163C 0x2000163C
380
+0x00000000 0x20001650 0xFFFFFFFF 0x20001650
381
+0x20001650 0x00000000 0x20001664 0xFFFFFFFF
382
+0x20001664 0x20001664 0x00000000 0x20001678
383
+0xFFFFFFFF 0x20001678 0x20001678 0x00000000
384
+0x2000168C 0xFFFFFFFF 0x2000168C 0x2000168C
385
+0x00000000 0x200016A0 0xFFFFFFFF 0x200016A0
386
+0x200016A0 0x00000000 0x200016B4 0xFFFFFFFF
387
+0x200016B4 0x200016B4 0x00000000 0x200016C8
388
+0xFFFFFFFF 0x200016C8 0x200016C8 0x00000000
389
+0x200016DC 0xFFFFFFFF 0x200016DC 0x200016DC
390
+0x00000000 0x200016F0 0xFFFFFFFF 0x200016F0
391
+0x200016F0 0x00000000 0x20001704 0xFFFFFFFF
392
+0x20001704 0x20001704 0x00000000 0x20001718
393
+0xFFFFFFFF 0x20001718 0x20001718 0x00000000
394
+0x2000172C 0xFFFFFFFF 0x2000172C 0x2000172C
395
+0x00000000 0x20001740 0xFFFFFFFF 0x20001740
396
+0x20001740 0x00000000 0x20001754 0xFFFFFFFF
397
+0x20001754 0x20001754 0x00000000 0x20001768
398
+0xFFFFFFFF 0x20001768 0x20001768 0x00000000
399
+0x2000177C 0xFFFFFFFF 0x2000177C 0x2000177C
400
+0x00000000 0x20001790 0xFFFFFFFF 0x20001790
401
+0x20001790 0x00000000 0x200017A4 0xFFFFFFFF
402
+0x200017A4 0x200017A4 0x00000000 0x200017B8
403
+0xFFFFFFFF 0x200017B8 0x200017B8 0x00000000
404
+0x200017CC 0xFFFFFFFF 0x200017CC 0x200017CC
405
+0x00000000 0x200017E0 0xFFFFFFFF 0x200017E0
406
+0x200017E0 0x00000000 0x200017F4 0xFFFFFFFF
407
+0x200017F4 0x200017F4 0x00000000 0x20001808
408
+0xFFFFFFFF 0x20001808 0x20001808 0x00000000
409
+0x2000181C 0xFFFFFFFF 0x2000181C 0x2000181C
410
+0x00000000 0x20001830 0xFFFFFFFF 0x20001830
411
+0x20001830 0x20001814 0x20001828 0x00000000
412
+0x2000184C 0xFFFFFFFF 0x2000184C 0x2000184C
413
+0x00000000 0x20001860 0xFFFFFFFF 0x20001860
414
+0x20001860 0x00000000 0x00000000 0x20001878
415
+0xFFFFFFFF 0x20001878 0x20001878 0x00000003
416
+0x00000003 0x00000018 0x00000001 0x00000000
417
+0x00000000 0x00000000 0x00000003 0xFFFFFFFF
418
+0x2000004C 0x00000000 0x00000000 0x200018B8
419
+0xFFFFFFFF 0x200018B8 0x200018B8 0x00000000
420
+0x200018CC 0xFFFFFFFF 0x200018CC 0x200018CC
421
+0x200018B0 0x200018C4 0x200018EC 0x200002A8
422
+0x00000000 0x2000193C 0x200019DC 0x2000193C
423
+0x200019CC 0x00000000 0x20001904 0xFFFFFFFF
424
+0x20001904 0x20001904 0x00000000 0x20001918
425
+0xFFFFFFFF 0x20001918 0x20001918 0x00000000
426
+0x0000000A 0x00000010 0x0001FFFF 0x00000000
427
+0x00000000 0x00000000 0x00000000 0x00000000
428
+0x00000000 0x00000000 0x00000000 0x00000000
429
+0x00000000 0x00000000 0x00000000 0x00000000
430
+0x00000000 0x00000000 0x00000000 0x00000000
431
+0x00000000 0x00000000 0x00000000 0x00000000
432
+0x00000000 0x00000000 0x00000000 0x00000000
433
+0x00000000 0x00000000 0x00000000 0x00000000
434
+0x00000000 0x00000000 0x00000000 0x00000000
435
+0x00000000 0x00000000 0x00000000 0x00000000
436
+0x00000000 0x00000000 0x00000000 0x00000000
437
+0x00000000 0x40013800 0x0001C200 0x00000000
438
+0x00000000 0x00000000 0x0000000C 0x00000000
439
+0x00000000 0x00000000 0x00000001 0x00000000
440
+0x00000000 0x00000000 0x00000000 0x00000000
441
+0x00202000 0x00000000 0x00000020 0x00000000
442
+0x00000000 0x00000000 0x00000000 0x00000000
443
+0x00000000 0x00000000 0x00000000 0x00000000
444
+0x00000000 0x00000000 0x00000000 0x00000000
445
+0x00000000 0x00000000 0x00000000 0x00000000
446
+0x00000000 0x00000000 0x00000000 0x00000000
447
+0x00000000 0x00000000 0x00000000 0x00000000
448
+0x00000050 
449
+Stack segment:
450
+mem@0x200008E0, 0x00000400
451
+0x00000000 0x08004907 0xA5A5A5A5 0x08004917
452
+0xA5A5A5A5 0x08004925 0xA5A5A5A5 0xA5A5A5A5
453
+0xA5A5A5A5 0x08002B21 0xA5A5A5A5 0xA5A5A5A5
454
+0x00000000 0x80000068 0x200008C8 0x00000000
455
+0x2000159C 0x2000159C 0x20000918 0x20001594
456
+0x00000020 0x00000000 0x00000000 0x20000918
457
+0x00000000 0x00000018 0x20000710 0x61666564
458
+0x54746C75 0x006B7361 0x00000000 0x00000001
459
+0x00000000 0x00000018 0x00000000 0x00000000
460
+0x00000000 0x00000000 0x20001300 0x00000988
461
+0x00000000 0x00000000 0x00000000 0x00000000
462
+0x00000000 0x00000000 0x00000000 0x00000000
463
+0x00000000 0x00000000 0x00000000 0x00000000
464
+0x00000000 0x00000000 0x00000000 0x00000000
465
+0x00000000 0x00000000 0x00000000 0x00000000
466
+0x00000000 0x00000000 0x00000000 0x00000000
467
+0x00000000 0x00000000 0x00000000 0x00000000
468
+0x00000000 0x00000000 0x00000000 0x00000000
469
+0x00000000 0x00000000 0x00000000 0x00000000
470
+0x00000000 0x00000000 0x00000000 0x00000000
471
+0x00000000 0x00000000 0x00000000 0x00000000
472
+0x00000000 0x00000000 0x00000000 0x00000000
473
+0x00000000 0x00000000 0x00000000 0x00000000
474
+0x00000000 0x00000000 0x00000000 0x00000000
475
+0x00000000 0x00000000 0x00000000 0x00000000
476
+0x00000000 0x00000000 0x00000000 0x00000000
477
+0x00000000 0x00000000 0x00000000 0x00000000
478
+0x00000000 0x00000000 0x00000000 0x00000000
479
+0x00000000 0x00000000 0x00000000 0x00000000
480
+0x00000000 0x00000000 0x00000000 0x00000000
481
+0x00000000 0x00000000 0x00000000 0x00000000
482
+0x00000000 0x00000000 0x00000000 0x00000000
483
+0x00000000 0x00000000 0x00000000 0x00000000
484
+0x00000000 0x00000000 0x00000000 0x00000000
485
+0x00000000 0x00000000 0x00000000 0x00000000
486
+0x00000000 0x00000000 0x00000000 0x00000000
487
+0x00000000 0x00000000 0x00000000 0x00000000
488
+0x00000000 0x00000000 0x00000000 0x00000000
489
+0x00000000 0x00000000 0x00000000 0x00000000
490
+0x00000000 0x00000000 0x00000000 0x00000000
491
+0x00000000 0x00000000 0x00000000 0x00000000
492
+0x00000000 0x00000000 0x00000000 0x00000000
493
+0x00000000 0x00000000 0x00000000 0x00000000
494
+0x00000000 0x00000000 0x00000000 0x00000000
495
+0x00000000 0x00000000 0x00000000 0x00000000
496
+0x00000000 0x00000000 0x00000000 0x00000000
497
+0x00000000 0x00000000 0x00000000 0x00000000
498
+0x00000000 0x00000000 0x00000000 0x00000000
499
+0x00000000 0x00000000 0x00000000 0x00000000
500
+0x00000000 0x00000000 0x00000000 0x00000000
501
+0x00000000 0x00000000 0x00000000 0x00000000
502
+0x00000000 0x00000000 0x00000000 0x00000000
503
+0x00000000 0x00000000 0x00000000 0x00000000
504
+0x00000000 0x00000000 0x00000000 0x00000000
505
+0x00000000 0x00000000 0x00000000 0x00000000
506
+0x00000000 0x00000000 0x00000000 0x00000000
507
+0x00000000 0x00000000 0x00000000 0x00000000
508
+0x00000000 0x00000000 0x00000000 0x00000000
509
+0x00000000 0x00000000 0x00000000 0x00000000
510
+0x00000000 0x00000000 0x00000000 0x00000000
511
+0x00000000 0x00000000 0x00000000 0x00000000
512
+0x00000000 0x00000000 0x00000000 0x00000000
513
+0x00000000 0x00000000 0x00000000 0x00000000
514
+0x00000000 0x00000000 0x00000000 0x00000000
515
+

BIN
EWARM/stm32_broad_mini/Exe/mcu_coredump.exe Datei anzeigen


+ 392
- 0
coredump/coredump.c Datei anzeigen

@@ -0,0 +1,392 @@
1
+// SPDX-License-Identifier: GPL-3.0-only
2
+/*
3
+ * Copyright (c) 2008-2023 100askTeam : Dongshan WEI <weidongshan@qq.com> 
4
+ * Discourse:  https://forums.100ask.net
5
+ */
6
+ 
7
+/*  Copyright (C) 2008-2023 深圳百问网科技有限公司
8
+ *  All rights reserved
9
+ *
10
+ * 免责声明: 百问网编写的文档, 仅供学员学习使用, 可以转发或引用(请保留作者信息),禁止用于商业用途!
11
+ * 免责声明: 百问网编写的程序, 可以用于商业用途, 但百问网不承担任何后果!
12
+ * 
13
+ * 本程序遵循GPL V3协议, 请遵循协议
14
+ * 百问网学习平台   : https://www.100ask.net
15
+ * 百问网交流社区   : https://forums.100ask.net
16
+ * 百问网官方B站    : https://space.bilibili.com/275908810
17
+ * 百问网官方淘宝   : https://100ask.taobao.com
18
+ * 联系我们(E-mail): weidongshan@qq.com
19
+ *
20
+ *          版权所有,盗版必究。
21
+ *  
22
+ * 修改历史     版本号           作者        修改内容
23
+ *-----------------------------------------------------
24
+ * 2024.09.20      v01         百问科技      创建文件
25
+ *-----------------------------------------------------
26
+ */
27
+#include <stdbool.h>
28
+#include <stdint.h>
29
+#include "main.h"
30
+
31
+struct exception_stack_frame
32
+{
33
+    rt_uint32_t r0;
34
+    rt_uint32_t r1;
35
+    rt_uint32_t r2;
36
+    rt_uint32_t r3;
37
+    rt_uint32_t r12;
38
+    rt_uint32_t lr;
39
+    rt_uint32_t pc;
40
+    rt_uint32_t psr;
41
+};
42
+
43
+struct stack_frame
44
+{
45
+#if USE_FPU
46
+    rt_uint32_t flag;
47
+#endif /* USE_FPU */
48
+
49
+    /* r4 ~ r11 register */
50
+    rt_uint32_t r4;
51
+    rt_uint32_t r5;
52
+    rt_uint32_t r6;
53
+    rt_uint32_t r7;
54
+    rt_uint32_t r8;
55
+    rt_uint32_t r9;
56
+    rt_uint32_t r10;
57
+    rt_uint32_t r11;
58
+
59
+    struct exception_stack_frame exception_stack_frame;
60
+};
61
+
62
+struct exception_info
63
+{
64
+    rt_uint32_t exc_return;
65
+    struct stack_frame stack_frame;
66
+};
67
+
68
+#if defined(__ARMCC_VERSION)
69
+    /* C stack block name, default is STACK */
70
+    #ifndef CMB_CSTACK_BLOCK_NAME
71
+    #define CMB_CSTACK_BLOCK_NAME          Image$$ARM_LIB_STACK$$ZI
72
+    #endif
73
+    /* code section name, default is ER_IROM1 */
74
+    #ifndef CMB_CODE_SECTION_NAME
75
+    #define CMB_CODE_SECTION_NAME          FLASH_CODE
76
+    #endif
77
+#elif defined(__ICCARM__)
78
+    /* C stack block name, default is 'CSTACK' */
79
+    #ifndef CMB_CSTACK_BLOCK_NAME
80
+    #define CMB_CSTACK_BLOCK_NAME          "CSTACK"
81
+    #endif
82
+    /* code section name, default is '.text' */
83
+    #ifndef CMB_CODE_SECTION_NAME
84
+    #define CMB_CODE_SECTION_NAME          ".text"
85
+    #endif
86
+#elif defined(__GNUC__)
87
+    /* C stack block start address, defined on linker script file, default is _sstack */
88
+    #ifndef CMB_CSTACK_BLOCK_START
89
+    #define CMB_CSTACK_BLOCK_START         _sstack
90
+    #endif
91
+    /* C stack block end address, defined on linker script file, default is _estack */
92
+    #ifndef CMB_CSTACK_BLOCK_END
93
+    #define CMB_CSTACK_BLOCK_END           _estack
94
+    #endif
95
+    /* code section start address, defined on linker script file, default is _stext */
96
+    #ifndef CMB_CODE_SECTION_START
97
+    #define CMB_CODE_SECTION_START         _stext
98
+    #endif
99
+    /* code section end address, defined on linker script file, default is _etext */
100
+    #ifndef CMB_CODE_SECTION_END
101
+    #define CMB_CODE_SECTION_END           _etext
102
+    #endif
103
+#else
104
+    #error "not supported compiler"
105
+#endif
106
+
107
+#if __STDC_VERSION__ < 199901L
108
+    #error "must be C99 or higher. try to add '-std=c99' to compile parameters"
109
+#endif
110
+
111
+#if defined(__CC_ARM)
112
+    #define SECTION_START(_name_)                _name_##$$Base
113
+    #define SECTION_END(_name_)                  _name_##$$Limit
114
+    #define IMAGE_SECTION_START(_name_)          Image$$##_name_##$$Base
115
+    #define IMAGE_SECTION_END(_name_)            Image$$##_name_##$$Limit
116
+    #define CSTACK_BLOCK_START(_name_)           SECTION_START(_name_)
117
+    #define CSTACK_BLOCK_END(_name_)             SECTION_END(_name_)
118
+    #define CODE_SECTION_START(_name_)           IMAGE_SECTION_START(_name_)
119
+    #define CODE_SECTION_END(_name_)             IMAGE_SECTION_END(_name_)
120
+
121
+    extern const int CSTACK_BLOCK_START(CMB_CSTACK_BLOCK_NAME);
122
+    extern const int CSTACK_BLOCK_END(CMB_CSTACK_BLOCK_NAME);
123
+    extern const int CODE_SECTION_START(CMB_CODE_SECTION_NAME);
124
+    extern const int CODE_SECTION_END(CMB_CODE_SECTION_NAME);
125
+#elif defined(__ICCARM__)
126
+    #pragma section=CMB_CSTACK_BLOCK_NAME
127
+    #pragma section=CMB_CODE_SECTION_NAME
128
+#elif defined(__GNUC__)
129
+    extern const int CMB_CSTACK_BLOCK_START;
130
+    extern const int CMB_CSTACK_BLOCK_END;
131
+    extern const int CMB_CODE_SECTION_START;
132
+    extern const int CMB_CODE_SECTION_END;
133
+#else
134
+    #error "not supported compiler"
135
+#endif  
136
+    
137
+static bool is_in_text(uint32_t addr)
138
+{
139
+#if 0
140
+    uint32_t code_start_addr = (uint32_t)&CODE_SECTION_START(CMB_CODE_SECTION_NAME);
141
+    uint32_t code_size = (uint32_t)&CODE_SECTION_END(CMB_CODE_SECTION_NAME) - code_start_addr;
142
+#else
143
+    uint32_t code_start_addr = (uint32_t)__section_begin(CMB_CODE_SECTION_NAME);
144
+    uint32_t code_size = (uint32_t)__section_end(CMB_CODE_SECTION_NAME) - code_start_addr;
145
+#endif
146
+    
147
+    if (code_start_addr < addr && addr <= code_start_addr + code_size)
148
+    {
149
+        return true;
150
+    }
151
+    
152
+    return false;
153
+}
154
+
155
+static bool disassembly_ins_is_bl_blx(uint32_t addr) 
156
+{
157
+    #define BL_INS_MASK         0xF800
158
+    #define BL_INS_HIGH         0xF800
159
+    #define BL_INS_LOW          0xF000
160
+    #define BLX_INX_MASK        0xFF00
161
+    #define BLX_INX             0x4700
162
+  
163
+    uint16_t ins1 = *((uint16_t *)addr);
164
+    uint16_t ins2 = *((uint16_t *)(addr + 2));
165
+    
166
+    if ((ins2 & BL_INS_MASK) == BL_INS_HIGH && (ins1 & BL_INS_MASK) == BL_INS_LOW) 
167
+    {
168
+        return true;
169
+    } 
170
+    else if ((ins2 & BLX_INX_MASK) == BLX_INX) 
171
+    {
172
+        return true;
173
+    } 
174
+    else 
175
+    {
176
+        return false;
177
+    }
178
+}
179
+
180
+void svc_exception(struct exception_info *exception_info)
181
+{
182
+    //struct exception_stack_frame *exception_stack = &exception_info->stack_frame.exception_stack_frame;
183
+    struct stack_frame *context = &exception_info->stack_frame;
184
+    
185
+    unsigned int addr;
186
+    unsigned short swi_inst;
187
+    unsigned int *old_sp;
188
+    unsigned int value;
189
+    
190
+    /* 取出swi指令 */
191
+    addr = context->exception_stack_frame.pc;
192
+    addr -= 2;
193
+    
194
+    swi_inst = *((unsigned short *)addr);
195
+    rt_kprintf("swi_inst = 0x%04x\n", swi_inst);
196
+    swi_inst = swi_inst & 0xff;
197
+    
198
+    /* 分析swi指令 */
199
+    old_sp = (unsigned int *)(exception_info + 1); // 得到栈顶
200
+    unsigned int *p_reg = &context->exception_stack_frame.r0; // 得到r0的地址
201
+    
202
+    if (swi_inst == 0xff)
203
+    {
204
+        /* POP {PC} */
205
+        value = *old_sp;
206
+        old_sp++;
207
+        context->exception_stack_frame.pc = value;
208
+    }
209
+    else
210
+    {
211
+        for (int i = 0; i < 8; i ++)
212
+        {
213
+            if (swi_inst & (1 << i))
214
+            {
215
+                /* POP {r0, PC} */
216
+                value = *old_sp;
217
+                old_sp++;
218
+                p_reg[i] = value; // 哪个寄存器就保存哪个值
219
+                
220
+                /* POP {PC} */
221
+                value = *old_sp;
222
+                old_sp++;
223
+                context->exception_stack_frame.pc = value;
224
+            }
225
+        }
226
+    }
227
+    
228
+    rt_kprintf("old_sp = 0x%0x\n", old_sp);
229
+    rt_kprintf("context->exception_stack_frame.pc= 0x%0x\n", context->exception_stack_frame.pc);
230
+    /* 模拟swi指令 */
231
+    struct exception_info stack_frame = *exception_info;
232
+    unsigned int old_pos  = (unsigned int)(exception_info + 1);
233
+    unsigned int new_pos = (unsigned int)old_sp;
234
+    unsigned int offset = new_pos - old_pos;
235
+    
236
+    exception_info = (struct exception_info *)((unsigned int)exception_info + offset);
237
+    *exception_info = stack_frame;
238
+    /* 返回 */
239
+}
240
+
241
+void rt_hw_hard_fault_exception(struct exception_info *exception_info)
242
+{
243
+#if 0
244
+    //struct exception_stack_frame *exception_stack = &exception_info->stack_frame.exception_stack_frame;
245
+    struct stack_frame *context = &exception_info->stack_frame;
246
+    rt_kprintf("psr: 0x%08x\n", context->exception_stack_frame.psr);
247
+
248
+    rt_kprintf("r00: 0x%08x\n", context->exception_stack_frame.r0);
249
+    rt_kprintf("r01: 0x%08x\n", context->exception_stack_frame.r1);
250
+    rt_kprintf("r02: 0x%08x\n", context->exception_stack_frame.r2);
251
+    rt_kprintf("r03: 0x%08x\n", context->exception_stack_frame.r3);
252
+    rt_kprintf("r04: 0x%08x\n", context->r4);
253
+    rt_kprintf("r05: 0x%08x\n", context->r5);
254
+    rt_kprintf("r06: 0x%08x\n", context->r6);
255
+    rt_kprintf("r07: 0x%08x\n", context->r7);
256
+    rt_kprintf("r08: 0x%08x\n", context->r8);
257
+    rt_kprintf("r09: 0x%08x\n", context->r9);
258
+    rt_kprintf("r10: 0x%08x\n", context->r10);
259
+    rt_kprintf("r11: 0x%08x\n", context->r11);
260
+    rt_kprintf("r12: 0x%08x\n", context->exception_stack_frame.r12);
261
+    rt_kprintf(" lr: 0x%08x\n", context->exception_stack_frame.lr);
262
+    rt_kprintf(" pc: 0x%08x\n", context->exception_stack_frame.pc);
263
+    
264
+    rt_kprintf("use command: addr2line -e your.out -a -f ");
265
+    rt_kprintf("%08x ", context->exception_stack_frame.pc);
266
+    rt_kprintf("%08x ", context->exception_stack_frame.lr);
267
+    uint32_t lr;
268
+    uint32_t pc;
269
+    uint32_t *app_sp = (unsigned int *)(exception_info + 1); // 得到栈顶;
270
+    
271
+    for(int i = 0; i < 1024; i++)
272
+    {
273
+        lr = *app_sp;
274
+        app_sp++;
275
+        
276
+        if ((lr & 0x01) && true == is_in_text(lr))
277
+        {
278
+            pc = (lr & ~0x01) - 4;
279
+
280
+            if (true == disassembly_ins_is_bl_blx(pc))
281
+            {
282
+                rt_kprintf("%08x ", pc);
283
+            }
284
+        }
285
+    }
286
+#else 
287
+    void DumpCore(struct stack_frame *sp);
288
+    DumpCore(&exception_info->stack_frame);
289
+#endif
290
+    while(1);
291
+}
292
+
293
+/**********************************************************************
294
+ * 函数名称: DumpRegisters
295
+ * 功能描述: 打印寄存器的值
296
+ * 输入参数: sp     - hardfault.s里设置的这个参数,它是栈的地址
297
+ *            thread - 线程名
298
+ * 输出参数: 无
299
+ * 返 回 值: 无
300
+ * 修改日期        版本号     修改人	      修改内容
301
+ * -----------------------------------------------
302
+ * 2023/09/20	     V1.0	  韦东山	      创建
303
+ ***********************************************************************/
304
+static void DumpRegisters(struct stack_frame *sp, char *thread)
305
+{
306
+	rt_kprintf("Registers@%s\n", thread);
307
+	rt_kprintf("R0: 0x%08X\n", sp->exception_stack_frame.r0);
308
+	rt_kprintf("R1: 0x%08X\n", sp->exception_stack_frame.r1); 
309
+	rt_kprintf("R2: 0x%08X\n", sp->exception_stack_frame.r2); 
310
+	rt_kprintf("R3: 0x%08X\n", sp->exception_stack_frame.r3); 
311
+	rt_kprintf("R4: 0x%08X\n", sp->r4); 
312
+	rt_kprintf("R5: 0x%08X\n", sp->r5); 
313
+	rt_kprintf("R6: 0x%08X\n", sp->r6); 
314
+	rt_kprintf("R7: 0x%08X\n", sp->r7); 
315
+	rt_kprintf("R8: 0x%08X\n", sp->r8); 
316
+	rt_kprintf("R9: 0x%08X\n", sp->r9); 
317
+	rt_kprintf("R10: 0x%08X\n", sp->r10); 
318
+	rt_kprintf("R11: 0x%08X\n", sp->r11); 
319
+	rt_kprintf("R12: 0x%08X\n", sp->exception_stack_frame.r12); 
320
+	rt_kprintf("R13(SP): 0x%08X\n", (uint32_t)sp + sizeof(*sp)); 
321
+	rt_kprintf("R14(LR): 0x%08X\n", sp->exception_stack_frame.lr); 
322
+	rt_kprintf("R15(PC): 0x%08X\n", sp->exception_stack_frame.pc); 
323
+	rt_kprintf("xPSR: 0x%08X\n", sp->exception_stack_frame.psr); 
324
+}
325
+
326
+/**********************************************************************
327
+ * 函数名称: DumpMem
328
+ * 功能描述: 打印内存的值
329
+ * 输入参数: addr - 内存起始地址(4对齐)
330
+ *            len  - 内存长度(4对齐)
331
+ * 输出参数: 无
332
+ * 返 回 值: 无
333
+ * 修改日期        版本号     修改人	      修改内容
334
+ * -----------------------------------------------
335
+ * 2023/09/20	     V1.0	  韦东山	      创建
336
+ ***********************************************************************/
337
+static void DumpMem(uint32_t addr, uint32_t len)
338
+{
339
+	uint32_t *paddr;
340
+	uint32_t i;
341
+	
342
+	paddr = (uint32_t *)addr;
343
+	rt_kprintf("mem@0x%08X, 0x%08X\n", addr, len);
344
+	
345
+	for (i = 0; i < len;)
346
+	{
347
+		rt_kprintf("0x%08X", *paddr);
348
+		paddr++;
349
+
350
+		i+= 4;
351
+		if (i % 16 == 0)
352
+			rt_kprintf("\n");
353
+		else
354
+			rt_kprintf(" ");
355
+	}
356
+
357
+	rt_kprintf("\n");
358
+}
359
+
360
+/**********************************************************************
361
+ * 函数名称: DumpCore
362
+ * 功能描述: 打印寄存器、内存的值
363
+ * 输入参数: sp     - hardfault.s里设置的这个参数,它是栈的地址
364
+ * 输出参数: 无
365
+ * 返 回 值: 无
366
+ * 修改日期        版本号     修改人	      修改内容
367
+ * -----------------------------------------------
368
+ * 2023/09/20	     V1.0	  韦东山	      创建
369
+ ***********************************************************************/
370
+#pragma section=".data"
371
+#pragma section=".bss"
372
+void DumpCore(struct stack_frame *sp)
373
+{
374
+	/* 打印寄存器 */
375
+	DumpRegisters(sp, "current_thread");
376
+	
377
+	/* 打印数据段 */
378
+        uint32_t start = (uint32_t)__section_begin(".data");
379
+        uint32_t end = (uint32_t)__section_end(".data");
380
+	rt_kprintf("Data segment:\n");
381
+	DumpMem(start, end - start);
382
+
383
+	/* 打印ZI段 */
384
+	rt_kprintf("ZI segment:\n");
385
+        start = (uint32_t)__section_begin(".bss");
386
+        end = (uint32_t)__section_end(".bss");
387
+	DumpMem(start, end - start);
388
+
389
+	/* 打印栈 */
390
+	rt_kprintf("Stack segment:\n");
391
+	DumpMem((uint32_t)sp + sizeof(*sp), 1024);
392
+}

Laden…
Abbrechen
Speichern