初始创建FTP服务器

This commit is contained in:
2026-07-21 22:08:11 +08:00
parent d48be81478
commit 6d404d136e
10 changed files with 265 additions and 357 deletions

View File

@@ -28,12 +28,12 @@
┌─────────────────────────────────────────────────────────────┐
│ 物理分区布局 (256MB) │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ 预留 (128MB) │ ftl_fatfs (128MB) │ │
│ │ Block 0~1023 │ Block 1024~2047 │ │
│ │ 未使用 │ dhara FTL + FatFS │ │
│ └────────────────────────────────────────────────────────┘ │
│ 偏移: 0 128MB 256MB
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ ftl_fatfs (256MB) │ │
│ │ Block 0~2047 │ │
│ │ dhara FTL + FatFS全部 2048 个块) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ 偏移: 0 256MB│
└─────────────────────────────────────────────────────────────┘
```
@@ -91,24 +91,20 @@ HAL_Init → SystemClock_Config → MX_GPIO_Init → MX_USART1_UART_Init
单个分区,配置在 `Drivers/BSP/GD5F2GQ5UE/nand_ftl.c`
```c
#define FTL_FATFS_OFFSET (128U * 1024U * 1024U) // 128MB
#define FTL_FATFS_SIZE (128 * 1024 * 1024) // 128MB
#define FTL_FATFS_OFFSET 0 // 偏移 0占用全部 256MB
```
### 3.1 分区对照表
| 分区名 | 偏移 | 大小 | 物理块范围 | 逻辑用途 |
|--------|------|------|-----------|----------|
| 预留 | 0 | 128 MB | Block 0~1023 | 未使用 |
| `ftl_fatfs` | 128 MB | 128 MB | Block 1024~2047 | dhara FTL + FatFS |
| `ftl_fatfs` | 0 | 256 MB | Block 0~2047 | dhara FTL + FatFS |
### 3.2 配置联动
- **FTL** — `nand_ftl.c``FTL_START_BLOCK = FTL_FATFS_OFFSET / GD5F_BLOCK_SIZE = 1024``FTL_NUM_BLOCKS` 自动适配剩余块数
- **FTL** — `nand_ftl.c``FTL_START_BLOCK = 0``FTL_NUM_BLOCKS = 2048`
- **FatFS** — 通过 `disk_ioctl(GET_SECTOR_COUNT)` 获取 FTL 管理的扇区数
> 调整分区大小时只需修改 `nand_ftl.c` 中的 `FTL_FATFS_OFFSET` 宏,下游模块自动适配。
---
## 4. 驱动层gd5f2gq5ue.c/h
@@ -315,12 +311,12 @@ FTL 之上还有一个 **单页写回缓存 (write-back cache)**
### 6.3 容量计算
```
FTL 管理块数 = 1024 (Block 1024~2047)
FTL 管理块数 = 2048 (Block 0~2047)
每块页数 = 64
每页扇区数 (512B) = 4
总扇区数 = 1024 × 64 × 4 = 262144
总容量 = 262144 × 512 = 128MB (原始容量)
FTL 开销后 ≈ 93 MB (随 GC 和 journal 使用量波动)
总扇区数 = 2048 × 64 × 4 = 524288
总容量 = 524288 × 512 = 256MB (原始容量)
FTL 开销后 ≈ 186 MB (随 GC 和 journal 使用量波动)
```
---