ZYNQ使用W25Q128BV和W25Q256FVEI芯片flash启动系统

本文介绍了ZYNQ系统如何配置从W25Q128BV和W25Q256FVEI Flash芯片启动。在配置过程中遇到的问题包括BOOT.BIN+image.ub无法启动,通过对比分析发现N25Q128和W25Q128的指令在不同SPI模式下有所不同,需要正确设置地址范围。对于W25Q256FVEI,由于BOOT.BIN和image.ub的大小超过单片16M Flash,因此将image.ub烧写到第二片16M Flash,并调整了petalinux-config和SDK的地址配置。

一,FLASH芯片为W25Q128BV配置系统为FLASH启动

配置petalinux系统从flahs启动,发现BOO.BIN能启动,BOOT.BIN+image.ub启动不了。其中烧写和配置的时候,image.ub.bin偏移地址都是0x520000

烧写,然后启动

U-Boot 2018.01-00083-gd8fc4b3b70 (Nov 13 2023 - 03:29:36 +0000) Xilinx Zynq ZC70                                                                                                                                                             2

Board: Xilinx Zynq
Silicon: v3.1
I2C:   ready
DRAM:  ECC disabled 1 GiB
MMC:   Card did not respond to voltage select!
mmc_init: -95, time 23
mmc@e0100000 - probe failed: -95
sdhci_transfer_data: Error detected in status(0x208000)!
Card did not respond to voltage select!
mmc_init: -95, time 24

SF: Detected w25q128bv with page size 512 Bytes, erase size 8 KiB, total 32 MiB
*** Warning - 
### ZYNQ 平台 W25Q256 闪存芯片读写操作 #### 硬件连接说明 对于ZYNQ平台上的W25Q256闪存芯片,硬件连接主要涉及QSPI接口的配置。当选择Single SS 4-bit IO模式时,需要确保以下信号线正确连接到ZYNQ处理器: - **CS_N (Chip Select)** 连接到PS_QSPI_CS_B引脚 - **CLK (Clock)** 连接到PS_QSPI_SCK引脚 - **IO0-DI (Data In)** 连接到PS_QSPI_IO[0]引脚 - **IO1-DO (Data Out)** 连接到PS_QSPI_IO[1]引脚 - **IO2-WP** **IO3-HOLD** 可以分别连接至PS_QSPI_IO[2], PS_QSPI_IO[3] 或者根据具体需求悬空[^1] #### 初始化与配置 为了使能并初始化QSPI Flash设备,在Xilinx SDK环境中可以通过调用`XSpiPs_Config *Config; XSpiPs CfgPtr;`来获取默认配置参数,并通过`XSpiPs_CfgInitialize(&Spi, Config, Config->BaseAddress);`完成外设初始化。 #### 示例代码:读取Flash ID 下面展示一段用于验证通信正常工作的简单测试程序——读取存储器ID指令(0x9F),这有助于确认物理层连通性基本功能完好无损。 ```c u8 ReadJEDECID(void){ u8 CmdBuf[4]; u8 RecvBuf[4]; /* Send command to read JEDEC ID */ CmdBuf[0]=0x9f; Xil_DCacheInvalidateRange((INTPTR)&RecvBuf,sizeof(u8)*4); XSpiPs_Transfer(&Spi,(u8 *)CmdBuf,NULL,1); XSpiPs_Transfer(&Spi,NULL,&RecvBuf,3); return RecvBuf[0]; //返回制造商ID作为函数结果 } ``` #### 数据写入流程 数据写入前需先发送释放保护状态命令(如0x04),接着执行擦除扇区/块的操作;之后再利用页编程命令(通常为0x02)向指定地址位置写入新数据。注意每次最多只能在一个页面内连续写入不超过256字节的数据量。 #### 数据读取方法 要从特定偏移处开始读回一定长度的内容,则应发出快速读请求(Fast Read Command, 0x0B), 后跟起始地址以及期望接收缓冲区指针即可实现高效传输。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒听雪落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值