ZYNQ系统中实现FAT32文件系统的SD卡读写 之一 硬件介绍

本文介绍如何在ZEDBOARD开发板上使用希科PMOD_SD扩展卡实现FAT32文件系统的SD卡读写功能。重点讲解了扩展卡与开发板之间的引脚连接方式及信号定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


实验目标,在ZEDBOARD开发板子上外接 希科 PMOD_SD扩展卡实现FAT32文件系统的SD卡读写。





直接接在板子的JE接口。由于设计希科PMOD_SD时候正好对应了MIOS口,如图链接扩展板后,引脚对应关系如下:


DAT0MIO10
CMDMIO11
CLKMIO12
DAT1MIO13
DAT2MIO14
DAT3MIO15
WPMIO0
CDMIO9

这里注意WP是写保护Write protect,当WP=0时候,是写保护使能,指示告知读卡器或者SDIO控制器用户设置了WP开关,但是并没有任何电路的设置,也可以忽略之直接进行写操作。CD 是 检测信号,Card Detect,当CD=0时候,表示有卡插入读卡器。

注意有TF卡,实际上不适用这两个WP CD信号,可以在VIVADO环境下不设置这两个信号,等效于CD=0.WP=1。使用SD卡时也可以忽略这两个信号。


当然我们也可以使用EMIO,通过PL的IO将SDIO控制信号解出来,映射到PMOD口 JA ,JB,JC,JD 。



上述直接插在ZEDBOARD上的PMOD_SD模块购买地址是 : https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-2467580809.26.WGblHM&id=552299365256






<think>我们正在讨论如何将SD格式化为FAT32文件系统,以便在Zynq开发板上使用(例如存储txt文件)。根据引用内容,我们知道Zynq开发板通常使用FAT32文件系统来存储文件(如BOOT.bin等启动文件)。以下是详细步骤:###操作步骤(Windows系统为例)####1.**插入SD并备份数据**-将SD通过读器插入电脑USB口-**重要:备份SD原有数据**(格式化会清除所有数据)####2.**打开磁盘管理工具**-右键点击“此电脑”→“管理”→“磁盘管理”-找到SD对应的磁盘(注意核对容量,避免误操作)####3.**删除现有分区(可选)**-如果SD已有分区:-右键每个分区→“删除卷”→直到成为“未分配”空间-如果SD是全新或已空白,跳过此步####4.**创建新分区并格式化为FAT32**-右键未分配空间→“新建简单卷”-按向导操作:1.指定卷大小:默认最大值(全空间)2.分配驱动器号(如F:)3.文件系统选择**FAT32**4.卷标可自定义(如`ZYNC_SD`)5.勾选“执行快速格式化”-点击“完成”开始格式化>**注意**:如果SD容量大于32GB,Windows默认可能不显示FAT32选项[^1]。此时需用以下替代工具:####5.**大容量SD(>32GB)的特殊处理**-使用第三方工具(如**Rufus**或**GUIFormat**):-**Rufus**操作:1.下载Rufus([官网](https://rufus.ie/))2.选择SD设备3.引导类型选“非可启动”4.文件系统选**FAT32**5.点击“开始”-**GUIFormat**操作:1.下载GUIFormat(搜索下载)2.选择SD驱动器3.文件系统选**FAT32**4.勾选“快速格式化”5.点击“开始”####6.**验证格式化结果**-打开“此电脑”,右键SD驱动器→“属性”-检查文件系统是否为**FAT32**-尝试创建测试文件(如`test.txt`)###关键注意事项-**分区格式**:Zynq通常要求**第一个分区为FAT32**(用于存放BOOT.bin、image.ub等启动文件)[^1]-**簇大小**:建议默认值(FAT32自动优化)-**安全弹出**:完成后务必“安全移除硬件”再拔###故障排除|问题现象|解决方案||----------|----------||Windows无FAT32选项|使用Rufus/GUIFormat工具||格式化失败|检查SD写保护开关(物理锁)||Zynq无法识别|确认分区是**主分区**且为**第一分区**|>完成格式化后,即可将txt文件复制到SD,并按之前方法在Zynq读写[^2][^4]。---§§相关问题§§1.如何为Zynq开发板配置多分区SD(如FAT32+EXT4)?2.在Linux系统下如何将SD格式化为FAT32?3.Zynq启动时加载SD文件的完整流程是怎样的?</think>### 如何将SD格式化为FAT32文件系统Zynq开发板专用) 以下是详细操作步骤,支持Windows/Linux双平台操作: --- #### **Windows系统操作步骤** ##### 方法1:使用磁盘管理工具(推荐) 1. **插入SD** - 通过读器将SD连接电脑 - 备份重要数据(**格式化将清除所有数据**) 2. **打开磁盘管理** - 快捷键`Win+X` → 选择"磁盘管理" - 定位SD(通过容量识别,如32GB) 3. **删除原有分区** ```mermaid graph LR A[右键SD分区] --> B[删除卷] B --> C[确认后变为未分配空间] ``` 4. **创建FAT32分区** - 右键未分配空间 → "新建简单卷" - 按向导操作: - 卷大小:**默认最大值** - 文件系统:**FAT32** - 分配驱动器号(如F:) - 勾选"快速格式化" - 完成格式化(约10-30秒) > ⚠️ 注意:若SD容量>32GB,Windows可能隐藏FAT32选项,请用方法2 ##### 方法2:使用第三方工具(大容量必备) 1. 下载工具 **[Rufus](https://rufus.ie/)**(轻量级开源工具) 2. 设置参数: ``` 设备: [选择SD] 引导类型: 非可启动 分区方案: MBR 文件系统: FAT32 簇大小: 默认(32KB) ``` 3. 点击"开始" → 确认警告 --- #### **Linux系统操作步骤** ```bash # 1. 识别SD设备名(通常为/dev/sdX) lsblk # 2. 卸载已有分区(假设为/dev/sdb1) sudo umount /dev/sdb* # 3. 删除旧分区表 sudo fdisk /dev/sdb > 输入 d # 删除分区 > 输入 w # 写入更改 # 4. 创建FAT32分区 sudo mkfs.fat -F 32 -n ZYNQ_SD /dev/sdb1 ``` 参数说明: - `-F 32`:强制FAT32格式 - `-n ZYNQ_SD`:设置卷标(可选) --- #### **Zynq开发板特殊要求** 1. **分区规范** - 必须为**第一个分区**(Zynq BootROM只识别分区1)[^1] - 建议分区容量:**32-64GB**(兼容性最佳) 2. **簇大小优化** | SD容量 | 推荐簇大小 | |----------|------------| | ≤8GB | 32KB | | 16-32GB | 64KB | | ≥64GB | 128KB | 3. **目录结构示例** ```bash F:/ ├── BOOT.bin # 启动文件[^3] ├── image.ub # 内核镜像 └── data/ # 自定义目录 └── log.txt # 你的文本文件 ``` --- #### **验证与故障处理** 1. **在PC端验证** - 创建测试文件`test.txt`写入SD - 重新插拔后检查文件是否存在 2. **在Zynq端验证** 使用FATFS库挂载检测: ```c FRESULT res = f_mount(&fs, "", 1); if(res == FR_OK) { printf("SD挂载成功!\n"); } else { printf("错误代码: %d\n", res); // 常见错误见下表 } ``` 3. **错误代码速查** | 代码 | 含义 | 解决方案 | |------|------|----------| | FR_DISK_ERR | 硬件错误 | 检查SD触点/重插[^4] | | FR_NO_FILESYSTEM | 未格式化 | 按上述步骤重新格式化 | | FR_NOT_READY | 未响应 | 检查开发板供电电压 | > 📌 **关键提示**:Zynq 7000系列要求SD工作在**3.3V电平**,部分高速需在vivado中配置1.8V电平切换[^1] ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值