|
xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
|
版本:0.3 | 日期:2026-02-27 | 路径: components/xt_fal/
xt_fal 是 Flash 抽象层(Flash Abstraction Layer),提供 Flash 设备和分区的统一管理接口。支持多 Flash 设备注册、分区表管理、按名称访问分区,上层无需关心底层 Flash 硬件差异。
xt_fal 将 Flash 硬件抽象为两层:
fal_id 是分区的统一标识,编码规则:
通过 XT_FAL_GET_FLASH_ID() 、 XT_FAL_GET_PARTITION_IDX() 、 XT_FAL_MAKE_ID() 宏进行编解码。
Flash 设备通过 xt_fal_flash_ops 结构体注册底层操作函数:
以下为函数签名大纲,完整的参数说明、返回值、注意事项请查看 xt_fal(Flash 抽象层) 。
| 函数签名 | 说明 |
|---|---|
| uint8_t xt_fal_register(const struct xt_fal_flash *flash, const struct xt_fal_partition *part_table, uint32_t part_count) | 注册 Flash 设备和分区表 |
| xt_err_t xt_fal_unregister(uint8_t flash_id, const struct xt_fal_flash **out_flash, const struct xt_fal_partition **out_part_table, uint32_t *out_part_count) | 反注册 Flash 设备 |
| xt_err_t xt_fal_init(void) | 初始化所有已注册的 Flash 设备 |
| xt_err_t xt_fal_deinit(void) | 反初始化所有 Flash 设备 |
| 函数签名 | 说明 |
|---|---|
| uint8_t xt_fal_get_flash_id_by_name(const char *flash_name) | 通过名称获取 flash_id |
| uint8_t xt_fal_get_id_by_name(const char *part_name) | 通过分区名称获取 fal_id |
| const struct xt_fal_partition *xt_fal_get_partition_by_id(uint8_t fal_id) | 通过 fal_id 获取分区指针 |
| const struct xt_fal_flash *xt_fal_get_flash_by_id(uint8_t fal_id) | 通过 fal_id 获取 Flash 设备指针 |
| 反模式 | 问题 | 正确做法 |
|---|---|---|
| 写前未擦除 | Flash 写入失败 | 写操作前先擦除对应区域 |
| 跨块擦除不对齐 | 擦除失败 | 擦除地址和大小必须对齐到 block_size |
| 分区名称重复 | 查找歧义 | 每个分区名称必须唯一 |