U-Boot内存读写操作store命令

简介

U-Boot的store命令用于向内存读写数据。语法如下:

store <operation> <address> <width> <count>
store [byte|halfword|word] <address>  <value>

operation可以是:

  • read: 读取内存数据
  • write: 写入内存数据
  • md: 显示内存数据(等同于 dump memory)
  • mm: 修改内存数据
  • cp: 内存块复制
  • mw: 写字符串到内存
  • mh: 修改内存数据(16进制)
    width表示访问宽度,可以是:
  • 0: 字节(8位)
  • 1: 半字(16位)
  • 2: 字(32位)
    count表示要访问的个数。

举例

例子:

store write 0x1fc0000 0 8  :在地址0x1fc0000处写入8字节数据
store read 0x1fc0000 1 4 : 从0x1fc0000读取4个16位数据
store md 0x1fc0000 10     : 显示从0x1fc0000开始的10个32位内存数据
store mh 0x1fc0000 12 0x5678 :在0x1fc0000写入16进制数0x5678
store cp 0x1fc0000 0x2000000 0 8 : 将0x1fc0000处的8个字节拷贝到0x2000000
store mw 0x1fc0000 "hello" : 在0x1fc0000写入字符串"hello"

store命令给U-Boot提供了对内存进行方便操作的能力,是U-Boot中比较实用的命令之一.

store 操作其他设备

store命令主要用于操作内存,但是不仅仅只能操作内存。它还可以:

  1. 操作SDRAM - store命令可以读写U-Boot管理的SDRAM内存。
  2. 操作内部SRAM - store命令可以访问U-Boot自身所在的内部SRAM内存。
  3. 操作外部存储器 - store命令可以访问U-Boot外部连接的存储器,如NOR Flash、NAND Flash、SD卡等。这需要在U-Boot中先初始化这些外部存储器才能使用store访问。
  4. 访问MMIO区域 - store命令可以访问内存映射IO区域,从而实现对一些外设的访问。这同样需要U-Boot先设置好这些MMIO区域才能使用。

在store命令中,可以通过几个方面来区分它是在操作内存还是其他外设:

  1. 地址范围 - U-Boot中不同的存储资源有不同的地址范围,所以可以根据store指定的地址范围来判断。例如:
  • SDRAM 一般从0x80000000开始
  • 内部SRAM 一般从0x00000000开始
  • NOR Flash 一般从0xBC000000开始
  • NAND Flash 一般从0x1000000开始
  • MMIO 区域地址由具体外设决定
    所以根据store命令指定的地址就可以判断它在访问哪种存储资源。
  1. 初始化情况 - store命令只有在U-Boot初始化了对应的存储器后才能访问。所以如果某个存储器没有在U-Boot启动过程中初始化,store访问时会报错。这也是一个判断依据。
  2. 宽度选择 - 不同的存储器支持的访问宽度是不同的。SDRAM可以字节访问,也可以字访问,但是NOR Flash只支持字访问。所以store指定的width参数也是一个判断依据。
  3. 效果判断 - 在一些情况下,通过观察store命令的效果也能判断。例如向一个MMIO区域写入数据后,如果外设的状态或值发生了改变,就可以判断刚才访问的是MMIO区域。
    所以,通过地址范围、初始化情况、宽度支持和最终效果等手段,我们可以判断在不同情况下store命令是在访问内存还是其他外设。需要对各存储器的信息有一定了解,然后结合store命令指定的参数来综合判断。

举例

将2个byte的数据写到emmc的certdata分区的起始位置

store write certdata 0x1080000 0 2 

猜你喜欢

转载自blog.csdn.net/yikezhuixun/article/details/130615076