关于调试QSPI-FLASH擦除CS1无效的反思
调试环境为uboot
在调试qspi-flash过程中,需要配置两大部分:
第一部分是qspi控制器,可以通过mw.l去读写,因为qspi的寄存器可以被CPU直接以内存的方式访问;
其中记得配置cap寄存器,确认Flash容量,以及每个寄存器中四字节和三字节寻址需要注意;
第二部分是对flash的配置,flash的配置需要使用qspi的cmd寄存器进行配置;
qspi的cmd寄存器在配置flash的其他选项时一般需要在写入之前需要对flash进行写使能;
注意:内存不能直接读取flash的地址
md.l 10000000 100读取的本身就是内存的值,没有任何意义
其中md.l 0 100能够读取到uboot是因为内存中在启动时已经存放了uboot的镜像;
使用flashe能够擦除内存的原因是:
SOC给qspi一块内存区域专门用来映射flash(手册SOC的总体地址划分),但是大小只有0~0x0fffffff,256MB;所以第一块可以被映射,
而第二块不可以;qspi寄存器的在内存中的地址可以通过SOC手册中的片上外设地址分配查看;
第二块的数据就必须通过读取flash才能够获得了;
内存和flash的地址空间分清楚,内存是内存区域,flash是flash区域,只有cs0可以被直接映射到内存中去;
存储类芯片格外需要注意地址空间的分配,仔细读取芯片手册中地址的分配:
- 查看控制器qspi寄存器地址空间
- 查看flash在SOC中是否能直接映射,映射的地址空间,在手册中也就是qspi的地址空间,注意不是qspi寄存器的地址空间
- 查看qspi控制器的寄存器,配置各个寄存器
- 查看flash手册,查看指令,配置flash
浙公网安备 33010602011771号