MM命令解析

MM命令解析

概述

uefi shell 下显示或修改MEM/MMIO/IO/PCI/PCIE地址空间。

使用方法

mm address [value] [-w 1|2|4|8] [-MEM | -PMEM | -MMIO | -IO | -PCI | -PCIE] [-n]

命令选项

address

十六进制格式的起始地址。

Value 要以十六进制格式写入的值。如果没有指定,则显示当前值。

-MEM 内存地址类型。

-PMEM 持久内存地址类型。

-MMIO 内存映射的IO地址类型。

-IO 输入输出地址类型

-PCI PCI配置空间。地址格式为ssssbbddffrr,其中ssss =段,bb =总线,dd =设备,ff =函数,rr =寄存器。

-PCIE PCI Express配置空间。地址格式为ssssbbddffrrr,其中ssss =段,bb =总线,dd =设备,ff =函数,rrr =寄存器。

- w 访问宽度,以字节为单位。1 =1字节,2 = 2字节,4 = 4字节,8 = 8字节。如果没有指定,则假设1。

- n 非交互式模式。

描述

该命令允许用户显示或修改I/O寄存器、内存内容或PCI配置空间。用户可以使用address参数和-w选项指定开始地址和希望执行的访问大小。地址应该用十六进制格式输入。

-MEM访问系统内存

-PMEM通过持久内存访问(仅在修改持久内存时需要)

-MMIO访问设备内存,

-IO访问设备I/O端口,

-PCI访问PCI配置空间

-PCIE访问PCIE配置空间

如果没有指定-MEM、-PMEM、-MMIO、-IO、-PCI和-PCIE,则假设-MEM。使用-PMEM表示正在修改持久内存;因此固件可以执行正确的操作来刷新或存储新数据到硬件。

如果指定了值(应该以十六进制格式输入),该命令将把该值写入指定的地址。否则,当执行此命令时,将显示address的当前内容。如果指定值,则假设-n。

如果没有指定-n,命令将以交互模式运行,用户可以通过输入十六进制值来修改内容。当用户按下“ENTER”键时,将显示下一个地址。这将一直持续到用户输入“q”。

例子

显示或修改内存:

Address 0x1b07288, default width=1 byte:

fs0:\> mm 1b07288

MEM 0x0000000001B07288 : 0x6D >

MEM 0x0000000001B07289 : 0x6D >

MEM 0x0000000001B0728A : 0x61 > 80

MEM 0x0000000001B0728B : 0x70 > q

fs0:\> mm 1b07288

MEM 0x0000000001B07288 : 0x6D >

MEM 0x0000000001B07289 : 0x6D >

MEM 0x0000000001B0728A : 0x80 > *Modified

MEM 0x0000000001B0728B : 0x70 > q

修改内存:地址0x1b07288,宽度= 2字节:

Shell> mm 1b07288 -w 2

MEM 0x0000000001B07288 : 0x6D6D >

MEM 0x0000000001B0728A : 0x7061 > 55aa

MEM 0x0000000001B0728C : 0x358C > q

Shell> mm 1b07288 -w 2

MEM 0x0000000001B07288 : 0x6D6D >

MEM 0x0000000001B0728A : 0x55AA > *Modified

MEM 0x0000000001B0728C : 0x358C > q

要显示IO空间:地址80h,宽度= 4字节:

Shell> mm 80 -w 4 -IO

IO 0x0000000000000080 : 0x000000FE >

IO 0x0000000000000084 : 0x00FF5E6D > q

使用非交互模式修改IO空间:

Shell> mm 80 52 -w 1 -IO

Shell> mm 80 -w 1 -IO

IO 0x0000000000000080 : 0x52 > FE *Modified

IO 0x0000000000000081 : 0xFF >

IO 0x0000000000000082 : 0x00 >

IO 0x0000000000000083 : 0x00 >

IO 0x0000000000000084 : 0x6D >

IO 0x0000000000000085 : 0x5E >

IO 0x0000000000000086 : 0xFF >

IO 0x0000000000000087 : 0x00 > q

要显示PCI配置空间,ssss=0000, bb=00, dd=00, ff=00, rr=00:

Shell> mm 000000000000 -PCI

PCI 0x0000000000000000 : 0x86 >

PCI 0x0000000000000001 : 0x80 >

PCI 0x0000000000000002 : 0x30 >

PCI 0x0000000000000003 : 0x11 >

PCI 0x0000000000000004 : 0x06 >

PCI 0x0000000000000005 : 0x00 > q

这些内容也可以通过“PCI 00 00 00”显示。

要显示PCIE配置空间,ssss=0000, bb=06, dd=00, ff=00, rrr=000:

Shell> mm 0000060000000 -PCIE

PCIE 0x0000000060000000 : 0xAB >

PCIE 0x0000000060000001 : 0x11 >

PCIE 0x0000000060000002 : 0x61 >

PCIE 0x0000000060000003 : 0x43 >

PCIE 0x0000000060000004 : 0x00 > q

修改持久内存,并向固件提示需要刷新/存储新数据到HW:

Shell> mm 1b07288 80 -PMEM