Shell: map & dblk

2024.05.07

重新排序:

UEFI v2.70 (EDK II, 0x00010000)
Mapping table
     BLK0: Alias(s):              PcieRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/NVMe(0x1,32-03-00-00-00-00-00-00)
     FS0: Alias(s):HD0b:;BLK1:    PcieRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/NVMe(0x1,32-03-00-00-00-00-00-00)/HD(1,GPT,9DD431F3-1E15-584E-987D-827DD40C2E49,0xF000,0x200000)
     BLK2: Alias(s):              PcieRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/NVMe(0x1,32-03-00-00-00-00-00-00)/HD(2,GPT,8DEE4DA3-BB01-D348-8C62-188B9C031AC1,0x20F000,0x389AB019)
     BLK3: Alias(s):              VenHw(100C2CFA-B586-4198-9B4C-1683D195B1DA)
     FS1: Alias(s):HD1b:;BLK4:    VenHw(100C2CFA-B586-4198-9B4C-1683D195B1DA)/HD(1,GPT,809A75D3-E97F-4F9F-9E15-C4EB053E8AB3,0x800,0x32000)
     BLK5: Alias(s):              VenHw(100C2CFA-B586-4198-9B4C-1683D195B1DA)/HD(2,GPT,836136C3-A854-4F12-8FCD-3F5BCE5C9F24,0x32800,0x8000)
     BLK6: Alias(s):              VenHw(100C2CFA-B586-4198-9B4C-1683D195B1DA)/HD(3,GPT,8B6032D1-3641-44F6-B489-C48D195AC17E,0x3A800,0xE543000)
     BLK7: Alias(s):              VenHw(100C2CFA-B586-4198-9B4C-1683D195B1DA)/HD(4,GPT,96CA6224-A52D-4641-A947-AA3CCBA8DC8C,0xE57D800,0xFA000)

排序之后就更清晰了,下面演示如何演示(可用别名):

2024.05.08
NDB中手动遍历Shell!gShellMapList
(dt -l 及!list命令还没有好,临时可以用$t0 及 poi笨办法替代一下,感觉也不错。)

r $t0 = Shell!gShellMapList
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; x poi($t0+10); dt -b EFI_DEVICE_PATH_PROTOCOL ($t0+10); x poi($t0+18); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb3b398 - e9d68d10 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb3be18  00000000`eeb3b398
00000000`eeb3be20  00000000`e9d68d10 Shell!gShellMapList
00000000`eeb3be28  00000000`eeb3b718
00000000`eeb3be30  00000000`eeb3bd98
00000000`eeb3be38  00000000`00000000
00000000`eeb3be40  00000000`00000000
   +0x000 Type             : 0x18 ''
   +0x001 SubType          : 0xb7 ''
   +0x002 Length           : 
    [00] 0xb3 ''
    [01] 0xee ''
00000000`eeb3bd98  "FS0:"
x poi($t0+10);
dq poi($t0+10) l1;
00000000`eeb3b718  0a0841d0`000c0102
? poi($t0+10);
eval expression: 4004755224 = 00000000`eeb3b718
?? poi($t0+10);
critical symbol information is absent. a lot of features are affected.
Unknown variable error at 'poi($t0+10)'
? poi($t0+10);
eval expression: 4004755224 = 00000000`eeb3b718
dqs $t0+10 l1;
00000000`eeb3be28  00000000`eeb3b718
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; ? poi($t0+10); dt -b EFI_DEVICE_PATH_PROTOCOL ($t0+10); ? poi($t0+18); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb3b418 - eeb3be18 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb3b398  00000000`eeb3b418
00000000`eeb3b3a0  00000000`eeb3be18
00000000`eeb3b3a8  00000000`eeb3b618
00000000`eeb3b3b0  00000000`eeb3bc98
00000000`eeb3b3b8  00000000`00000000
00000000`eeb3b3c0  00000000`00000000
eval expression: 4004754968 = 00000000`eeb3b618
   +0x000 Type             : 0x18 ''
   +0x001 SubType          : 0xb6 ''
   +0x002 Length           : 
    [00] 0xb3 ''
    [01] 0xee ''
eval expression: 4004756632 = 00000000`eeb3bc98
00000000`eeb3bc98  "HD0b:"
r $t0 = Shell!gShellMapList
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; ? poi($t0+10); dt -b EFI_DEVICE_PATH_PROTOCOL ($t0+10); ? poi($t0+18); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb3b398 - e9d68d10 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb3be18  00000000`eeb3b398
00000000`eeb3be20  00000000`e9d68d10 Shell!gShellMapList
00000000`eeb3be28  00000000`eeb3b718
00000000`eeb3be30  00000000`eeb3bd98
00000000`eeb3be38  00000000`00000000
00000000`eeb3be40  00000000`00000000
eval expression: 4004755224 = 00000000`eeb3b718
   +0x000 Type             : 0x18 ''
   +0x001 SubType          : 0xb7 ''
   +0x002 Length           : 
    [00] 0xb3 ''
    [01] 0xee ''
eval expression: 4004756888 = 00000000`eeb3bd98
00000000`eeb3bd98  "FS0:"
[ndb]!echo poi($t0+10)
can't read "t0": no such variable
!echo poi($t0+10)
No command echo found
x poi($t0+10)
r $t0 = Shell!gShellMapList
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL ($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb3b398 - e9d68d10 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb3be18  00000000`eeb3b398
00000000`eeb3be20  00000000`e9d68d10 Shell!gShellMapList
00000000`eeb3be28  00000000`eeb3b718
00000000`eeb3be30  00000000`eeb3bd98
00000000`eeb3be38  00000000`00000000
00000000`eeb3be40  00000000`00000000
00000000`eeb3b718  02 01 0c 00                                      ....
   +0x000 Type             : 0x18 ''
   +0x001 SubType          : 0xb7 ''
   +0x002 Length           : 
    [00] 0xb3 ''
    [01] 0xee ''
00000000`eeb3bd98  "FS0:"
r $t0 = Shell!gShellMapList
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb3b398 - e9d68d10 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb3be18  00000000`eeb3b398
00000000`eeb3be20  00000000`e9d68d10 Shell!gShellMapList
00000000`eeb3be28  00000000`eeb3b718
00000000`eeb3be30  00000000`eeb3bd98
00000000`eeb3be38  00000000`00000000
00000000`eeb3be40  00000000`00000000
00000000`eeb3b718  02 01 0c 00                                      ....
   +0x000 Type             : 0x2 ''
   +0x001 SubType          : 0x1 ''
   +0x002 Length           : 
    [00] 0xc ''
    [01] 0 ''
00000000`eeb3bd98  "FS0:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb3b418 - eeb3be18 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb3b398  00000000`eeb3b418
00000000`eeb3b3a0  00000000`eeb3be18
00000000`eeb3b3a8  00000000`eeb3b618
00000000`eeb3b3b0  00000000`eeb3bc98
00000000`eeb3b3b8  00000000`00000000
00000000`eeb3b3c0  00000000`00000000
00000000`eeb3b618  02 01 0c 00                                      ....
   +0x000 Type             : 0x2 ''
   +0x001 SubType          : 0x1 ''
   +0x002 Length           : 
    [00] 0xc ''
    [01] 0 ''
00000000`eeb3bc98  "HD0b:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb3b498 - eeb3b398 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb3b418  00000000`eeb3b498
00000000`eeb3b420  00000000`eeb3b398
00000000`eeb3b428  00000000`eeb3b518
00000000`eeb3b430  00000000`eeb3bd18
00000000`eeb3b438  00000000`00000000
00000000`eeb3b440  00000000`00000000
00000000`eeb3b518  01 04 14 00                                      ....
   +0x000 Type             : 0x1 ''
   +0x001 SubType          : 0x4 ''
   +0x002 Length           : 
    [00] 0x14 ''
    [01] 0 ''
00000000`eeb3bd18  "FS1:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb3bc18 - eeb3b418 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb3b498  00000000`eeb3bc18
00000000`eeb3b4a0  00000000`eeb3b418
00000000`eeb3b4a8  00000000`eeb38718
00000000`eeb3b4b0  00000000`eeb38b18
00000000`eeb3b4b8  00000000`00000000
00000000`eeb3b4c0  00000000`00000000
00000000`eeb38718  01 04 14 00                                      ....
   +0x000 Type             : 0x1 ''
   +0x001 SubType          : 0x4 ''
   +0x002 Length           : 
    [00] 0x14 ''
    [01] 0 ''
00000000`eeb38b18  "HD1b:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb38698 - eeb3b498 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb3bc18  00000000`eeb38698
00000000`eeb3bc20  00000000`eeb3b498
00000000`eeb3bc28  00000000`eeb3b218
00000000`eeb3bc30  00000000`eeb3b698
00000000`eeb3bc38  00000000`00000000
00000000`eeb3bc40  00000000`00000000
00000000`eeb3b218  02 01 0c 00                                      ....
   +0x000 Type             : 0x2 ''
   +0x001 SubType          : 0x1 ''
   +0x002 Length           : 
    [00] 0xc ''
    [01] 0 ''
00000000`eeb3b698  "BLK0:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb3b118 - eeb3bc18 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb38698  00000000`eeb3b118
00000000`eeb386a0  00000000`eeb3bc18
00000000`eeb386a8  00000000`eeb38818
00000000`eeb386b0  00000000`eeb38798
00000000`eeb386b8  00000000`00000000
00000000`eeb386c0  00000000`00000000
00000000`eeb38818  02 01 0c 00                                      ....
   +0x000 Type             : 0x2 ''
   +0x001 SubType          : 0x1 ''
   +0x002 Length           : 
    [00] 0xc ''
    [01] 0 ''
00000000`eeb38798  "BLK1:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb38a18 - eeb38698 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb3b118  00000000`eeb38a18
00000000`eeb3b120  00000000`eeb38698
00000000`eeb3b128  00000000`eeb38998
00000000`eeb3b130  00000000`eeb3b198
00000000`eeb3b138  00000000`00000000
00000000`eeb3b140  00000000`00000000
00000000`eeb38998  02 01 0c 00                                      ....
   +0x000 Type             : 0x2 ''
   +0x001 SubType          : 0x1 ''
   +0x002 Length           : 
    [00] 0xc ''
    [01] 0 ''
00000000`eeb3b198  "BLK2:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb36f18 - eeb3b118 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb38a18  00000000`eeb36f18
00000000`eeb38a20  00000000`eeb3b118
00000000`eeb38a28  00000000`eeb36018
00000000`eeb38a30  00000000`eeb38a98
00000000`eeb38a38  00000000`00000000
00000000`eeb38a40  00000000`00000000
00000000`eeb36018  01 04 14 00                                      ....
   +0x000 Type             : 0x1 ''
   +0x001 SubType          : 0x4 ''
   +0x002 Length           : 
    [00] 0x14 ''
    [01] 0 ''
00000000`eeb38a98  "BLK3:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb36e18 - eeb38a18 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb36f18  00000000`eeb36e18
00000000`eeb36f20  00000000`eeb38a18
00000000`eeb36f28  00000000`eeb36b18
00000000`eeb36f30  00000000`eeb36f98
00000000`eeb36f38  00000000`00000000
00000000`eeb36f40  00000000`00000000
00000000`eeb36b18  01 04 14 00                                      ....
   +0x000 Type             : 0x1 ''
   +0x001 SubType          : 0x4 ''
   +0x002 Length           : 
    [00] 0x14 ''
    [01] 0 ''
00000000`eeb36f98  "BLK4:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb36d98 - eeb36f18 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb36e18  00000000`eeb36d98
00000000`eeb36e20  00000000`eeb36f18
00000000`eeb36e28  00000000`eeb36b98
00000000`eeb36e30  00000000`eeb36e98
00000000`eeb36e38  00000000`00000000
00000000`eeb36e40  00000000`00000000
00000000`eeb36b98  01 04 14 00                                      ....
   +0x000 Type             : 0x1 ''
   +0x001 SubType          : 0x4 ''
   +0x002 Length           : 
    [00] 0x14 ''
    [01] 0 ''
00000000`eeb36e98  "BLK5:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb36d18 - eeb36e18 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb36d98  00000000`eeb36d18
00000000`eeb36da0  00000000`eeb36e18
00000000`eeb36da8  00000000`eeb36c98
00000000`eeb36db0  00000000`eeb36c18
00000000`eeb36db8  00000000`00000000
00000000`eeb36dc0  00000000`00000000
00000000`eeb36c98  01 04 14 00                                      ....
   +0x000 Type             : 0x1 ''
   +0x001 SubType          : 0x4 ''
   +0x002 Length           : 
    [00] 0x14 ''
    [01] 0 ''
00000000`eeb36c18  "BLK6:"
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`e9d68d10 - eeb36d98 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`eeb36d18  00000000`e9d68d10 Shell!gShellMapList
00000000`eeb36d20  00000000`eeb36d98
00000000`eeb36d28  00000000`eeb36a18
00000000`eeb36d30  00000000`eeb36098
00000000`eeb36d38  00000000`00000000
00000000`eeb36d40  00000000`00000000
00000000`eeb36a18  01 04 14 00                                      ....
   +0x000 Type             : 0x1 ''
   +0x001 SubType          : 0x4 ''
   +0x002 Length           : 
    [00] 0x14 ''
    [01] 0 ''
00000000`eeb36098  "BLK7:"
Opcode 0x38401401, DSCR.ERR=1, DSCR.EL=2
r $t0=poi($t0); dt -b SHELL_MAP_LIST $t0; dqs $t0 l30/8; db poi($t0+10) l4; dt -b EFI_DEVICE_PATH_PROTOCOL poi($t0+10); du poi($t0+18)
   +0x000 Link             :  [ 00000000`eeb3be18 - eeb36d18 ]
      +0x000 ForwardLink      : (null) 
      +0x008 BackLink         : (null) 
   +0x010 DevicePath       : (null) 
   +0x018 MapName          : (null) 
   +0x020 CurrentDirectoryPath : (null) 
   +0x028 Flags            : 0
00000000`e9d68d10  00000000`eeb3be18
00000000`e9d68d18  00000000`eeb36d18
00000000`e9d68d20  00000000`00000000
00000000`e9d68d28  00000000`00000000
00000000`e9d68d30  00000000`00000000
00000000`e9d68d38  00000000`00000000
00000000`00000000  ?? ?? ?? ??                                      ????
   +0x000 Type             : UChar
   +0x001 SubType          : UChar
   +0x002 Length           : UChar
00000000`00000000  "????????????????????????????????"
00000000`00000040  "????????????????????????????????"
00000000`00000080  "????????????????????????????????"
00000000`000000c0  "????????????????????????????????"
00000000`00000100  "????????????????????????????????"
00000000`00000140  "????????????????????????????????"
00000000`00000180  "????????????????????????????????"
00000000`000001c0  "????????????????????????????????"
00000000`00000200  "????????????????????????????????"
00000000`00000240  "????????????????????????????????"
00000000`00000280  "????????????????????????????????"
00000000`000002c0  "????????????????????????????????"
BLK0:          为一块硬盘;
FS0:HD0b:BLK1: 第一个GPT分区,可识别的文件系统,开始扇区号为0xF000,扇区数为0x200000;
BLK2:          为第二个GPT分区,开始扇区号为0x20F000,扇区数为0x389AB019。

dblk 命令通过访问BLK0可以等效访问BLK1或BLK2,只是开始的扇区号相应调整,请看下面例子:

dblk命令是如何读取扇区的?读源代码,再上NDB观察(原过程没有这么顺利,因为发现有代码没有符号,现已经加载上):
参阅:lm及观察加载的Modules
可以观察到,这里有两块硬盘,访问硬盘时,直接用NvmExpressDxe和MmcDxe驱动,访问分区的扇区,则用PartitionDxe:

FS1:\> dblk blk0 f000
LBA 000000000000F000 Size 00000200 bytes BlkIo EEB97088
  00000000: EB 58 90 6D 6B 66 73 2E-66 61 74 00 02 08 20 00  *.X.mkfs.fat... .*
  00000010: 02 00 00 00 00 F8 00 00-3F 00 FF 00 00 F0 00 00  *........?.......*
  00000020: F8 FF 1F 00 00 08 00 00-00 00 00 00 02 00 00 00  *................*
  00000030: 01 00 06 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000040: 80 00 29 96 68 F3 91 6F-70 69 5F 62 6F 6F 74 20  *..).h..opi_boot *
  00000050: 20 20 46 41 54 33 32 20-20 20 0E 1F BE 77 7C AC  *  FAT32   ...w|.*
  00000060: 22 C0 74 0B 56 B4 0E BB-07 00 CD 10 5E EB F0 32  *".t.V.......^..2*
  00000070: E4 CD 16 CD 19 EB FE 54-68 69 73 20 69 73 20 6E  *.......This is n*
  00000080: 6F 74 20 61 20 62 6F 6F-74 61 62 6C 65 20 64 69  *ot a bootable di*
  00000090: 73 6B 2E 20 20 50 6C 65-61 73 65 20 69 6E 73 65  *sk.  Please inse*
  000000A0: 72 74 20 61 20 62 6F 6F-74 61 62 6C 65 20 66 6C  *rt a bootable fl*
  000000B0: 6F 70 70 79 20 61 6E 64-0D 0A 70 72 65 73 73 20  *oppy and..press *
  000000C0: 61 6E 79 20 6B 65 79 20-74 6F 20 74 72 79 20 61  *any key to try a*
  000000D0: 67 61 69 6E 20 2E 2E 2E-20 0D 0A 00 00 00 00 00  *gain ... .......*
  000000E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000F0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000100: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000110: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000120: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000130: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000140: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000150: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000160: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000170: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000180: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000190: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001A0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001B0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001C0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001D0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001F0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA  *..............U.*
FSOpen: Open '\' Success

[NDB]
db 0`EEB97088
00000000`eeb97088  01 00 02 00 00 00 00 00-58 70 b9 ee 00 00 00 00  ........Xp......
00000000`eeb97098  3c 92 71 ea 00 00 00 00-78 70 71 ea 00 00 00 00  <.q.....xpq.....
00000000`eeb970a8  2c 73 71 ea 00 00 00 00-68 59 71 ea 00 00 00 00  ,sq.....hYq.....
00000000`eeb970b8  58 70 b9 ee 00 00 00 00-f4 92 71 ea 00 00 00 00  Xp........q.....
00000000`eeb970c8  c8 aa 71 ea 00 00 00 00-38 ae 71 ea 00 00 00 00  ..q.....8.q.....
00000000`eeb970d8  90 53 71 ea 00 00 00 00-80 46 b1 3a 3f 5d 4d 4a  .Sq......F.:?]MJ
00000000`eeb970e8  bc dc cc 38 00 18 c7 f7-a4 41 71 ea 00 00 00 00  ...8.....Aq.....
00000000`eeb970f8  9c 5e 71 ea 00 00 00 00-b0 41 71 ea 00 00 00 00  .^q......Aq.....
dt -b EFI_BLOCK_IO_PROTOCOL 0`EEB97088
   +0x000 Revision         : 0x20001
   +0x008 Media            : (null) 
   +0x010 Reset            : (null) 
   +0x018 ReadBlocks       : (null) 
   +0x020 WriteBlocks      : (null) 
   +0x028 FlushBlocks      : (null) 
?? sizeof(EFI_BLOCK_IO_PROTOCOL)
unsigned int64 0x30
dqs 0`EEB97088 l30/8
00000000`eeb97088  00000000`00020001
00000000`eeb97090  00000000`eeb97058
00000000`eeb97098  00000000`ea71923c NvmExpressDxe!NvmeBlockIoReset
00000000`eeb970a0  00000000`ea717078 NvmExpressDxe!NvmeBlockIoReadBlocks
00000000`eeb970a8  00000000`ea71732c NvmExpressDxe!NvmeBlockIoWriteBlocks
00000000`eeb970b0  00000000`ea715968 NvmExpressDxe!NvmeBlockIoFlushBlocks

FS1:\> dblk blk1
LBA 0000000000000000 Size 00000200 bytes BlkIo EEB9A530
  00000000: EB 58 90 6D 6B 66 73 2E-66 61 74 00 02 08 20 00  *.X.mkfs.fat... .*
  00000010: 02 00 00 00 00 F8 00 00-3F 00 FF 00 00 F0 00 00  *........?.......*
  00000020: F8 FF 1F 00 00 08 00 00-00 00 00 00 02 00 00 00  *................*
  00000030: 01 00 06 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000040: 80 00 29 96 68 F3 91 6F-70 69 5F 62 6F 6F 74 20  *..).h..opi_boot *
  00000050: 20 20 46 41 54 33 32 20-20 20 0E 1F BE 77 7C AC  *  FAT32   ...w|.*
  00000060: 22 C0 74 0B 56 B4 0E BB-07 00 CD 10 5E EB F0 32  *".t.V.......^..2*
  00000070: E4 CD 16 CD 19 EB FE 54-68 69 73 20 69 73 20 6E  *.......This is n*
  00000080: 6F 74 20 61 20 62 6F 6F-74 61 62 6C 65 20 64 69  *ot a bootable di*
  00000090: 73 6B 2E 20 20 50 6C 65-61 73 65 20 69 6E 73 65  *sk.  Please inse*
  000000A0: 72 74 20 61 20 62 6F 6F-74 61 62 6C 65 20 66 6C  *rt a bootable fl*
  000000B0: 6F 70 70 79 20 61 6E 64-0D 0A 70 72 65 73 73 20  *oppy and..press *
  000000C0: 61 6E 79 20 6B 65 79 20-74 6F 20 74 72 79 20 61  *any key to try a*
  000000D0: 67 61 69 6E 20 2E 2E 2E-20 0D 0A 00 00 00 00 00  *gain ... .......*
  000000E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000F0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000100: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000110: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000120: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000130: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000140: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000150: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000160: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000170: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000180: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000190: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001A0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001B0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001C0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001D0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001F0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA  *..............U.*
FSOpen: Open '\' Success

[NDB] Remarks:符号暂时有问题
dqs 0`EEB9A530 l30/8
00000000`eeb9a530  00000000`00020001
00000000`eeb9a538  00000000`eeb9a588
00000000`eeb9a540  00000000`ea968088 PartitionDxe!PartitionReset [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 603]
00000000`eeb9a548  00000000`ea9680f8 PartitionDxe!PartitionReadBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 679]
00000000`eeb9a550  00000000`ea9681f0 PartitionDxe!PartitionWriteBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 699]
00000000`eeb9a558  00000000`ea9682e8 PartitionDxe!PartitionFlushBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 751]

FS1:\> dblk blk2
LBA 0000000000000000 Size 00000200 bytes BlkIo EEB99030
  00000000: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000010: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000020: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000030: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000040: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000050: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000060: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000070: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000080: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000090: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000A0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000B0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000C0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000D0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000F0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000100: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000110: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000120: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000130: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000140: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000150: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000160: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000170: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000180: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000190: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001A0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001B0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001C0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001D0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001F0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
FSOpen: Open '\' Success

[NDB] Remarks:符号暂时有问题
dqs 0`EEB99030 l30/8
00000000`eeb99030  00000000`00020001
00000000`eeb99038  00000000`eeb99088
00000000`eeb99040  00000000`ea968088 PartitionDxe!PartitionReset [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 603]
00000000`eeb99048  00000000`ea9680f8 PartitionDxe!PartitionReadBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 679]
00000000`eeb99050  00000000`ea9681f0 PartitionDxe!PartitionWriteBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 699]
00000000`eeb99058  00000000`ea9682e8 PartitionDxe!PartitionFlushBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 751]
dqs 0`EEB9A530 l30/8

FS1:\> dblk blk3
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCSendCommand will exit
SdhciSoftReset with mask 0x6000000
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCReadBlockData will exit
SdhciSoftReset with mask 0x6000000
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCSendCommand will exit
SdhciSoftReset with mask 0x6000000
LBA 0000000000000000 Size 00000200 bytes BlkIo EF19FC48
  00000000: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000010: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000020: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000030: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000040: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000050: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000060: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000070: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000080: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000090: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000A0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000B0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000C0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000D0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000F0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000100: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000110: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000120: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000130: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000140: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000150: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000160: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000170: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000180: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000190: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001A0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001B0: 00 00 00 00 00 00 00 00-08 8B E5 4C 00 00 00 00  *...........L....*
  000001C0: 02 00 EE FE BF C1 01 00-00 00 FF FF FF FF 00 00  *................*
  000001D0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001F0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA  *..............U.*
FSOpen: Open '\' Success

[NDB]
dqs 0`EF19FC48 l30/8
00000000`ef19fc48  00000000`00010000
00000000`ef19fc50  00000000`ef19b618
00000000`ef19fc58  00000000`ea709190 MmcDxe!MmcReset
00000000`ef19fc60  00000000`ea709b4c MmcDxe!MmcReadBlocks
00000000`ef19fc68  00000000`ea709b64 MmcDxe!MmcWriteBlocks
00000000`ef19fc70  00000000`ea708018 MmcDxe!ProcessModuleUnloadList

FS1:\> dblk blk4
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCSendCommand will exit
SdhciSoftReset with mask 0x6000000
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCReadBlockData will exit
SdhciSoftReset with mask 0x6000000
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCSendCommand will exit
SdhciSoftReset with mask 0x6000000
LBA 0000000000000000 Size 00000200 bytes BlkIo EF1A78B0
  00000000: EB 58 90 4D 53 44 4F 53-35 2E 30 00 02 02 FE 19  *.X.MSDOS5.0.....*
  00000010: 02 00 00 00 00 F8 00 00-3F 00 FF 00 00 08 00 00  *........?.......*
  00000020: 00 20 03 00 01 03 00 00-00 00 00 00 02 00 00 00  *. ..............*
  00000030: 01 00 06 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000040: 80 01 29 7B 6E 7B 78 4E-4F 20 4E 41 4D 45 20 20  *..){n{xNO NAME  *
  00000050: 20 20 46 41 54 33 32 20-20 20 33 C9 8E D1 BC F4  *  FAT32   3.....*
  00000060: 7B 8E C1 8E D9 BD 00 7C-88 56 40 88 4E 02 8A 56  *{......|.V@.N..V*
  00000070: 40 B4 41 BB AA 55 CD 13-72 10 81 FB 55 AA 75 0A  *@.A..U..r...U.u.*
  00000080: F6 C1 01 74 05 FE 46 02-EB 2D 8A 56 40 B4 08 CD  *...t..F..-.V@...*
  00000090: 13 73 05 B9 FF FF 8A F1-66 0F B6 C6 40 66 0F B6  *.s......f...@f..*
  000000A0: D1 80 E2 3F F7 E2 86 CD-C0 ED 06 41 66 0F B7 C9  *...?.......Af...*
  000000B0: 66 F7 E1 66 89 46 F8 83-7E 16 00 75 39 83 7E 2A  *f..f.F..~..u9.~**
  000000C0: 00 77 33 66 8B 46 1C 66-83 C0 0C BB 00 80 B9 01  *.w3f.F.f........*
  000000D0: 00 E8 2C 00 E9 A8 03 A1-F8 7D 80 C4 7C 8B F0 AC  *..,......}..|...*
  000000E0: 84 C0 74 17 3C FF 74 09-B4 0E BB 07 00 CD 10 EB  *..t.<.t.........*
  000000F0: EE A1 FA 7D EB E4 A1 7D-80 EB DF 98 CD 16 CD 19  *...}...}........*
  00000100: 66 60 80 7E 02 00 0F 84-20 00 66 6A 00 66 50 06  *f`.~.... .fj.fP.*
  00000110: 53 66 68 10 00 01 00 B4-42 8A 56 40 8B F4 CD 13  *Sfh.....B.V@....*
  00000120: 66 58 66 58 66 58 66 58-EB 33 66 3B 46 F8 72 03  *fXfXfXfX.3f;F.r.*
  00000130: F9 EB 2A 66 33 D2 66 0F-B7 4E 18 66 F7 F1 FE C2  *..*f3.f..N.f....*
  00000140: 8A CA 66 8B D0 66 C1 EA-10 F7 76 1A 86 D6 8A 56  *..f..f....v....V*
  00000150: 40 8A E8 C0 E4 06 0A CC-B8 01 02 CD 13 66 61 0F  *@............fa.*
  00000160: 82 74 FF 81 C3 00 02 66-40 49 75 94 C3 42 4F 4F  *.t.....f@Iu..BOO*
  00000170: 54 4D 47 52 20 20 20 20-00 00 00 00 00 00 00 00  *TMGR    ........*
  00000180: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000190: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001A0: 00 00 00 00 00 00 00 00-00 00 00 00 0D 0A 44 69  *..............Di*
  000001B0: 73 6B 20 65 72 72 6F 72-FF 0D 0A 50 72 65 73 73  *sk error...Press*
  000001C0: 20 61 6E 79 20 6B 65 79-20 74 6F 20 72 65 73 74  * any key to rest*
  000001D0: 61 72 74 0D 0A 00 00 00-00 00 00 00 00 00 00 00  *art.............*
  000001E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001F0: 00 00 00 00 00 00 00 00-AC 01 B9 01 00 00 55 AA  *..............U.*
FSOpen: Open '\' Success

[NDB]
dqs 0`EF1A78B0 l30/8
00000000`ef1a78b0  00000000`00010000
00000000`ef1a78b8  00000000`ef1a7908
00000000`ef1a78c0  00000000`ea968088 PartitionDxe!PartitionReset [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 603]
00000000`ef1a78c8  00000000`ea9680f8 PartitionDxe!PartitionReadBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 679]
00000000`ef1a78d0  00000000`ea9681f0 PartitionDxe!PartitionWriteBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 699]
00000000`ef1a78d8  00000000`ea9682e8 PartitionDxe!PartitionFlushBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 751]

FS1:\> dblk blk5
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCSendCommand will exit
SdhciSoftReset with mask 0x6000000
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCReadBlockData will exit
SdhciSoftReset with mask 0x6000000
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCSendCommand will exit
SdhciSoftReset with mask 0x6000000
LBA 0000000000000000 Size 00000200 bytes BlkIo EF1A1BB0
  00000000: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000010: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000020: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000030: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000040: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000050: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000060: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000070: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000080: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000090: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000A0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000B0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000C0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000D0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000000F0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000100: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000110: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000120: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000130: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000140: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000150: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000160: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000170: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000180: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  00000190: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001A0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001B0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001C0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001D0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001F0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
FSOpen: Open '\' Success

[NDB]
dqs 0`EF1A1BB0 l30/8
00000000`ef1a1bb0  00000000`00010000
00000000`ef1a1bb8  00000000`ef1a1c08
00000000`ef1a1bc0  00000000`ea968088 PartitionDxe!PartitionReset [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 603]
00000000`ef1a1bc8  00000000`ea9680f8 PartitionDxe!PartitionReadBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 679]
00000000`ef1a1bd0  00000000`ea9681f0 PartitionDxe!PartitionWriteBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 699]
00000000`ef1a1bd8  00000000`ea9682e8 PartitionDxe!PartitionFlushBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 751]

FS1:\> dblk blk6
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCSendCommand will exit
SdhciSoftReset with mask 0x6000000
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCReadBlockData will exit
SdhciSoftReset with mask 0x6000000
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCSendCommand will exit
SdhciSoftReset with mask 0x6000000
LBA 0000000000000000 Size 00000200 bytes BlkIo EF1A11B0
  00000000: EB 52 90 4E 54 46 53 20-20 20 20 00 02 08 00 00  *.R.NTFS    .....*
  00000010: 00 00 00 00 00 F8 00 00-3F 00 FF 00 00 A8 03 00  *........?.......*
  00000020: 00 00 00 00 80 00 80 00-FF 2F 54 0E 00 00 00 00  *........./T.....*
  00000030: 00 00 0C 00 00 00 00 00-02 00 00 00 00 00 00 00  *................*
  00000040: F6 00 00 00 01 00 00 00-2B 05 7D 42 13 7D 42 0A  *........+.}B.}B.*
  00000050: 00 00 00 00 FA 33 C0 8E-D0 BC 00 7C FB 68 C0 07  *.....3.....|.h..*
  00000060: 1F 1E 68 66 00 CB 88 16-0E 00 66 81 3E 03 00 4E  *..hf......f.>..N*
  00000070: 54 46 53 75 15 B4 41 BB-AA 55 CD 13 72 0C 81 FB  *TFSu..A..U..r...*
  00000080: 55 AA 75 06 F7 C1 01 00-75 03 E9 DD 00 1E 83 EC  *U.u.....u.......*
  00000090: 18 68 1A 00 B4 48 8A 16-0E 00 8B F4 16 1F CD 13  *.h...H..........*
  000000A0: 9F 83 C4 18 9E 58 1F 72-E1 3B 06 0B 00 75 DB A3  *.....X.r.;...u..*
  000000B0: 0F 00 C1 2E 0F 00 04 1E-5A 33 DB B9 00 20 2B C8  *........Z3... +.*
  000000C0: 66 FF 06 11 00 03 16 0F-00 8E C2 FF 06 16 00 E8  *f...............*
  000000D0: 4B 00 2B C8 77 EF B8 00-BB CD 1A 66 23 C0 75 2D  *K.+.w......f#.u-*
  000000E0: 66 81 FB 54 43 50 41 75-24 81 F9 02 01 72 1E 16  *f..TCPAu$....r..*
  000000F0: 68 07 BB 16 68 52 11 16-68 09 00 66 53 66 53 66  *h...hR..h..fSfSf*
  00000100: 55 16 16 16 68 B8 01 66-61 0E 07 CD 1A 33 C0 BF  *U...h..fa....3..*
  00000110: 0A 13 B9 F6 0C FC F3 AA-E9 FE 01 90 90 66 60 1E  *.............f`.*
  00000120: 06 66 A1 11 00 66 03 06-1C 00 1E 66 68 00 00 00  *.f...f.....fh...*
  00000130: 00 66 50 06 53 68 01 00-68 10 00 B4 42 8A 16 0E  *.fP.Sh..h...B...*
  00000140: 00 16 1F 8B F4 CD 13 66-59 5B 5A 66 59 66 59 1F  *.......fY[ZfYfY.*
  00000150: 0F 82 16 00 66 FF 06 11-00 03 16 0F 00 8E C2 FF  *....f...........*
  00000160: 0E 16 00 75 BC 07 1F 66-61 C3 A1 F6 01 E8 09 00  *...u...fa.......*
  00000170: A1 FA 01 E8 03 00 F4 EB-FD 8B F0 AC 3C 00 74 09  *............<.t.*
  00000180: B4 0E BB 07 00 CD 10 EB-F2 C3 0D 0A 41 20 64 69  *............A di*
  00000190: 73 6B 20 72 65 61 64 20-65 72 72 6F 72 20 6F 63  *sk read error oc*
  000001A0: 63 75 72 72 65 64 00 0D-0A 42 4F 4F 54 4D 47 52  *curred...BOOTMGR*
  000001B0: 20 69 73 20 63 6F 6D 70-72 65 73 73 65 64 00 0D  * is compressed..*
  000001C0: 0A 50 72 65 73 73 20 43-74 72 6C 2B 41 6C 74 2B  *.Press Ctrl+Alt+*
  000001D0: 44 65 6C 20 74 6F 20 72-65 73 74 61 72 74 0D 0A  *Del to restart..*
  000001E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001F0: 00 00 00 00 00 00 8A 01-A7 01 BF 01 00 00 55 AA  *..............U.*
FSOpen: Open '\' Success

[NDB]
dqs 0`EF1A11B0 l30/8
00000000`ef1a11b0  00000000`00010000
00000000`ef1a11b8  00000000`ef1a1208
00000000`ef1a11c0  00000000`ea968088 PartitionDxe!PartitionReset [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 603]
00000000`ef1a11c8  00000000`ea9680f8 PartitionDxe!PartitionReadBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 679]
00000000`ef1a11d0  00000000`ea9681f0 PartitionDxe!PartitionWriteBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 699]
00000000`ef1a11d8  00000000`ea9682e8 PartitionDxe!PartitionFlushBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 751]

FS1:\> dblk blk7
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCSendCommand will exit
SdhciSoftReset with mask 0x6000000
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCReadBlockData will exit
SdhciSoftReset with mask 0x6000000
GDDBG MMCSendCommand without IgnoreCommand
GDDBG MMCSendCommand will exit
SdhciSoftReset with mask 0x6000000
LBA 0000000000000000 Size 00000200 bytes BlkIo EF1A0030
  00000000: EB 52 90 4E 54 46 53 20-20 20 20 00 02 08 00 00  *.R.NTFS    .....*
  00000010: 00 00 00 00 00 F8 00 00-3F 00 FF 00 00 D8 57 0E  *........?.....W.*
  00000020: 00 00 00 00 80 00 80 00-FF 9F 0F 00 00 00 00 00  *................*
  00000030: AA A6 00 00 00 00 00 00-02 00 00 00 00 00 00 00  *................*
  00000040: F6 00 00 00 01 00 00 00-FE C4 7D 08 00 7E 08 30  *..........}..~.0*
  00000050: 00 00 00 00 FA 33 C0 8E-D0 BC 00 7C FB 68 C0 07  *.....3.....|.h..*
  00000060: 1F 1E 68 66 00 CB 88 16-0E 00 66 81 3E 03 00 4E  *..hf......f.>..N*
  00000070: 54 46 53 75 15 B4 41 BB-AA 55 CD 13 72 0C 81 FB  *TFSu..A..U..r...*
  00000080: 55 AA 75 06 F7 C1 01 00-75 03 E9 DD 00 1E 83 EC  *U.u.....u.......*
  00000090: 18 68 1A 00 B4 48 8A 16-0E 00 8B F4 16 1F CD 13  *.h...H..........*
  000000A0: 9F 83 C4 18 9E 58 1F 72-E1 3B 06 0B 00 75 DB A3  *.....X.r.;...u..*
  000000B0: 0F 00 C1 2E 0F 00 04 1E-5A 33 DB B9 00 20 2B C8  *........Z3... +.*
  000000C0: 66 FF 06 11 00 03 16 0F-00 8E C2 FF 06 16 00 E8  *f...............*
  000000D0: 4B 00 2B C8 77 EF B8 00-BB CD 1A 66 23 C0 75 2D  *K.+.w......f#.u-*
  000000E0: 66 81 FB 54 43 50 41 75-24 81 F9 02 01 72 1E 16  *f..TCPAu$....r..*
  000000F0: 68 07 BB 16 68 52 11 16-68 09 00 66 53 66 53 66  *h...hR..h..fSfSf*
  00000100: 55 16 16 16 68 B8 01 66-61 0E 07 CD 1A 33 C0 BF  *U...h..fa....3..*
  00000110: 0A 13 B9 F6 0C FC F3 AA-E9 FE 01 90 90 66 60 1E  *.............f`.*
  00000120: 06 66 A1 11 00 66 03 06-1C 00 1E 66 68 00 00 00  *.f...f.....fh...*
  00000130: 00 66 50 06 53 68 01 00-68 10 00 B4 42 8A 16 0E  *.fP.Sh..h...B...*
  00000140: 00 16 1F 8B F4 CD 13 66-59 5B 5A 66 59 66 59 1F  *.......fY[ZfYfY.*
  00000150: 0F 82 16 00 66 FF 06 11-00 03 16 0F 00 8E C2 FF  *....f...........*
  00000160: 0E 16 00 75 BC 07 1F 66-61 C3 A1 F6 01 E8 09 00  *...u...fa.......*
  00000170: A1 FA 01 E8 03 00 F4 EB-FD 8B F0 AC 3C 00 74 09  *............<.t.*
  00000180: B4 0E BB 07 00 CD 10 EB-F2 C3 0D 0A 41 20 64 69  *............A di*
  00000190: 73 6B 20 72 65 61 64 20-65 72 72 6F 72 20 6F 63  *sk read error oc*
  000001A0: 63 75 72 72 65 64 00 0D-0A 42 4F 4F 54 4D 47 52  *curred...BOOTMGR*
  000001B0: 20 69 73 20 63 6F 6D 70-72 65 73 73 65 64 00 0D  * is compressed..*
  000001C0: 0A 50 72 65 73 73 20 43-74 72 6C 2B 41 6C 74 2B  *.Press Ctrl+Alt+*
  000001D0: 44 65 6C 20 74 6F 20 72-65 73 74 61 72 74 0D 0A  *Del to restart..*
  000001E0: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  *................*
  000001F0: 00 00 00 00 00 00 8A 01-A7 01 BF 01 00 00 55 AA  *..............U.*
FSOpen: Open '\' Success

[NDB]
dqs 0`EF1A0030 l30/8
00000000`ef1a0030  00000000`00010000
00000000`ef1a0038  00000000`ef1a0088
00000000`ef1a0040  00000000`ea968088 PartitionDxe!PartitionReset [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 603]
00000000`ef1a0048  00000000`ea9680f8 PartitionDxe!PartitionReadBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 679]
00000000`ef1a0050  00000000`ea9681f0 PartitionDxe!PartitionWriteBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 699]
00000000`ef1a0058  00000000`ea9682e8 PartitionDxe!PartitionFlushBlocks [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 751]


dt -b EFI_BLOCK_IO_MEDIA 00000000`eeb97058
   +0x000 MediaId          : 0
   +0x004 RemovableMedia   : 0 ''
   +0x005 MediaPresent     : 0x1 ''
   +0x006 LogicalPartition : 0 ''
   +0x007 ReadOnly         : 0 ''
   +0x008 WriteCaching     : 0 ''
   +0x00c BlockSize        : 0x200
   +0x010 IoAlign          : 8
   +0x018 LastBlock        : 0x3b9e12af
   +0x020 LowestAlignedLba : 1
   +0x028 LogicalBlocksPerPhysicalBlock : 1
   +0x02c OptimalTransferLengthGranularity : 0
dt -b EFI_BLOCK_IO_MEDIA 00000000`eeb9a588
   +0x000 MediaId          : 0
   +0x004 RemovableMedia   : 0 ''
   +0x005 MediaPresent     : 0x1 ''
   +0x006 LogicalPartition : 0x1 ''
   +0x007 ReadOnly         : 0 ''
   +0x008 WriteCaching     : 0 ''
   +0x00c BlockSize        : 0x200
   +0x010 IoAlign          : 1
   +0x018 LastBlock        : 0x1fffff
   +0x020 LowestAlignedLba : 0
   +0x028 LogicalBlocksPerPhysicalBlock : 0
   +0x02c OptimalTransferLengthGranularity : 0
dt -b EFI_BLOCK_IO_MEDIA 00000000`eeb99088
   +0x000 MediaId          : 0
   +0x004 RemovableMedia   : 0 ''
   +0x005 MediaPresent     : 0x1 ''
   +0x006 LogicalPartition : 0x1 ''
   +0x007 ReadOnly         : 0 ''
   +0x008 WriteCaching     : 0 ''
   +0x00c BlockSize        : 0x200
   +0x010 IoAlign          : 1
   +0x018 LastBlock        : 0x389ab018
   +0x020 LowestAlignedLba : 0
   +0x028 LogicalBlocksPerPhysicalBlock : 0
   +0x02c OptimalTransferLengthGranularity : 0
dt -b EFI_BLOCK_IO_MEDIA 00000000`ef19b618
   +0x000 MediaId          : 0
   +0x004 RemovableMedia   : 0x1 ''
   +0x005 MediaPresent     : 0x1 ''
   +0x006 LogicalPartition : 0 ''
   +0x007 ReadOnly         : 0 ''
   +0x008 WriteCaching     : 0 ''
   +0x00c BlockSize        : 0x200
   +0x010 IoAlign          : 4
   +0x018 LastBlock        : 0xe677fff
   +0x020 LowestAlignedLba : 0
   +0x028 LogicalBlocksPerPhysicalBlock : 1
   +0x02c OptimalTransferLengthGranularity : 0
dt -b EFI_BLOCK_IO_MEDIA 00000000`ef1a7908
   +0x000 MediaId          : 0
   +0x004 RemovableMedia   : 0x1 ''
   +0x005 MediaPresent     : 0x1 ''
   +0x006 LogicalPartition : 0x1 ''
   +0x007 ReadOnly         : 0 ''
   +0x008 WriteCaching     : 0 ''
   +0x00c BlockSize        : 0x200
   +0x010 IoAlign          : 1
   +0x018 LastBlock        : 0x31fff
   +0x020 LowestAlignedLba : 0
   +0x028 LogicalBlocksPerPhysicalBlock : 1
   +0x02c OptimalTransferLengthGranularity : 0
dt -b EFI_BLOCK_IO_MEDIA 00000000`ef1a1c08
   +0x000 MediaId          : 0
   +0x004 RemovableMedia   : 0x1 ''
   +0x005 MediaPresent     : 0x1 ''
   +0x006 LogicalPartition : 0x1 ''
   +0x007 ReadOnly         : 0 ''
   +0x008 WriteCaching     : 0 ''
   +0x00c BlockSize        : 0x200
   +0x010 IoAlign          : 1
   +0x018 LastBlock        : 0x7fff
   +0x020 LowestAlignedLba : 0
   +0x028 LogicalBlocksPerPhysicalBlock : 1
   +0x02c OptimalTransferLengthGranularity : 0
dt -b EFI_BLOCK_IO_MEDIA 00000000`ef1a1208
   +0x000 MediaId          : 0
   +0x004 RemovableMedia   : 0x1 ''
   +0x005 MediaPresent     : 0x1 ''
   +0x006 LogicalPartition : 0x1 ''
   +0x007 ReadOnly         : 0 ''
   +0x008 WriteCaching     : 0 ''
   +0x00c BlockSize        : 0x200
   +0x010 IoAlign          : 1
   +0x018 LastBlock        : 0xe542fff
   +0x020 LowestAlignedLba : 0
   +0x028 LogicalBlocksPerPhysicalBlock : 1
   +0x02c OptimalTransferLengthGranularity : 0
dt -b EFI_BLOCK_IO_MEDIA 00000000`ef1a0088
   +0x000 MediaId          : 0
   +0x004 RemovableMedia   : 0x1 ''
   +0x005 MediaPresent     : 0x1 ''
   +0x006 LogicalPartition : 0x1 ''
   +0x007 ReadOnly         : 0 ''
   +0x008 WriteCaching     : 0 ''
   +0x00c BlockSize        : 0x200
   +0x010 IoAlign          : 1
   +0x018 LastBlock        : 0xf9fff
   +0x020 LowestAlignedLba : 0
   +0x028 LogicalBlocksPerPhysicalBlock : 1
   +0x02c OptimalTransferLengthGranularity : 0
kd>

美的代码:


UEFI架构设计得真漂亮,NDB断点跟踪执行发现驱动其中有如下调用关系:
Dblk blk4: -> PartitionDxe!PartitionReadBlocks -> DiskIoDxe!DiskIo2ReadWriteDisk -> MmcDxe!MmcReadBlocks
层层翻译得自然而然,下面NDB下断点后得到的调用栈有被简化,有些因为是函数编译时其实用了inline,也有部分可能是NDB对栈解释的问题。

dblk blk0的调用栈:

dblk blk3:

00000000`3fffed58 00000000`e9cadf74 MmcDxe!MmcIoBlocks
00000000`3fffee58 00000000`eeb38a18 Shell!ShellCommandRunDblk+0x4f4

dblk blk1:

00000000`3fffec00 00000000`ea717068 NvmExpressDxe!ReadSectors
00000000`3fffec60 00000000`ea717158 NvmExpressDxe!NvmeRead+0x170
00000000`3fffeca8 00000000`ea973e10 NvmExpressDxe!NvmeBlockIoReadBlocks+0xe0
00000000`3fffeda8 00000000`00000000 DiskIoDxe!DiskIo2ReadWriteDisk+0x340 [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 945]

dblk blk4:

00000000`3fffeca8 00000000`ea973e10 MmcDxe!MmcIoBlocks
00000000`3fffeda8 00000000`00000000 DiskIoDxe!DiskIo2ReadWriteDisk+0x340 [/home/geduer/UEFI/edk2-yourland2024/edk2/MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c @ 945]

张老师曾在课上介绍他的学习方法之一:下个好的断点,断下来观察一下调用栈,看下入参或变量,阅读下源代码,心中就清楚了,这样读活的代码比阅读静态代码或加DebugPrint高效很多。
个人感受也是确实如此。

停下来观察用到的断点:

bl
 0 e 00000000`ea7094f0 e 1 0001 (0001) MmcDxe!MmcIoBlocks 
 1 e 00000000`ea715734 e 1 0001 (0001) NvmExpressDxe!ReadSectors 
 2 e 00000000`ea974110 e 1 0001 (0001) DiskIoDxe!DiskIoReadDisk 
 3 e 00000000`ea9680f8 e 1 0001 (0001) PartitionDxe!PartitionReadBlocks 
 4 e 00000000`ea709b4c e 1 0001 (0001) MmcDxe!MmcReadBlocks 
 5 e 00000000`e9cada80 e 1 0001 (0001) Shell!ShellCommandRunDblk 

从MmcDxe!MmcIoBlocks 再往下深一层,看MmcHost到底是哪个,依然是用NDB下断点:

从list文件搜索到文件偏移位置:

自建Excel查找,从文件偏移算出断点地址:

断点命中,停下来观察:

MmcDxe!MmcIoBlocks+350:
ea709840 f9401723 ldr    x3, [x25, #0x28]
u .
Read system version block failed 1
Read system version block failed 1
Opcode 0x38401401, DSCR.ERR=1, DSCR.EL=2
Opcode 0x38401401, DSCR.ERR=1, DSCR.EL=2
MmcDxe!MmcIoBlocks+350:
ea709840 f9401723 ldr    x3, [x25, #0x28]
ea709844 528001a1 mov    w1, #0xd
ea709848 2a1303e2 mov    w2, w19
ea70984c aa1903e0 mov    x0, x25
ea709850 72a00021 movk    w1, #1, lsl #16
ea709854 d63f0060 blr    x3
ea709858 b7fff1e0 tbnz    x0, #0x3f, #0xea709694
ea70985c f9401b23 ldr    x3, [x25, #0x30]
r $t0=x25
dt -b EFI_MMC_HOST_PROTOCOL $t0
   +0x000 Revision         : 0x10002
   +0x008 IsCardPresent    : (null) 
   +0x010 IsReadOnly       : (null) 
   +0x018 BuildDevicePath  : (null) 
   +0x020 NotifyState      : (null) 
   +0x028 SendCommand      : (null) 
   +0x030 ReceiveResponse  : (null) 
   +0x038 ReadBlockData    : (null) 
   +0x040 WriteBlockData   : (null) 
   +0x048 SetIos           : (null) 
   +0x050 IsMultiBlock     : (null) 
dqs $t0 l58/8
00000000`ea705020  00000000`00010002
00000000`ea705028  00000000`ea700018 SdhciHostDxe!MMCIsCardPresent
00000000`ea705030  00000000`ea701054 SdhciHostDxe!MMCIsReadOnly
00000000`ea705038  00000000`ea70316c SdhciHostDxe!MMCBuildDevicePath
00000000`ea705040  00000000`ea70266c SdhciHostDxe!MMCNotifyState
00000000`ea705048  00000000`ea701798 SdhciHostDxe!MMCSendCommand
00000000`ea705050  00000000`ea7015e4 SdhciHostDxe!MMCReceiveResponse
00000000`ea705058  00000000`ea702c18 SdhciHostDxe!MMCReadBlockData
00000000`ea705060  00000000`ea702ee0 SdhciHostDxe!MMCWriteBlockData
00000000`ea705068  00000000`ea702534 SdhciHostDxe!MMCSetIos
00000000`ea705070  00000000`ea700020 SdhciHostDxe!MMCIsMultiBlock
bl
 0 e 00000000`ea7094f0 e 1 0001 (0001) MmcDxe!MmcIoBlocks 
 1 e 00000000`ea709840 e 1 0001 (0001) MmcDxe!MmcIoBlocks+350 

r
 x0=0000000000000000  x1=00000000ef19b618  x2=000000000e678000  x3=0000000000000000
 x4=0000000000000200  x5=00000000eeb29118  x6=000000003ec2c950  x7=ffffffffffffffff
 x8=0000000000000000  x9=0000000000000062 x10=0064006300320069 x11=0000000000000020
x12=0000000000000000 x13=ffffffff00000000 x14=006b0072006f0077 x15=00630061003b0031
x16=00000000efec3414 x17=0000000000000024 x18=0000000000000000 x19=0000000000010000
x20=0000000000000013 x21=00000000ef19fc48 x22=0000000000000200 x23=0000000000000000
x24=0000000000000001 x25=00000000ea705020 x26=00000000e9d68000 x27=00000000eeb29118
x28=00000000ef19fc18  fp=000000003fffed00  lr=00000000ea709828  sp=000000003fffeca0
 pc=00000000ea709840 pstate=0000000000000209 - - - - - - - - - D - - - EL1
MmcDxe!MmcIoBlocks+350:
ea709840 f9401723 ldr    x3, [x25, #0x28]

MmcHost->SendCommand 具体实现在 SdhciHostDxe!MMCSendCommand

如果光读源代码,要弄清楚具体此问题,目前已知靠搜索和猜,比较困难。或有高手可告知方法。

作者:朱博渊  创建时间:2024-05-07 20:25
最后编辑:朱博渊  更新时间:2024-05-18 22:48