【U-Boot && Linux命令】:【内存操作md、mw】、【nand flash操作】


一、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:/#
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值