学习目标:
uboot命令使用学习(2)
学习内容:
学习使用了正点原子的I.MX6ULL教程及开发平台。
使用uboot的内存操作命令,直接对DRAM进行读写操作。
1、md
2、nm
3、mm
4、mw
5、cp
6、cmp
学习时间:
2022-05-29
学习产出:
一、md显示内存值
”md“命令用于显示内存值,格式如下:
md[.b,.w,.l] address [#of objects]
命令中的[.b,.w,.l]对应byte,word,long,也就是分别以1字节、2字节、4字节来显示内存值。address就是要查看的内存起始地址,[#of object]表示要查看的内存数据长度。这个数据长度的单位不是字节,而是跟所选择的显示格式有关。比如设置的产看数据长度为20(0x14),如果显示的格式为.b,那就表示20字节;如果显示的格式为.w,表示20个word,即20x2=40字节;如果显示的格式为.l,表示20个long,即20x4=80字节。另外uboot中的数字都是十六进制的,不是十进制的!
比如查看以0x80800000开始的16个数据,
md.b 80800000 10 (查看16字节数据)
md.w 80800000 10(查看16x2=32字节数据)
md.l 80800000 10(查看16x4=64字节数据)
如图:
二、nm命令修改内存值
nm名利给用于修改指定内存地址的值,命令格式如下:
nm[.b,.w,.l] address
nm命令同样可以用.b,.w,.l指定操作格式,比如现在以.l格式修改内存地址0x80000000的数据为12345678,在uboot命令行下输入:
nm.l 80000000
如图所示
80000000表示要修改的内存地址,ffffff7f表示内存地址80000000现在的值,?后面就可以输入要修改为的数据12345678,输入完毕后按下回车,在按下q推出即可。如图所示。
修改完后使用md命令查看是否修改成功
三、mm命令修改内存值
mm命令也是修改指定内存地址的值,使用mm命令修改内存地址的时候地址会自增。比如以.l格式修改从80000000内存地址开始的值,如图所示
四、mw命令
mw命令用于使用一个指定的数据填充一段内存,命令的内存格式如下:
mw[.b,.w,.l] address value [count]
mw命令同样可以以.b,.w,.l来指定操作格式,address表示要填充的内存起始地址,value为要填充的数据,count是填充的长度。比如使用.l格式将以80000000为起始地址的0x10个内存块(16x4=64字节)填充为0x12345678,然后使用md命令查看,如图所示。
五、cp命令
cp是数据拷贝命令,用于将DRAM中的数据从一段内存地址拷贝到另一段内存地址,或者把NorFlash中的数据拷贝到DRAM中。命令格式如下:
cp[.b,.w,.l] source target count
cp命令同样可以以.b,.w,.l来指定操作格式,source为源地址,target为目的地址,count为拷贝的长度。例如使用.l格式将80000000处的数据拷贝到地址80000100处,长度为0x10个内存块(416=64字节),如图所示。
先使用命令md查看80000000和80000100处的数据,然后使用命令cp.l将从80000000开始的16个内存块拷贝到80000100内粗地址处,最后使用命令md查看80000100内存地址的数据。
六、cmp命令
cmp是比较命令,用于比较两段内存的数据是否相等,命令格式如下:
cmp[.b,.w,.l] addr1 addr2 count
cmp命令同样可以以.b,.w,.l来指定操作格式,addr1为第一段内存首地址,addr2为第二段内存首地址,count为要比较的长度。例如使用.l格式来比较80000000和80000100这两个内存地址中的数据是否相等,比较的长度为0x10(416=64字节),如图所示。
两个内存地址中的数据相等。再来比较80000200和80000400为首地址的内存数据是否相等。如图所示。
可以看出以这两个内存地址为首地址中的内存数据并不相等。