技术标签: 嵌入式linux
内存操作命令就是用于直接对 DRAM 进行读写操作的,常用的内存操作命令有 md、nm、mm、mw、cp 和 cmp。
md 命令用于显示内存值,格式如下:
md[.b, .w, .l] address [# of objects]
命令中的[.b .w .l]对应 byte、word 和 long,也就是分别以 1 个字节、2 个字节、4 个字节来显示内存值。
比如你设置要查看的内存长度为20(十六进制为 0x14),如果显示格式为.b 的话那就表示 20 个字节;如果显示格式为.w 的话就表示 20 个 word,也就是 202=40 个字节;如果显示格式为.l 的话就表示 20 个 long,也就是204=80 个字节。另外要注意:
uboot 命令中的数字都是十六进制的!不是十进制的!
比如你想查看以 0X80000000 开始的 20 个字节的内存值,显示格式为.b 的话,应该使用如下所示命令:
md.b 80000000 14
而不是:
md.b 80000000 20
上面说了,uboot 命令里面的数字都是十六进制的,所以可以不用写“0x”前缀,十进制的 20 其十六进制为 0x14,所以命令 md 后面的个数应该是 14,如果写成 20 的话就表示查看32(十六进制为 0x20)个字节的数据。分析下面三个命令的区别:
md.b 80000000 10
md.w 80000000 10
md.l 80000000 10
上面这三个命令都是查看以 0X80000000 为起始地址的内存数据,第一个命令以.b 格式显示,长度为 0x10,也就是 16 个字节;第二个命令以.w 格式显示,长度为 0x10,也就是 162=32个字节;最后一个命令以.l 格式显示,长度也是 0x10,也就是 164=64 个字节。这三个命令的执行结果如下所示:
=> md.b 80000000 10
80000000: 78 56 34 12 05 05 05 05 05 05 05 05 0a 0a 0a 0a xV4.............
=> md.w 80000000 10
80000000: 5678 1234 0505 0505 0505 0505 0a0a 0a0a xV4.............
80000010: 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a 0a0a ................
=> md.l 80000000 10
80000000: 12345678 05050505 05050505 0a0a0a0a xV4.............
80000010: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000020: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000030: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
nm 命令用于修改指定地址的内存值,命令格式如下:
nm [.b, .w, .l] address
nm 命令同样可以以.b、.w 和.l 来指定操作格式,比如现在以.l 格式修改 0x80000000 地址的数据为 0x12345678。输入命令:
nm.l 80000000
=> nm.l 80000000
80000000: 05050505 ?
=> md.l 80000000 10
80000000: 05050505 05050505 05050505 0a0a0a0a ................
80000010: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000020: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000030: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
=> nm.l 80000000
80000000: 05050505 ? 12345678
80000000: 12345678 ? q
=> md.l 80000000 1
80000000: 12345678 xV4.
在上面中,80000000 表示现在要修改的内存地址,ffffff00 表示地址 0x80000000 现在的数据,?后面就可以输入要修改后的数据 0x12345678,输入完成以后按下回车,然后再输入‘q’即可退出。
mm 命令也是修改指定地址内存值的,使用 mm 修改内存值的时候地址会自增,而使用命令 nm 的话地址不会自增。比如以.l 格式修改从地址 0x80000000 开始的连续 3 个内存块(3*4=12个字节)的数据为 0X05050505,操作如下所示:
=> md.l 80000000
80000000: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000010: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000020: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000030: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
=> mm.l 80000000
80000000: 0a0a0a0a ? 05050505
80000004: 0a0a0a0a ? 05050505
80000008: 0a0a0a0a ? 05050505
8000000c: 0a0a0a0a ? q
从上面可以看出,修改了地址 0X80000000、0X80000004 和 0X8000000C 的内容为0x05050505。使用命令 md 查看修改后的值,结果如下所示:
=> md.l 80000000 10
80000000: 05050505 05050505 05050505 0a0a0a0a ................
80000010: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000020: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000030: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
命令 mw 用于使用一个指定的数据填充一段内存,命令格式如下:
mw [.b, .w, .l] address value [count]
mw 命令同样可以以.b、.w 和.l 来指定操作格式,address 表示要填充的内存起始地址,value为要填充的数据,count 是填充的长度。比如使用.l 格式将以 0X80000000 为起始地址的 0x10 个内存块(0x10 * 4=64 字节)填充为 0X0A0A0A0A,命令如下:
mw.l 80000000 0A0A0A0A 10
然后使用命令 md 来查看,如下所示:
=> md.l 80000000 10
80000000: e3530000 0a000017 e1a02005 e1a01004 ..S...... ......
80000010: e1a00006 e28dd00c e8bd40f0 e12fff13 .........@..../.
80000020: e59f305c e08f3003 e5933000 e3530000 \0...0...0....S.
80000030: 0a000009 e59f304c e08f3003 e59f0048 ....L0...0..H...
=> mw.l 80000000 0a0a0a0a 10
=> md.l 80000000 10
80000000: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000010: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000020: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
80000030: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................
可以看出内存数据修改成功。
cp 是数据拷贝命令,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把 Nor Flash 中的数据拷贝到 DRAM 中。命令格式如下:
cp [.b, .w, .l] source target count
cp 命令同样可以以.b、.w 和.l 来指定操作格式
我们使用.l 格式将 0x80000000 处的地址拷贝到 0X80000100 处,长度为 0x10 个内存块(0x10 * 4=64 个字节),命令如下所示:
cp.l 80000000 80000100 10
=> md.1 80000000 10
=> md.l 80000000 10
80000000: e3530000 0a000017 e1a02005 e1a01004 ..S...... ......
80000010: e1a00006 e28dd00c e8bd40f0 e12fff13 .........@..../.
80000020: e59f305c e08f3003 e5933000 e3530000 \0...0...0....S.
80000030: 0a000009 e59f304c e08f3003 e59f0048 ....L0...0..H...
=> md.l 80000100 10
80000100: e59d3014 e12fff33 e89d1004 e59d0008 .0..3./.........
80000110: e582c000 e59d100c e59d2010 e5804000 ......... ...@..
80000120: e1a00004 e5814000 e5c24000 e28ddf6e .....@...@..n...
80000130: e8bd8010 e59d401c e59d3000 e59d2004 .....@...0... ..
=> cp.l 80000000 80000100 10
=> md.l 80000100 10
80000100: e3530000 0a000017 e1a02005 e1a01004 ..S...... ......
80000110: e1a00006 e28dd00c e8bd40f0 e12fff13 .........@..../.
80000120: e59f305c e08f3003 e5933000 e3530000 \0...0...0....S.
80000130: 0a000009 e59f304c e08f3003 e59f0048 ....L0...0..H...
先使用 md.l 命令打印出地址 0x80000000 和 0x80000100 处的数据,然后使用命令cp.l将0x80000100处的数据拷贝到0x80000100处。最后使用命令md.l查看0x80000100处的数据有没有变化,检查拷贝是否成功。
cmp 是比较命令,用于比较两段内存的数据是否相等,命令格式如下:
cmp [.b, .w, .l] addr1 addr2 count
cmp 命令同样可以以.b、.w 和.l 来指定操作格式,
我们使用.l 格式来比较 0x80000000 和 0X80000100 这两个地址数据是否相等,比较长度为 0x10 个内存块(16 * 4=64 个字节),命令如下所示:
cmp.l 80000000 80000100 10
=> cmp.l 80000000 80000100 10
word at 0x80000000 (0xe3530000) != word at 0x80000100 (0xe59d3014)
Total of 0 word(s) were the same
从上面可以看出,0x80000000 处的数据和 0x80000100 处的数据就不一样。
公司mysql统一用latin1的编码,真是叫人苦不堪言。Django用默认UTF8访问MYSQL数据库。在操作数据库时,不管你怎么转码,最终写到数据库里的中文都是乱码。在网上找了很久,也没解决这个问题。 后来看了一个DJANGO的MYSQL操作的源码,发现了一些问题 先是/django/db/backends/mysql/base.py 文件的 257 到263行_django latin1
/** QQ群:223494678 函数:模拟post得到所有分页的页面信息 参数: string $EVENTARGUMENT string $VIEWSTATE string $EVENTVALIDATION string $EVENTTARGET 返回: stri
在android开发过程中关于EditText在setFocusable(false);后,当需要再次获得焦点输入时设置setFocusable(true);后还是无法获得焦点的问题: 解决办法: 对EditText设置后就可以了! et.setFocusable(true);et.setFocusableInTouchMode(true);et.requestFocus();et..._editableprotable 刷新列表怎么重新获取当前焦点
jre jvm jdk Java JVM,JDK和JRE (Java JVM, JDK and JRE)In this tutorial we will cover what Java Virtual Machine is, and what is JRE and JDK. 在本教程中,我们将介绍什么是Java虚拟机,什么是JRE和JDK。 Java virtual Machine(JVM..._jdk contains java 2 分 environment(jre) and other development tools like
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar_7-1 利用stl比较数据大小并排序分数 60全屏浏览题目切换布局作者 孙杰单位 青岛大
1、基本原理阵列信号处理及matlab实现——张小飞。P36:阵列的基本概念P41:均匀圆阵的方向矢量下面所示代码实现是基于四元麦克风阵列,课本代码是基于线阵的麦克风阵列clear allclose all[x1,fs]=audioread('D:\EEE.wav');[x2,fs]=audioread('D:\EEE.wav');[x3,fs]=audioread('D:\E..._均匀圆阵music算法
如何设置ubuntu 10.04,使局域网中的windows xp系统电脑可以共享ubuntu机器的文件?现在有局域网中的两台机器:一、Ubuntu +windows xp 双系统,Ubuntu 10.04(wubi安装)以自动挂载windows下分区的形式运行电脑。二、局域网中另外一台Windows xp或win 7系统电脑。也就是说机器二需要共享机器一Ubuntu系统下_ubuntu删除smb链接
div是什么?div是什么意思?div标签怎么用,相信很多小白在学习的时候都会有这样的问题,那么下面我们来总结一下HTML和CSS中div标签怎么用?【推荐学习:Html5教程】一:div是什么意思div就是样式表中的定位技术,div的全称就是division,有时候我们也习惯叫图层,在html中,div有很多属性,正式这些属性组成才会形成美观的板块。二:HTML和CSS中div标签怎么用1.使用..._php语法div是啥意思
生活环保小助手AI知识助手知识库人工智能泉舟创新中心【产品经理】#1、授课:福师大张思鹏sunnyact(泉舟时代)#2百度脑图http://naotu.baidu.com/file/229e3e63e37859b718bd318901e686b2?token=d3c75ce52ffa85b4#3、参考资料:产品经理/产品运营精华干货-泉舟时代智库分享http://www.fishc...
Seek the Name, Seek the FameTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 9706 Accepted: 4651DescriptionThe little cat is so famous, that many couples t
平台环境是:solaris操作系统 数据库是:oracle 10.2.0.4 故障现象:2015年10月份以来,一综合网管数据库频频报出ORA-31693、ORA-02354、ORA-02149错误,..._无法加载/卸载并且被跳过
前言互联网的飞速发展促进了很多新媒体的发展,不论是知名的大V,明星还是围观群众都可以通过手机在微博,朋友圈或者点评网站上发表状态,分享自己的所见所想,使得“人人都有了麦克风”。不论是热点新闻还是娱乐八卦,传播速度远超我们的想象。可以在短短数分钟内,有数万计转发,数百万的阅读。如此海量的信息可以得到爆炸式的传播,如何能够实时的把握民情并作出对应的处理对很多企业来说都是至关重要的。大数据时代,除了媒..._舆情系统技术架构图