summaryrefslogtreecommitdiff
path: root/components/fal/docs/fal_api.md
blob: c4d1889323f68c67ee4beef758bdce5209fba68b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# FAL API

## 查找 Flash 设备 

```C
const struct fal_flash_dev *fal_flash_device_find(const char *name)
```

| 参数    | 描述                      |
| :----- | :----------------------- |
| name   | Flash 设备名称 |
| return | 如果查找成功,将返回 Flash 设备对象,查找失败返回 NULL    |

## 查找 Flash 分区

```C
const struct fal_partition *fal_partition_find(const char *name)
```

| 参数    | 描述                      |
| :----- | :----------------------- |
| name   | Flash 分区名称 |
| return | 如果查找成功,将返回 Flash 分区对象,查找失败返回 NULL    |

## 获取分区表

```C
const struct fal_partition *fal_get_partition_table(rt_size_t *len)
```

| 参数    | 描述                      |
| :----- | :----------------------- |
| len    | 分区表的长度 |
| return | 分区表   |

## 临时设置分区表

FAL 初始化时会自动装载默认分区表。使用该设置将临时修改分区表,重启后会 **丢失** 该设置

```C
void fal_set_partition_table_temp(struct fal_partition *table, rt_size_t len)
```

| 参数    | 描述                      |
| :----- | :----------------------- |
| table  | 分区表 |
| len    | 分区表的长度 |

## 从分区读取数据

```C
int fal_partition_read(const struct fal_partition *part, rt_uint32_t addr, rt_uint8_t *buf, rt_size_t size)
```

| 参数    | 描述                      |
| :----- | :----------------------- |
| part   | 分区对象 |
| addr   | 相对分区的偏移地址 |
| buf    | 存放待读取数据的缓冲区 |
| size   | 待读取数据的大小 |
| return | 返回实际读取的数据大小   |

## 往分区写入数据

```C
int fal_partition_write(const struct fal_partition *part, rt_uint32_t addr, const rt_uint8_t *buf, rt_size_t size)
```

| 参数    | 描述                      |
| :----- | :----------------------- |
| part   | 分区对象 |
| addr   | 相对分区的偏移地址 |
| buf    | 存放待写入数据的缓冲区 |
| size   | 待写入数据的大小 |
| return | 返回实际写入的数据大小   |

## 擦除分区数据

```C
int fal_partition_erase(const struct fal_partition *part, rt_uint32_t addr, rt_size_t size)
```

| 参数    | 描述                      |
| :----- | :----------------------- |
| part   | 分区对象 |
| addr   | 相对分区的偏移地址 |
| size   | 擦除区域的大小 |
| return | 返回实际擦除的区域大小   |

##  擦除整个分区数据

```C
int fal_partition_erase_all(const struct fal_partition *part)
```

| 参数    | 描述                      |
| :----- | :----------------------- |
| part   | 分区对象 |
| return | 返回实际擦除的区域大小   |

## 打印分区表

```c
void fal_show_part_table(void)
```

## 创建块设备

该函数可以根据指定的分区名称,创建对应的块设备,以便于在指定的分区上挂载文件系统

```C
struct rt_device *fal_blk_device_create(const char *parition_name)
```

| 参数           | 描述                      |
| :-----        | :-----------------------  |
| parition_name | 分区名称 |
| return        | 创建成功,则返回对应的块设备,失败返回空   |

## 创建 MTD Nor Flash 设备

该函数可以根据指定的分区名称,创建对应的 MTD Nor Flash 设备,以便于在指定的分区上挂载文件系统

```C
struct rt_device *fal_mtd_nor_device_create(const char *parition_name)
```

| 参数          | 描述                                                  |
| :------------ | :---------------------------------------------------- |
| parition_name | 分区名称                                              |
| return        | 创建成功,则返回对应的 MTD Nor Flash 设备,失败返回空 |

## 创建字符设备

该函数可以根据指定的分区名称,创建对应的字符设备,以便于通过 deivice 接口或 devfs 接口操作分区,开启了 POSIX 后,还可以通过 open/read/write 函数操作分区。

```C
struct rt_device *fal_char_device_create(const char *parition_name)
```

| 参数          | 描述                                       |
| :------------ | :----------------------------------------- |
| parition_name | 分区名称                                   |
| return        | 创建成功,则返回对应的字符设备,失败返回空 |