X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Favr%2Fdrv%2Fflash_avr.c;h=ad350b299a9d52ff93bcb76b971ba614e7bc8619;hb=2b1ef1c4e079e86db8512cec4dac031a0d19cb2f;hp=0b32af12ed40e412315bb144a2e921a7f20de90c;hpb=998fdab28f0ed880acb8770382fd79a3ed783bd9;p=bertos.git diff --git a/bertos/cpu/avr/drv/flash_avr.c b/bertos/cpu/avr/drv/flash_avr.c index 0b32af12..ad350b29 100644 --- a/bertos/cpu/avr/drv/flash_avr.c +++ b/bertos/cpu/avr/drv/flash_avr.c @@ -44,10 +44,7 @@ #include "flash_avr.h" -#include -#include -#include - +#include "cfg/cfg_flash_avr.h" #include // MIN() #include #include @@ -57,10 +54,15 @@ #include +#include +#include +#include + #include -#warning FIXME:This module need to be refactor to kfile interface! -#if 0 + +#if 1 + /** * Definition of type for avr flash module. @@ -149,7 +151,8 @@ static void flash_avr_flush(void) */ static int flash_avr_kfileFlush(struct KFile * fd) { - KFILE_ASSERT_GENERIC(fd); + + KFILEFLASHAVR(fd); (void)fd; flash_avr_flush(); return 0; @@ -179,13 +182,14 @@ static void flash_avr_loadPage(avr_page_t page) */ static size_t flash_avr_write(struct KFile *fd, const void *_buf, size_t size) { - KFILE_ASSERT_GENERIC(fd); + KFILEFLASHAVR(fd); const uint8_t *buf =(const uint8_t *)_buf; avr_page_t page; avr_page_addr_t page_addr; size_t total_write = 0; + ASSERT(fd->seek_pos + size <= fd->size); size = MIN((uint32_t)size, fd->size - fd->seek_pos); @@ -217,12 +221,12 @@ static size_t flash_avr_write(struct KFile *fd, const void *_buf, size_t size) */ static void flash_avr_open(struct KFile *fd) { - KFILE_ASSERT_GENERIC(fd); + KFILEFLASHAVR(fd); curr_page = 0; memcpy_P(page_buf, (const char *)(curr_page * SPM_PAGESIZE), SPM_PAGESIZE); fd->seek_pos = 0; - fd->size = (uint16_t)(FLASHEND - CONFIG_BOOT_SIZE + 1); + fd->size = (uint16_t)(FLASHEND - CONFIG_FLASH_AVR_BOOTSIZE + 1); page_modified = false; kprintf("Flash file opened\n"); @@ -233,7 +237,7 @@ static void flash_avr_open(struct KFile *fd) */ static int flash_avr_close(UNUSED_ARG(struct KFile *,fd)) { - KFILE_ASSERT_GENERIC(fd); + KFILEFLASHAVR(fd); flash_avr_flush(); kprintf("Flash file closed\n"); return 0; @@ -244,7 +248,7 @@ static int flash_avr_close(UNUSED_ARG(struct KFile *,fd)) */ static struct KFile *flash_avr_reopen(struct KFile *fd) { - KFILE_ASSERT_GENERIC(fd); + KFILEFLASHAVR(fd); flash_avr_close(fd); flash_avr_open(fd); return fd; @@ -257,7 +261,7 @@ static struct KFile *flash_avr_reopen(struct KFile *fd) */ static size_t flash_avr_read(struct KFile *fd, void *buf, size_t size) { - KFILE_ASSERT_GENERIC(fd); + KFILEFLASHAVR(fd); ASSERT(fd->seek_pos + size <= fd->size); size = MIN((uint32_t)size, fd->size - fd->seek_pos); @@ -284,7 +288,7 @@ static size_t flash_avr_read(struct KFile *fd, void *buf, size_t size) void flash_avr_init(struct KFile *fd) { memset(fd, 0, sizeof(*fd)); - DB(fd->_type = KFT_GENERIC); + DB(fd->_type = KFT_FLASHAVR); // Set up flash programming functions. fd->reopen = flash_avr_reopen;