📄 intel_28f160.cod
字号:
00048 e1a00004 mov r0, r4
; 479 :
; 480 : return dwResult;
; 481 : }
0004c e28dd008 add sp, sp, #8
00050 e8bd4010 ldmia sp!, {r4, lr}
00054 e12fff1e bx lr
00058 |$L30366|
00058 00000000 DCD |g_FlashInfo|
0005c |$M30362|
ENDP ; |?Intel_Nor_FMD_GetBlockStatus@@YAKK@Z|, Intel_Nor_FMD_GetBlockStatus
EXPORT |?Intel_Nor_FMD_SetBlockStatus@@YAHKK@Z| ; Intel_Nor_FMD_SetBlockStatus
IMPORT |Nor_FMD_WriteSector|
00000 AREA |.text| { |?Intel_Nor_FMD_SetBlockStatus@@YAHKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?Intel_Nor_FMD_SetBlockStatus@@YAHKK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?Intel_Nor_FMD_SetBlockStatus@@YAHKK@Z| } ; comdat associative
|$T30381| DCD |$L30380|
DCD 0x40002402
; Function compile flags: /Ogsy
00000 AREA |.text| { |?Intel_Nor_FMD_SetBlockStatus@@YAHKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?Intel_Nor_FMD_SetBlockStatus@@YAHKK@Z| PROC ; Intel_Nor_FMD_SetBlockStatus
; 491 : {
00000 |$L30380|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 e24dd008 sub sp, sp, #8
00008 |$M30378|
00008 e1a04001 mov r4, r1
0000c e1a05000 mov r5, r0
; 492 : if (dwStatus & (BLOCK_STATUS_READONLY | BLOCK_STATUS_RESERVED)) {
00010 e314000c tst r4, #0xC
00014 0a000018 beq |$L29902|
; 493 :
; 494 : SECTOR_ADDR Sector = blockID * g_FlashInfo.wSectorsPerBlock;
00018 e59fe06c ldr lr, [pc, #0x6C]
; 495 : SectorInfo SI;
; 496 :
; 497 : if (!Nor_FMD_ReadSector(Sector, NULL, &SI, 1)) {
0001c e3a03001 mov r3, #1
00020 e28d2000 add r2, sp, #0
00024 e1de61b6 ldrh r6, [lr, #0x16]
00028 e3a01000 mov r1, #0
0002c e0000596 mul r0, r6, r5
00030 eb000000 bl Nor_FMD_ReadSector
00034 e3500000 cmp r0, #0
; 498 : return FALSE;
00038 0a00000d beq |$L30377|
; 499 : }
; 500 :
; 501 : if (dwStatus & BLOCK_STATUS_READONLY) {
; 502 : SI.bOEMReserved &= ~OEM_BLOCK_READONLY;
0003c e5dd3004 ldrb r3, [sp, #4]
00040 e3140004 tst r4, #4
; 503 : }
; 504 :
; 505 : if (dwStatus & BLOCK_STATUS_RESERVED) {
; 506 : SI.bOEMReserved &= ~OEM_BLOCK_RESERVED;
; 507 : }
; 508 :
; 509 : if (!Nor_FMD_WriteSector (Sector, NULL, &SI, 1)) {
00044 e0000596 mul r0, r6, r5
00048 120330fd andne r3, r3, #0xFD
0004c e28d2000 add r2, sp, #0
00050 15cd3004 strneb r3, [sp, #4]
00054 e3140008 tst r4, #8
00058 120330fe andne r3, r3, #0xFE
0005c 15cd3004 strneb r3, [sp, #4]
00060 e3a03001 mov r3, #1
00064 e3a01000 mov r1, #0
00068 eb000000 bl Nor_FMD_WriteSector
0006c e3500000 cmp r0, #0
00070 1a000001 bne |$L29902|
00074 |$L30377|
; 510 : return FALSE;
00074 e3a00000 mov r0, #0
00078 ea000000 b |$L29895|
0007c |$L29902|
; 511 : }
; 512 :
; 513 : }
; 514 :
; 515 : return TRUE;
0007c e3a00001 mov r0, #1
00080 |$L29895|
; 516 : }
00080 e28dd008 add sp, sp, #8
00084 e8bd4070 ldmia sp!, {r4 - r6, lr}
00088 e12fff1e bx lr
0008c |$L30383|
0008c 00000000 DCD |g_FlashInfo|
00090 |$M30379|
ENDP ; |?Intel_Nor_FMD_SetBlockStatus@@YAHKK@Z|, Intel_Nor_FMD_SetBlockStatus
EXPORT |??_C@_1DG@PFEDBFOC@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAE?$AAr?$AAa?$AAs?$AAe?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe@| [ DATA ] ; `string'
00000 AREA |.text| { |?EraseBlockEx@@YAHK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?EraseBlockEx@@YAHK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?EraseBlockEx@@YAHK@Z| } ; comdat associative
|$T30436| DCD |$L30435|
DCD 0x40002501
00000 AREA |.rdata| { |??_C@_1DG@PFEDBFOC@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAE?$AAr?$AAa?$AAs?$AAe?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DG@PFEDBFOC@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAE?$AAr?$AAa?$AAs?$AAe?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe@| DCB "N"
DCB 0x0, "o", 0x0, "r", 0x0, "_", 0x0, "F", 0x0, "M", 0x0, "D"
DCB 0x0, "_", 0x0, "E", 0x0, "r", 0x0, "a", 0x0, "s", 0x0, "e"
DCB 0x0, "B", 0x0, "l", 0x0, "o", 0x0, "c", 0x0, "k", 0x0, " "
DCB 0x0, "e", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |?EraseBlockEx@@YAHK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?EraseBlockEx@@YAHK@Z| PROC ; EraseBlockEx
; 519 : {
00000 |$L30435|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M30433|
; 520 : intel_IssueCmd(&g_FlashInfo, CMD_ERASE);
00004 e59f4084 ldr r4, [pc, #0x84]
00008 e3a02020 mov r2, #0x20
; 521 : intel_WriteWord(&g_FlashInfo, EraseAddr, CMD_ERASE_CONFIRM);
0000c e3a0e0d0 mov lr, #0xD0
00010 e5943000 ldr r3, [r4]
; 522 :
; 523 : if(!intel_WaitComplete(&g_FlashInfo))
00014 e3a01001 mov r1, #1
00018 e1c320b0 strh r2, [r3]
0001c e5943000 ldr r3, [r4]
00020 e183e0b0 strh lr, [r3, +r0]
00024 e5942000 ldr r2, [r4]
00028 e3a00070 mov r0, #0x70
0002c |$L30408|
0002c e1c200b0 strh r0, [r2]
00030 e5942000 ldr r2, [r4]
00034 e1d230b0 ldrh r3, [r2]
00038 e3130080 tst r3, #0x80
0003c 0afffffa beq |$L30408|
00040 e3130020 tst r3, #0x20
00044 1a000001 bne |$L30412|
00048 e3130010 tst r3, #0x10
0004c 0a000000 beq |$L30411|
00050 |$L30412|
00050 e3a01000 mov r1, #0
00054 |$L30411|
00054 e3a03050 mov r3, #0x50
00058 e1c230b0 strh r3, [r2]
0005c e3510000 cmp r1, #0
00060 1a000003 bne |$L29906|
; 524 : {
; 525 : RETAILMSG(1, (TEXT("Nor_FMD_EraseBlock error\r\n")));
00064 e59f0020 ldr r0, [pc, #0x20]
00068 eb000000 bl NKDbgPrintfW
0006c e3a00000 mov r0, #0
00070 ea000000 b |$L30427|
00074 |$L29906|
00074 e3a00001 mov r0, #1
00078 |$L30427|
; 526 : intel_IssueCmd(&g_FlashInfo, CMD_READARRAY);
; 527 : return FALSE;
; 528 : }
; 529 :
; 530 : intel_IssueCmd(&g_FlashInfo, CMD_READARRAY);
00078 e5943000 ldr r3, [r4]
0007c e3a020ff mov r2, #0xFF
; 531 : return TRUE;
00080 e1c320b0 strh r2, [r3]
; 532 : }
00084 e8bd4010 ldmia sp!, {r4, lr}
00088 e12fff1e bx lr
0008c |$L30438|
0008c 00000000 DCD |??_C@_1DG@PFEDBFOC@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAE?$AAr?$AAa?$AAs?$AAe?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe@|
00090 00000000 DCD |g_FlashInfo|
00094 |$M30434|
ENDP ; |?EraseBlockEx@@YAHK@Z|, EraseBlockEx
EXPORT |?Intel_Nor_FMD_EraseBlock@@YAHK@Z| ; Intel_Nor_FMD_EraseBlock
EXPORT |??_C@_1IC@EAMLHEPB@?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?3?$AA?5?$AAE?$AAr?$AAa?$AAs?$AAe?$AA?5?$AAb?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAn@| [ DATA ] ; `string'
EXPORT |??_C@_1CI@IHMEKEHC@?$AAE?$AAr?$AAa?$AAs?$AAe?$AA?5?$AAb?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
00000 AREA |.text| { |?Intel_Nor_FMD_EraseBlock@@YAHK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?Intel_Nor_FMD_EraseBlock@@YAHK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?Intel_Nor_FMD_EraseBlock@@YAHK@Z| } ; comdat associative
|$T30463| DCD |$L30462|
DCD 0x40003b01
00000 AREA |.rdata| { |??_C@_1CI@IHMEKEHC@?$AAE?$AAr?$AAa?$AAs?$AAe?$AA?5?$AAb?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CI@IHMEKEHC@?$AAE?$AAr?$AAa?$AAs?$AAe?$AA?5?$AAb?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?$AN?$AA?6?$AA?$AA@| DCB "E"
DCB 0x0, "r", 0x0, "a", 0x0, "s", 0x0, "e", 0x0, " ", 0x0, "b"
DCB 0x0, "l", 0x0, "o", 0x0, "c", 0x0, "k", 0x0, " ", 0x0, "e"
DCB 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1IC@EAMLHEPB@?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?3?$AA?5?$AAE?$AAr?$AAa?$AAs?$AAe?$AA?5?$AAb?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1IC@EAMLHEPB@?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?3?$AA?5?$AAE?$AAr?$AAa?$AAs?$AAe?$AA?5?$AAb?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAn@| DCB "E"
DCB 0x0, "R", 0x0, "R", 0x0, "O", 0x0, "R", 0x0, ":", 0x0, " "
DCB 0x0, "E", 0x0, "r", 0x0, "a", 0x0, "s", 0x0, "e", 0x0, " "
DCB 0x0, "b", 0x0, "l", 0x0, "o", 0x0, "c", 0x0, "k", 0x0, " "
DCB 0x0, "n", 0x0, "u", 0x0, "m", 0x0, ":", 0x0, "0", 0x0, "x"
DCB 0x0, "%", 0x0, "X", 0x0, " ", 0x0, "l", 0x0, "a", 0x0, "r"
DCB 0x0, "g", 0x0, "e", 0x0, " ", 0x0, "t", 0x0, "h", 0x0, "a"
DCB 0x0, "n", 0x0, " ", 0x0, "t", 0x0, "h", 0x0, "e", 0x0, " "
DCB 0x0, "m", 0x0, "a", 0x0, "x", 0x0, " ", 0x0, "b", 0x0, "l"
DCB 0x0, "o", 0x0, "c", 0x0, "k", 0x0, " ", 0x0, "n", 0x0, "u"
DCB 0x0, "m", 0x0, ":", 0x0, "0", 0x0, "x", 0x0, "%", 0x0, "X"
DCB 0x0, "!", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |?Intel_Nor_FMD_EraseBlock@@YAHK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?Intel_Nor_FMD_EraseBlock@@YAHK@Z| PROC ; Intel_Nor_FMD_EraseBlock
; 542 : {
00000 |$L30462|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M30460|
00004 e1a01000 mov r1, r0
; 543 : DWORD i;
; 544 :
; 545 : if(g_FlashInfo.dwBlkNum < blockID)
00008 e59f30d8 ldr r3, [pc, #0xD8]
0000c e593200c ldr r2, [r3, #0xC]
00010 e1520001 cmp r2, r1
00014 2a000004 bcs |$L29912|
; 546 : {
; 547 : RETAILMSG(1, (TEXT("ERROR: Erase block num:0x%X large than the max block num:0x%X!\r\n"),blockID,g_FlashInfo.dwBlkNum));
00018 e59f00c4 ldr r0, [pc, #0xC4]
0001c eb000000 bl NKDbgPrintfW
; 578 : return FALSE;
00020 e3a00000 mov r0, #0
; 583 : }
00024 e8bd4030 ldmia sp!, {r4, r5, lr}
00028 e12fff1e bx lr
0002c |$L29912|
; 548 : return FALSE;
; 549 : }
; 550 :
; 551 : if (blockID == 0 && g_FlashInfo.flashType == FLASH_F160C3BCES)
0002c e3510000 cmp r1, #0
00030 1a00000f bne |$L29914|
00034 e5932018 ldr r2, [r3, #0x18]
00038 e3a03b22 mov r3, #0x22, 22
0003c e38330c3 orr r3, r3, #0xC3
00040 e1520003 cmp r2, r3
00044 1a00001c bne |$L29921|
; 552 : {
; 553 : for (i = 0; i < 8; i++)
00048 e3a04000 mov r4, #0
0004c |$L29915|
; 554 : {
; 555 : if (!EraseBlockEx(i * SMALL_BLOCK_SIZE))
0004c e1a00004 mov r0, r4
00050 eb000000 bl |?EraseBlockEx@@YAHK@Z|
00054 e3500000 cmp r0, #0
00058 0a00001b beq |$L30452|
0005c e2844a02 add r4, r4, #2, 20
00060 e3540801 cmp r4, #1, 16
00064 3afffff8 bcc |$L29915|
00068 |$L29927|
; 579 : }
; 580 : }
; 581 :
; 582 : return TRUE;
00068 e3a00001 mov r0, #1
; 583 : }
0006c e8bd4030 ldmia sp!, {r4, r5, lr}
00070 e12fff1e bx lr
00074 |$L29914|
; 556 : {
; 557 : RETAILMSG(1, (TEXT("Erase block error\r\n")));
; 558 : return FALSE;
; 559 : }
; 560 : }
; 561 : }
; 562 : else if (blockID == 31 && g_FlashInfo.flashType == FLASH_F160C3TDA4137360)
00074 e351001f cmp r1, #0x1F
00078 1a00000f bne |$L29921|
0007c e5932018 ldr r2, [r3, #0x18]
00080 e3a03b22 mov r3, #0x22, 22
00084 e38330c2 orr r3, r3, #0xC2
00088 e1520003 cmp r2, r3
0008c 1a00000a bne |$L29921|
; 563 : {
; 564 : for (i = 0; i < 8; i++)
00090 e3a04000 mov r4, #0
00094 e3a0581f mov r5, #0x1F, 16
00098 |$L29922|
; 565 : {
; 566 : if (!EraseBlockEx(COMMON_BLOCK_SIZE * 31 + i * SMALL_BLOCK_SIZE)) //
00098 e1a00005 mov r0, r5
0009c eb000000 bl |?EraseBlockEx@@YAHK@Z|
000a0 e3500000 cmp r0, #0
000a4 0a000008 beq |$L30452|
000a8 e2844001 add r
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -