📄 eeinfo.cod
字号:
000b8 e59d2008 ldr r2, [sp, #8]
000bc e59d300c ldr r3, [sp, #0xC]
000c0 e29220e6 adds r2, r2, #0xE6
000c4 e2a33000 adc r3, r3, #0
000c8 e58d2010 str r2, [sp, #0x10]
000cc e58d3014 str r3, [sp, #0x14]
000d0 |$L38194|
; 297 :
; 298 : do
; 299 : {
; 300 : //
; 301 : // Check to see if there are bytes to receive.
; 302 : //
; 303 : if(*SPI_SR & SPISR_RNE)
000d0 e59f3274 ldr r3, [pc, #0x274]
000d4 e5933000 ldr r3, [r3]
000d8 e3130004 tst r3, #4
000dc 0a000005 beq |$L38198|
; 304 : {
; 305 : ulTemp = *SPI_DR;
000e0 e59f3260 ldr r3, [pc, #0x260]
000e4 e5933000 ldr r3, [r3]
000e8 e58d3024 str r3, [sp, #0x24]
; 306 : ulCount++;
000ec e59d3020 ldr r3, [sp, #0x20]
000f0 e2833001 add r3, r3, #1
000f4 e58d3020 str r3, [sp, #0x20]
000f8 |$L38198|
; 307 : }
; 308 :
; 309 : //
; 310 : // Check to see if we can transmit data so that we can receive.
; 311 : //
; 312 : if(ulTransmitCount <ulLength && (*SPI_SR & SPISR_TNF))
000f8 e59d2018 ldr r2, [sp, #0x18]
000fc e59d3094 ldr r3, [sp, #0x94]
00100 e1520003 cmp r2, r3
00104 2a000009 bcs |$L38201|
00108 e59f323c ldr r3, [pc, #0x23C]
0010c e5933000 ldr r3, [r3]
00110 e3130002 tst r3, #2
00114 0a000005 beq |$L38201|
; 313 : {
; 314 : *SPI_DR = 0;
00118 e59f2228 ldr r2, [pc, #0x228]
0011c e3a03000 mov r3, #0
00120 e5823000 str r3, [r2]
; 315 : ulTransmitCount++;
00124 e59d3018 ldr r3, [sp, #0x18]
00128 e2833001 add r3, r3, #1
0012c e58d3018 str r3, [sp, #0x18]
00130 |$L38201|
; 316 : }
; 317 :
; 318 : //
; 319 : // Have a timeout so the system does not get stuck.
; 320 : //
; 321 : ullCurrent = GetSystemTimeInUSec();
00130 eb000000 bl GetSystemTimeInUSec
00134 e58d1044 str r1, [sp, #0x44]
00138 e58d0040 str r0, [sp, #0x40]
0013c e59d3040 ldr r3, [sp, #0x40]
00140 e58d3000 str r3, [sp]
00144 e59d3044 ldr r3, [sp, #0x44]
00148 e58d3004 str r3, [sp, #4]
; 322 : if(ullMax < ullCurrent)
0014c e59d3010 ldr r3, [sp, #0x10]
00150 e58d3048 str r3, [sp, #0x48]
00154 e59d3014 ldr r3, [sp, #0x14]
00158 e58d304c str r3, [sp, #0x4C]
0015c e59d3000 ldr r3, [sp]
00160 e58d3050 str r3, [sp, #0x50]
00164 e59d3004 ldr r3, [sp, #4]
00168 e58d3054 str r3, [sp, #0x54]
0016c e59d3048 ldr r3, [sp, #0x48]
00170 e58d3058 str r3, [sp, #0x58]
00174 e59d3050 ldr r3, [sp, #0x50]
00178 e58d305c str r3, [sp, #0x5C]
0017c e59d204c ldr r2, [sp, #0x4C]
00180 e59d3054 ldr r3, [sp, #0x54]
00184 e1520003 cmp r2, r3
00188 8a000009 bhi |$L38203|
0018c 3a000003 bcc |$L38314|
00190 e59d2058 ldr r2, [sp, #0x58]
00194 e59d305c ldr r3, [sp, #0x5C]
00198 e1520003 cmp r2, r3
0019c 2a000004 bcs |$L38203|
001a0 |$L38314|
; 323 : {
; 324 : EdbgOutputDebugString("EEINFO: ReadEEWord 1rst Timeout.\r\n");
001a0 e59f01a8 ldr r0, [pc, #0x1A8]
001a4 eb000000 bl EdbgOutputDebugString
; 325 : return(0);
001a8 e3a03000 mov r3, #0
001ac e58d302c str r3, [sp, #0x2C]
001b0 ea00005e b |$L38179|
001b4 |$L38203|
; 326 : }
; 327 :
; 328 : } while(ulCount < 4);
001b4 e59d3020 ldr r3, [sp, #0x20]
001b8 e3530004 cmp r3, #4
001bc 3affffc3 bcc |$L38194|
; 329 :
; 330 : //
; 331 : // Read in the rest of the data.
; 332 : //
; 333 : ullStart = GetSystemTimeInUSec();
001c0 eb000000 bl GetSystemTimeInUSec
001c4 e58d1064 str r1, [sp, #0x64]
001c8 e58d0060 str r0, [sp, #0x60]
001cc e59d3060 ldr r3, [sp, #0x60]
001d0 e58d3008 str r3, [sp, #8]
001d4 e59d3064 ldr r3, [sp, #0x64]
001d8 e58d300c str r3, [sp, #0xC]
; 334 : ullMax = ullStart + SPI_MINTIME + ulLength * SPI_BYTETIME;
001dc e59d2008 ldr r2, [sp, #8]
001e0 e59d300c ldr r3, [sp, #0xC]
001e4 e29200c8 adds r0, r2, #0xC8
001e8 e2a31000 adc r1, r3, #0
001ec e59d2094 ldr r2, [sp, #0x94]
001f0 e3a0300a mov r3, #0xA
001f4 e0030392 mul r3, r2, r3
001f8 e0902003 adds r2, r0, r3
001fc e2a13000 adc r3, r1, #0
00200 e58d2010 str r2, [sp, #0x10]
00204 e58d3014 str r3, [sp, #0x14]
; 335 : ulCount = 0;
00208 e3a03000 mov r3, #0
0020c e58d3020 str r3, [sp, #0x20]
00210 |$L38205|
; 336 : do
; 337 : {
; 338 : //
; 339 : // Check to see if there are bytes to receive.
; 340 : //
; 341 : if(*SPI_SR & SPISR_RNE)
00210 e59f3134 ldr r3, [pc, #0x134]
00214 e5933000 ldr r3, [r3]
00218 e3130004 tst r3, #4
0021c 0a00000a beq |$L38209|
; 342 : {
; 343 : pucData[ulCount++] = (UCHAR)(*SPI_DR & 0xFF);
00220 e59f3120 ldr r3, [pc, #0x120]
00224 e5933000 ldr r3, [r3]
00228 e20330ff and r3, r3, #0xFF
0022c e20310ff and r1, r3, #0xFF
00230 e59d2098 ldr r2, [sp, #0x98]
00234 e59d3020 ldr r3, [sp, #0x20]
00238 e0823003 add r3, r2, r3
0023c e5c31000 strb r1, [r3]
00240 e59d3020 ldr r3, [sp, #0x20]
00244 e2833001 add r3, r3, #1
00248 e58d3020 str r3, [sp, #0x20]
0024c |$L38209|
; 344 : }
; 345 :
; 346 : //
; 347 : // Check to see if we can transmit data so that we can receive.
; 348 : //
; 349 : if(ulTransmitCount <ulLength && (*SPI_SR & SPISR_TNF))
0024c e59d2018 ldr r2, [sp, #0x18]
00250 e59d3094 ldr r3, [sp, #0x94]
00254 e1520003 cmp r2, r3
00258 2a000009 bcs |$L38213|
0025c e59f30e8 ldr r3, [pc, #0xE8]
00260 e5933000 ldr r3, [r3]
00264 e3130002 tst r3, #2
00268 0a000005 beq |$L38213|
; 350 : {
; 351 : *SPI_DR = 0;
0026c e59f20d4 ldr r2, [pc, #0xD4]
00270 e3a03000 mov r3, #0
00274 e5823000 str r3, [r2]
; 352 : ulTransmitCount++;
00278 e59d3018 ldr r3, [sp, #0x18]
0027c e2833001 add r3, r3, #1
00280 e58d3018 str r3, [sp, #0x18]
00284 |$L38213|
; 353 : }
; 354 :
; 355 : //
; 356 : // Have a timeout so the system does not get stuck.
; 357 : //
; 358 : ullCurrent = GetSystemTimeInUSec();
00284 eb000000 bl GetSystemTimeInUSec
00288 e58d106c str r1, [sp, #0x6C]
0028c e58d0068 str r0, [sp, #0x68]
00290 e59d3068 ldr r3, [sp, #0x68]
00294 e58d3000 str r3, [sp]
00298 e59d306c ldr r3, [sp, #0x6C]
0029c e58d3004 str r3, [sp, #4]
; 359 : if(ullMax < ullCurrent)
002a0 e59d3010 ldr r3, [sp, #0x10]
002a4 e58d3070 str r3, [sp, #0x70]
002a8 e59d3014 ldr r3, [sp, #0x14]
002ac e58d3074 str r3, [sp, #0x74]
002b0 e59d3000 ldr r3, [sp]
002b4 e58d3078 str r3, [sp, #0x78]
002b8 e59d3004 ldr r3, [sp, #4]
002bc e58d307c str r3, [sp, #0x7C]
002c0 e59d3070 ldr r3, [sp, #0x70]
002c4 e58d3080 str r3, [sp, #0x80]
002c8 e59d3078 ldr r3, [sp, #0x78]
002cc e58d3084 str r3, [sp, #0x84]
002d0 e59d2074 ldr r2, [sp, #0x74]
002d4 e59d307c ldr r3, [sp, #0x7C]
002d8 e1520003 cmp r2, r3
002dc 8a00000d bhi |$L38215|
002e0 3a000003 bcc |$L38315|
002e4 e59d2080 ldr r2, [sp, #0x80]
002e8 e59d3084 ldr r3, [sp, #0x84]
002ec e1520003 cmp r2, r3
002f0 2a000008 bcs |$L38215|
002f4 |$L38315|
; 360 : {
; 361 : EdbgOutputDebugString("EEINFO: ReadEEWord 2nd Timeout.\r\n");
002f4 e59f0048 ldr r0, [pc, #0x48]
002f8 eb000000 bl EdbgOutputDebugString
; 362 : EdbgOutputDebugString("EEINFO: Receive = 0x%x, Transmit = 0x%x.\r\n", ulCount, ulTransmitCount);
002fc e59d2018 ldr r2, [sp, #0x18]
00300 e59d1020 ldr r1, [sp, #0x20]
00304 e59f0034 ldr r0, [pc, #0x34]
00308 eb000000 bl EdbgOutputDebugString
; 363 : return(0);
0030c e3a03000 mov r3, #0
00310 e58d302c str r3, [sp, #0x2C]
00314 ea000005 b |$L38179|
00318 |$L38215|
; 364 : }
; 365 : } while(ulCount < ulLength);
00318 e59d2020 ldr r2, [sp, #0x20]
0031c e59d3094 ldr r3, [sp, #0x94]
00320 e1520003 cmp r2, r3
00324 3affffb9 bcc |$L38205|
; 366 : return (1);
00328 e3a03001 mov r3, #1
0032c e58d302c str r3, [sp, #0x2C]
00330 |$L38179|
; 276 : return bRet;
00330 e59d002c ldr r0, [sp, #0x2C]
; 367 : }
00334 e28dd088 add sp, sp, #0x88
00338 e89d6000 ldmia sp, {sp, lr}
0033c e12fff1e bx lr
00340 |$L38322|
00340 00000000 DCD |??_C@_0CL@KFPMGBGB@EEINFO?3?5Receive?5?$DN?50x?$CFx?0?5Transmit@|
00344 00000000 DCD |??_C@_0CC@ENCMIEAA@EEINFO?3?5ReadEEWord?52nd?5Timeout?4?$AN@|
00348 808a0008 DCD 0x808a0008
0034c 808a000c DCD 0x808a000c
00350 00000000 DCD |??_C@_0CD@DCGJPODM@EEINFO?3?5ReadEEWord?51rst?5Timeout?4@|
00354 00000000 DCD |??_C@_0CE@EMPABGLD@EEINFO?3?5ClearReceiveFifo?5Timeout@|
00358 |$M38318|
ENDP ; |ReadEEWord|
IMPORT |DelayInuSec|
00000 AREA |.text| { |ClearReceiveFifo| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ClearReceiveFifo|, PDATA, SELECTION=5, ASSOC=|.text| { |ClearReceiveFifo| } ; comdat associative
|$T38332| DCD |$L38331|
DCD 0x4000a202
; Function compile flags: /Ods
00000 AREA |.text| { |ClearReceiveFifo| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ClearReceiveFifo| PROC
; 380 : {
00000 |$L38331|
00000 e52de004 str lr, [sp, #-4]!
00004 e24dd098 sub sp, sp, #0x98
00008 |$M38329|
; 381 : ULONG ulTemp;
; 382 : ULONGLONG ullStart, ullCurrent, ullMax;
; 383 :
; 384 : //
; 385 : // Clear the transmit fifo.
; 386 : //
; 387 : ullStart = GetSystemTimeInUSec();
00008 eb000000 bl GetSystemTimeInUSec
0000c e58d1024 str r1, [sp, #0x24]
00010 e58d0020 str r0, [sp, #0x20]
00014 e59d3020 ldr r3, [sp, #0x20]
00018 e58d3008 str r3, [sp, #8]
0001c e59d3024 ldr r3, [sp, #0x24]
00020 e58d300c str r3, [sp, #0xC]
; 388 : ullMax = ullStart + SPI_MINTIME;
00024 e59d2008 ldr r2, [sp, #8]
00028 e59d300c ldr r3, [sp, #0xC]
0002c e29220c8 adds r2, r2, #0xC8
00030 e2a33000 adc r3, r3, #0
00034 e58d2010 str r2, [sp, #0x10]
00038 e58d3014 str r3, [sp, #0x14]
0003c |$L38226|
; 389 : while( !(*SPI_SR & SPISR_TFE))
0003c e59f3240 ldr r3, [pc, #0x240]
00040 e5933000 ldr r3, [r3]
00044 e3130001 tst r3, #1
00048 1a00001f bne |$L38227|
; 390 : {
; 391 : //
; 392 : // Check to see if we timed out.
; 393 : //
; 394 : ullCurrent = GetSystemTimeInUSec();
0004c eb000000 bl GetSystemTimeInUSec
00050 e58d102c str r1, [sp, #0x2C]
00054 e58d0028 str r0, [sp, #0x28]
00058 e59d3028 ldr r3, [sp, #0x28]
0005c e58d3000 str r3, [sp]
00060 e59d302c ldr r3, [sp, #0x2C]
00064 e58d3004 str r3, [sp, #4]
; 395 : if(ullMax < ullCurrent)
00068 e59d3010 ldr r3, [sp, #0x10]
0006c e58d3030 str r3, [sp, #0x30]
00070 e59d3014 ldr r3, [sp, #0x14]
00074 e58d3034 str r3, [sp, #0x34]
00078 e59d3000 ldr r3, [sp]
0007c e58d3038 str r3, [sp, #0x38]
00080 e59d3004 ldr r3, [sp, #4]
00084 e58d303c str r3, [sp, #0x3C]
00088 e59d3030 ldr r3, [sp, #0x30]
0008c e58d3040 str r3, [sp, #0x40]
00090 e59d3038 ldr r3, [sp, #0x38]
00094 e58d3044 str r3, [sp, #0x44]
00098 e59d2034 ldr r2, [sp, #0x34]
0009c e59d303c ldr r3, [sp, #0x3C]
000a0 e1520003 cmp r2, r3
000a4 8a000007 bhi |$L38228|
000a8 3a000003 bcc |$L38325|
000ac e59d2040 ldr r2, [sp, #0x40]
000b0 e59d3044 ldr r3, [sp, #0x44]
000b4 e1520003 cmp r2, r3
000b8 2a000002 bcs |$L38228|
000bc |$L38325|
; 396 : {
; 397 : return(0);
000bc e3a03000 mov r3, #0
000c0 e58d301c str r3, [sp, #0x1C]
000c4 ea000069 b |$L38219|
000c8 |$L38228|
; 398 : }
; 399 : }
000c8 eaffffdb b |$L38226|
000cc |$L38227|
; 400 :
; 401 : //
; 402 : // Make sure that data is not actively going out.
; 403 : //
; 404 : ullStart = GetSystemTimeInUSec();
000cc eb000000 bl GetSystemTimeInUSec
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -