123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /*
- * File : fal_def.h
- * This file is part of FAL (Flash Abstraction Layer) package
- * COPYRIGHT (C) 2006 - 2019, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2018-05-17 armink the first version
- */
- #ifndef _FAL_DEF_H_
- #define _FAL_DEF_H_
- #include <stdint.h>
- #include <stdio.h>
- #define FAL_SW_VERSION "0.5.0"
- #ifndef FAL_MALLOC
- #define FAL_MALLOC malloc
- #endif
- #ifndef FAL_CALLOC
- #define FAL_CALLOC calloc
- #endif
- #ifndef FAL_REALLOC
- #define FAL_REALLOC realloc
- #endif
- #ifndef FAL_FREE
- #define FAL_FREE free
- #endif
- #ifndef FAL_DEBUG
- #define FAL_DEBUG 0
- #endif
- #ifndef FAL_PRINTF
- #ifdef RT_VER_NUM
- /* for RT-Thread platform */
- extern void rt_kprintf(const char *fmt, ...);
- #define FAL_PRINTF rt_kprintf
- #else
- #define FAL_PRINTF printf
- #endif /* RT_VER_NUM */
- #endif /* FAL_PRINTF */
- #if FAL_DEBUG
- #ifdef assert
- #undef assert
- #endif
- #define assert(EXPR) \
- if (!(EXPR)) \
- { \
- FAL_PRINTF("(%s) has assert failed at %s.\n", #EXPR, __FUNCTION__); \
- while (1); \
- }
- /* debug level log */
- #ifdef log_d
- #undef log_d
- #endif
- #define log_d(...) FAL_PRINTF("[D/FAL] (%s:%d) ", __FUNCTION__, __LINE__); FAL_PRINTF(__VA_ARGS__);FAL_PRINTF("\n")
- #else
- #ifdef assert
- #undef assert
- #endif
- #define assert(EXPR) ((void)0);
- /* debug level log */
- #ifdef log_d
- #undef log_d
- #endif
- #define log_d(...)
- #endif /* FAL_DEBUG */
- /* error level log */
- #ifdef log_e
- #undef log_e
- #endif
- #define log_e(...) FAL_PRINTF("\033[31;22m[E/FAL] (%s:%d) ", __FUNCTION__, __LINE__);FAL_PRINTF(__VA_ARGS__);FAL_PRINTF("\033[0m\n")
- /* info level log */
- #ifdef log_i
- #undef log_i
- #endif
- #define log_i(...) FAL_PRINTF("\033[32;22m[I/FAL] "); FAL_PRINTF(__VA_ARGS__);FAL_PRINTF("\033[0m\n")
- /* FAL flash and partition device name max length */
- #ifndef FAL_DEV_NAME_MAX
- #define FAL_DEV_NAME_MAX 24
- #endif
- struct fal_flash_dev
- {
- char name[FAL_DEV_NAME_MAX];
- /* flash device start address and len */
- uint32_t addr;
- size_t len;
- /* the block size in the flash for erase minimum granularity */
- size_t blk_size;
- struct
- {
- int (*init)(void);
- int (*read)(long offset, uint8_t *buf, size_t size);
- int (*write)(long offset, const uint8_t *buf, size_t size);
- int (*erase)(long offset, size_t size);
- } ops;
- /* write minimum granularity, unit: bit.
- 1(nor flash)/ 8(stm32f4)/ 32(stm32f1)/ 64(stm32l4)
- 0 will not take effect. */
- size_t write_gran;
- };
- typedef struct fal_flash_dev *fal_flash_dev_t;
- /**
- * FAL partition
- */
- struct fal_partition
- {
- uint32_t magic_word;
- /* partition name */
- char name[FAL_DEV_NAME_MAX];
- /* flash device name for partition */
- char flash_name[FAL_DEV_NAME_MAX];
- /* partition offset address on flash device */
- long offset;
- size_t len;
- uint32_t reserved;
- };
- typedef struct fal_partition *fal_partition_t;
- #endif /* _FAL_DEF_H_ */
|