doubao_chat/apps/common/example/peripheral/flash/flash_user/main.c

60 lines
1.6 KiB
C

#include "app_config.h"
#include "system/includes.h"
#include "fs/fs.h"
#include "asm/sfc_norflash_api.h"
#ifdef USE_FLASH_USER_TEST_DEMO
#define USER_FLASH_SPACE_PATH "mnt/sdfile/EXT_RESERVED/user"
static u32 user_get_flash_exif_addr(void)
{
u32 addr;
FILE *profile_fp = fopen(USER_FLASH_SPACE_PATH, "r");
if (profile_fp == NULL) {
puts("user_get_flash_addr ERROR!!!\r\n");
return 0;
}
struct vfs_attr file_attr;
fget_attrs(profile_fp, &file_attr);
addr = sdfile_cpu_addr2flash_addr(file_attr.sclust);
fclose(profile_fp);
printf("user_get_flash_exif_addr = 0x%x, size = 0x%x \r\n", addr, file_attr.fsize);
return addr;
}
static int c_main(void)
{
printf("\r\n\r\n\r\n\r\n\r\n ----------- USER_FLASH_EXIF example run %s-------------\r\n\r\n\r\n\r\n\r\n", __TIME__);
char buf[256];
u32 flash_exif_addr = user_get_flash_exif_addr();
if (flash_exif_addr == 0) {
return -1;
}
puts("USER_FLASH_EXIF ERASE_SECTOR...\r\n");
norflash_ioctl(NULL, IOCTL_ERASE_SECTOR, flash_exif_addr);
puts("USER_FLASH_EXIF READ\r\n");
memset(buf, 0, sizeof(buf));
norflash_read(NULL, buf, sizeof(buf), flash_exif_addr);
put_buf(buf, sizeof(buf));
puts("\r\n USER_FLASH_EXIF WRITE\r\n");
for (int i = 0; i < sizeof(buf); i++) {
buf[i] = i;
}
norflash_write(NULL, buf, sizeof(buf), flash_exif_addr);
puts("USER_FLASH_EXIF READ\r\n");
memset(buf, 0, sizeof(buf));
norflash_read(NULL, buf, sizeof(buf), flash_exif_addr);
put_buf(buf, sizeof(buf));
return 0;
}
late_initcall(c_main);
#endif