PHY6222 基本文件操作
一. 初始化
int hal_fs_init(uint32_t fs_start_address,uint8_t sector_num);
- 功能描述:此函数用于初始化文件系统,并且需要在系统初始化阶段进行设置。
- 参数说明:
fs_start_address
:类型为uint32_t
,表示文件系统的起始地址。sector_num
:类型为uint8_t
,表示扇区数量。
- 返回值类型:
int
,可能用于返回初始化操作的结果状态(例如成功返回特定值,失败返回其他值,但代码中未明确具体返回值含义)。
#include "fs.h"#define FS_OFFSET_ADDRESS 0x11034000 //for 512KB Flash
#define FS_SECTOR_NUM 3
#define FS_SECTOR_NUM_BUFFER_SIZE 312/4// 初始化文件系统int fsInitResult = hal_fs_init(FS_OFFSET_ADDRESS, FS_SECTOR_NUM);if (fsInitResult != PPlus_SUCCESS) {LOG("Failed to initialize file system!\n");while (1); // 停止执行}// 格式化文件系统(如果需要)
// int fsFormatResult = hal_fs_format(FS_OFFSET_ADDRESS, FS_SECTOR_NUM);
// if (fsFormatResult != PPlus_SUCCESS) {
// LOG("Failed to format file system!\n");
// while (1); // 停止执行
// }
二. 文件写操作
int hal_fs_item_read(uint16_t id,uint8_t* buf,uint16_t buf_len,uint16_t* len);
功能描述
从 FS 文件读取数据
参数描述
- **
id
**:- 类型:
uint16_t
,即无符号 16 位整数。 - 参数名:
id
。 - 说明:用于指定要写入数据的文件的唯一标识符。
- 类型:
- **
buf
**:- 类型:
uint8_t*
,即指向无符号 8 位整数的指针。 - 参数名:
buf
。 - 说明:指向存储有待写入文件的数据的缓冲区的起始地址。
- 类型:
- **
len
**:- 类型:
uint16_t
,即无符号 16 位整数。 - 参数名:
len
。 - 说明:表示
buf
所指向的缓冲区中有效数据的长度。
- 类型:
返回值描述
- **
PPlus_SUCCESS
**:当函数执行初始化相关操作(可能是为写入操作做准备的初始化)成功时,返回此值,表示写入操作的前期准备工作顺利完成。
// 定义要存储的数据uint8_t macAdr[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01};uint8_t halVal = 0x01;// 定义文件ID(需要确保唯一性)uint16_t fileId = 0x0001;// 写入数据到文件int writeResult = hal_fs_item_write(fileId, (uint8_t*)&macAdr, sizeof(macAdr));if (writeResult != PPlus_SUCCESS) {LOG("Failed to write MAC address to file!\n");while (1); // 停止执行}else{LOG("write MAC address to file success!\n");}// 写入HAL值到文件writeResult = hal_fs_item_write(fileId + 1, &halVal, sizeof(halVal));if (writeResult != PPlus_SUCCESS) {LOG("Failed to write HAL value to file!\n");while (1); // 停止执行}else{LOG("write HAL value to file success!\n");}
三. 读操作
int hal_fs_item_read(uint16_t id,uint8_t* buf,uint16_t buf_len,uint16_t* len);
功能描述
该函数 hal_fs_item_read
的作用是从文件系统(FS)中读取指定文件的数据。
参数描述
uint16_t id
:表示要读取的文件在文件系统中的唯一标识符(id),通过该 id 来定位具体的文件。uint8_t* buf
:指向一个缓冲区的起始地址,读取到的文件数据将被存储到这个缓冲区中。uint16_t buf_len
:指定了上述缓冲区的起始长度,即缓冲区可用于存储数据的最大长度。uint16_t* len
:这是一个指针变量,用于返回实际从文件中读取到的数据的长度。函数执行完毕后,该指针所指向的内存位置将存储实际读取的字节数。
返回值
PPlus_SUCCESS
:当函数成功从文件系统读取数据时,返回此值,表示初始化(这里可能是指文件读取相关的初始化操作)成功。
// 定义缓冲区用于读取数据uint8_t readMacAdr[6];uint8_t readHalVal;uint16_t readLength;uint16_t i;// 读取MAC地址int readResult = hal_fs_item_read(fileId, readMacAdr, sizeof(readMacAdr), &readLength);if (readResult != PPlus_SUCCESS || readLength != sizeof(macAdr)) {LOG("Failed to read MAC address from file!\n");while (1); // 停止执行}else{for(i = 0; i < readLength; i++){LOG("mac[%d]:%d:", i, readMacAdr[i]);}LOG("\n");}// 验证MAC地址
// if (osal_memcmp(macAdr, readMacAdr, sizeof(macAdr)) != 0) {
// LOG("MAC address verification failed!\n");
// while (1); // 停止执行
// }// 读取HAL值readResult = hal_fs_item_read(fileId + 1, &readHalVal, sizeof(readHalVal), &readLength);if (readResult != PPlus_SUCCESS || readLength != sizeof(halVal)) {LOG("Failed to read HAL value from file!\n");while (1); // 停止执行}// 验证HAL值if (halVal != readHalVal) {LOG("HAL value verification failed!\n");while (1); // 停止执行}else{LOG("read halVal: %d\n", readHalVal);}