X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Favr%2Fdrv%2Fflash_avr.h;h=ecbe1b772cccda9f8e038b10b13eaa75e0e27e5f;hb=911d2706a86d326786bfe721dcc3d63aeade7f28;hp=91de1e3cbfa9b8fc975c6aa3292c2a59bf6b6312;hpb=53bac51847532da4abee46a78f420865d5952469;p=bertos.git diff --git a/bertos/cpu/avr/drv/flash_avr.h b/bertos/cpu/avr/drv/flash_avr.h index 91de1e3c..ecbe1b77 100644 --- a/bertos/cpu/avr/drv/flash_avr.h +++ b/bertos/cpu/avr/drv/flash_avr.h @@ -30,47 +30,78 @@ * * --> * - * \brief Self programming routines (interface). - * - * \version $Id$ * \author Francesco Sacchi * \author Daniele Basile + * + * \brief AVR Internal flash read/write driver. + * + * */ -#ifndef DRV_FLASH_AVR_H -#define DRV_FLASH_AVR_H +#ifndef FLASH_AT91_H +#define FLASH_AT91_H + +#include #include -#include +#include -/** - * FlashAvr KFile context structure. - */ -typedef struct KFileFlashAvr -{ - KFile fd; ///< File descriptor. -} KFileFlashAvr; +#include +#define FLASH_PAGE_SIZE SPM_PAGESIZE /** - * ID for FlashAvr + * Definition of type for avr flash module. */ -#define KFT_FLASHAVR MAKE_ID('F', 'L', 'A', 'V') +typedef uint16_t page_t; + +/* Forward declaration */ +struct Flash; /** - * Convert + ASSERT from generic KFile to KFileFlashAvr. + * FlashAvr KFile context structure. + * DEPREACTED STRUCTURE! + * Use Flash instead + * + * \{ */ -INLINE KFileFlashAvr * KFILEFLASHAVR(KFile *fd) +typedef struct FlashAvr { - ASSERT(fd->_type == KFT_FLASHAVR); - return (KFileFlashAvr *)fd; -} + /** + * File descriptor. + */ + KFile fd; + + /** + * Flag for checking if current page is modified. + */ + bool page_dirty; + /** + * Current buffered page. + */ + page_t curr_page; -void flash_avr_init(struct KFileFlashAvr *fd); + /** + * Temporary buffer cointaing data block to + * write on flash. + */ + uint8_t page_buf[SPM_PAGESIZE]; +} FlashAvr; +/* \} */ +void flash_hw_init(struct Flash *fd); +/** + * WARNING! + * This function is DEPRECADED! + * use the flash module instead. + */ +INLINE void flash_avr_init(struct FlashAvr *fd) +{ + flash_hw_init((struct Flash *)fd); +} #endif /* DRV_FLASH_AVR_H */