You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
EasyFlash/flash/inc/flash.h

84 lines
2.8 KiB
C

/*
* This file is part of the EasyFlash Library.
*
* Copyright (C) 2014 by Armink <armink.ztl@gmail.com>
*
* Function: Is is an head file in this library. You can see all be called functions.
* Created on: 2014-09-10
*/
#ifndef FLASH_H_
#define FLASH_H_
#include "types.h"
/* using CRC32 check when load environment variable from Flash */
#define FLASH_ENV_USING_CRC_CHECK
/* using wear leveling mode or normal mode */
/* #define FLASH_ENV_USING_WEAR_LEVELING_MODE */
#define FLASH_ENV_USING_NORMAL_MODE
/* Flash debug print function. Must be implement by user. */
#define FLASH_DEBUG(...) flash_log_debug(__FILE__, __LINE__, __VA_ARGS__)
/* Flash routine print function. Must be implement by user. */
#define FLASH_INFO(...) flash_log_info(__VA_ARGS__)
/* Flash assert for developer. */
#define FLASH_ASSERT(EXPR) \
if (!(EXPR)) \
{ \
FLASH_DEBUG("(%s) has assert failed at %s.\n", #EXPR, __FUNCTION__); \
while (1); \
}
/* EasyFlash software version number */
#define FLASH_SW_VERSION "1.02.12"
typedef struct _flash_env{
char *key;
char *value;
}flash_env, *flash_env_t;
/* Flash error code */
typedef enum {
FLASH_NO_ERR,
FLASH_ERASE_ERR,
FLASH_WRITE_ERR,
FLASH_ENV_NAME_ERR,
FLASH_ENV_NAME_EXIST,
FLASH_ENV_FULL,
} FlashErrCode;
/* flash.c */
FlashErrCode flash_init(void);
/* flash_env.c */
void flash_load_env(void);
void flash_print_env(void);
char *flash_get_env(const char *key);
FlashErrCode flash_set_env(const char *key, const char *value);
FlashErrCode flash_save_env(void);
FlashErrCode flash_env_set_default(void);
uint32_t flash_get_env_total_size(void);
uint32_t flash_get_env_used_size(void);
/* flash_iap.c */
FlashErrCode flash_erase_bak_app(size_t app_size);
FlashErrCode flash_erase_user_app(uint32_t user_app_addr, size_t user_app_size);
FlashErrCode flash_erase_bl(uint32_t bl_addr, size_t bl_size);
FlashErrCode flash_write_data_to_bak(uint8_t *data, size_t size, size_t *cur_size,
size_t total_size);
FlashErrCode flash_copy_app_from_bak(uint32_t user_app_addr, size_t app_size);
FlashErrCode flash_copy_bl_from_bak(uint32_t bl_addr, size_t bl_size);
/* flash_port.c */
FlashErrCode flash_read(uint32_t addr, uint32_t *buf, size_t size);
FlashErrCode flash_erase(uint32_t addr, size_t size);
FlashErrCode flash_write(uint32_t addr, const uint32_t *buf, size_t size);
void *flash_malloc(size_t size);
void flash_free(void *p);
void flash_log_debug(const char *file, const long line, const char *format, ...);
void flash_log_info(const char *format, ...);
void flash_print(const char *format, ...);
#endif /* FLASH_H_ */