之前在做的一个项目中,使用了spi-flash,uboot启动过程简单提到过,bootcmdbootargs
我在这里打开了全志的SOC的配置文件,在uboot的include/configs/suniv.h路径下,具体如下图所示:

bootcmd一般都会包含 bootm 或者 bootz 指令 ;

  • bootz:因为kernel和rootfs都保存在flash中,所以要先将他们搬运到ram中;
  • bootm:搬运完之后开始启动内核;

这里还有一个就是sf指令,下面简单介绍一下sf指令;
ubootsf 命令可以用来访问 SPI NOR flash;具体如下图所示:

使用方法:

检测 SPI NOR flash

syntax: sf probe [bus:]cs [hz] [mode]

sf probe 2:0

在使用sf read sf write之前,一定要调用sf probe

sf erase

用来擦除blocks;


syntax:sf erase offset len

sf erase 0x0 0x300000

擦除偏移0x0处, 到0x300000之间的擦除块, 擦除操作是以erase block为单位的, 要求offset和len参数必须是erase block对齐的.

sf write

syntax: sf write mem-addr offset len

sf write 0x42000000 0x0 0x300000

把内存0x42000000处的数据, 写入flash的偏移0x0, 写入数据长度为0x300000, 操作偏移和长度最小单位是Byte

sf read

syntax: sf read mem-addr offset len

sf read 0x82000000 0x10000 0x20000

把flash偏移0x10000(64KB)处, 长度为0x20000(128KB)的数据, 写入到内存0x82000000, 操作偏移和长度最小单位是Byte

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。