60 lines
1.6 KiB
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
|