概述
文章目录
- 一、U-Boot 内存 & flash操作指令
- 1、内存操作指令
- 1.1. md:读内存(memery display)
- 格式:
- 参数释义:
- 1.2. mw:写内存(memery write)
- 格式:
- 参数释义:
- 1.3. 示例(先读、再写、再读)
- md 0x42000000 8
- mw 0x42000000 0x12345678 4
- md 0x42000000 8
- 2、Nand Flash操作命令
- 2.1. nand info
- 2.2. nand device
- 2.3. nand bad
- 2.4. nand read(.oob) [addr] [off] [size]
- 2.5. nand dump[.oob] [addr] [size]
- 2.6. nand write [addr] [off] [size]
- 2.7. nand erase/clean [off] [size]
- 2.8. nand scrub.chip
- 二、Linux读写寄存器命令:devem
- 1、读寄存器:
- 2、写寄存器:
- 3、例子:
一、U-Boot 内存 & flash操作指令
1、内存操作指令
1.1. md:读内存(memery display)
格式:
md[.b .w .l] [addr] [count]
md 0x42000000 8
参数释义:
.b .w .l :分别是字节、字、长字(两个字),不加默认为字节
addr :要操作的内存地址
count :写入的个数,默认4个字节表示一个长度
1.2. mw:写内存(memery write)
格式:
mw[.b .w .l] [addr] [data] [count]
mw 0x42000000 0x12345678 4
参数释义:
data :要写入内存的数。
其余同上。
1.3. 示例(先读、再写、再读)
md 0x42000000 8
含义:显示内存地址0x42000000位置的数据,总长度为8个长度(每个长度默认四个字节):
IPQ5018# md 0x42000000 8
42000000: 44332211 44332211 44332211 44332211 ."3D."3D."3D."3D
42000010: ffffffff ffffffff ffffffff ffffffff ................
IPQ5018#
mw 0x42000000 0x12345678 4
含义:将0x12345678写入到内存地址为0x42000000的位置,总共写入4个长度:
IPQ5018# mw 0x42000000 0x12345678 4
IPQ5018#
md 0x42000000 8
含义:显示内存地址0x42000000位置的数据,总长度为8个长度(每个长度默认四个字节):
IPQ5018# md 0x42000000 8
42000000: 12345678 12345678 12345678 12345678 xV4.xV4.xV4.xV4.
42000010: ffffffff ffffffff ffffffff ffffffff ................
IPQ5018#
2、Nand Flash操作命令
备注:nand有块、页等概念,且:擦除是指:将所有字节置1。
- 擦除的最小单位是:块
- 读写的最小单位是:页
2.1. nand info
查看nandflash 信息
2.2. nand device
查看nandflash 信息
2.3. nand bad
查看坏块
2.4. nand read(.oob) [addr] [off] [size]
备注:命令中的【addr】指的是RAM的地址(比如DDR),表示将flash的偏移地址【off】处的数据读到DDR的【addr】位置。
-
读取data字段:nand read [addr] [off] [size]
-
读取oob字段:nand read.oob [addr] [off] [size]
备注:
【读取data使用nand read】
【读取oob使用命令nand read.oob】
不管读取data还是读取oob,后面参数含义统一如下:
addr : RAM的地址(如:DDR)
off : nand flash的地址
size : 指要读取nand flash的数据大小,
但是如果是读取oob,size不能超过一个page的oob size,如果page size为512个字节,oob size就是16个字节.
如果一次想读取完整的一个page的值,包含oob,使用的命令【nand dump】
2.5. nand dump[.oob] [addr] [size]
读取flash addr地址开始的size 大小数据出来。最小单位是一个page.也就是说size小于一个page,也会读出一个page的数据。该数据包括oob数据。
如果使用dump.oob,则只读取oob字段。
IPQ5018# nand dump.oob 0x140000 0x100
Page 00140000 dump:
OOB:
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff ff ff ff ff 07 3f fb
de 8b 0a b0 ff ff ff ff
IPQ5018#
2.6. nand write [addr] [off] [size]
与nand read 命令类似,将内存地址addr的size大小数据写入到flash的off偏移地址去,该命令会自动跳过坏块。
2.7. nand erase/clean [off] [size]
清除flash off偏移地址开始的size大小的数据,最小单位是块。
2.8. nand scrub.chip
慎用该命令!
因为该命令会将flash中所有的内容都擦除,包括坏块标记,不论是出厂时的,还是后来使用过程中出现而新标记的。
使用该命令时会提示是否确定需要擦除,输入【y】即可。
二、Linux读写寄存器命令:devem
1、读寄存器:
devem RegAddr
2、写寄存器:
devem RegAddr w Value
3、例子:
root@OpenWrt:/# devmem 0x9c78c
[ 146.422686] [lsy--->]: go to submit_descs from func: read_page_ecc
[ 146.423178] [lsy--->]: go to submit_descs from func: read_page_ecc
0x00000550
root@OpenWrt:/# devmem 0x9c78c w 0x8550
root@OpenWrt:/# devmem 0x9c78c
0x00008550
root@OpenWrt:/#
root@OpenWrt:/#
root@OpenWrt:/#
root@OpenWrt:/#
root@OpenWrt:/#
root@OpenWrt:/# devmem 0x9b7a0
0x00000000
root@OpenWrt:/# devmem 0x9b064
0x00000007
root@OpenWrt:/# devmem 0x9c790
0x00000036
root@OpenWrt:/#
最后
以上就是能干小熊猫为你收集整理的【U-Boot && Linux命令】:【内存操作md、mw】、【nand flash操作】一、U-Boot 内存 & flash操作指令二、Linux读写寄存器命令:devem的全部内容,希望文章能够帮你解决【U-Boot && Linux命令】:【内存操作md、mw】、【nand flash操作】一、U-Boot 内存 & flash操作指令二、Linux读写寄存器命令:devem所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复