X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Favr%2Fdrv%2Fflash_avr.c;h=7584200ea449a6988fc90ed6fc32bb076502ada1;hb=fd567eaa9f9e24f25929bfdcd95b536986c3aeef;hp=8e7210366e0d12694c68fc185782de9d665fb81d;hpb=29139f176f00b23f2856b98c1d1b44d39c0fb8ad;p=bertos.git diff --git a/bertos/cpu/avr/drv/flash_avr.c b/bertos/cpu/avr/drv/flash_avr.c index 8e721036..7584200e 100644 --- a/bertos/cpu/avr/drv/flash_avr.c +++ b/bertos/cpu/avr/drv/flash_avr.c @@ -71,10 +71,7 @@ struct FlashHardware; static size_t avr_flash_readDirect(struct KBlock *blk, block_idx_t idx, void *buf, size_t offset, size_t size) { - ASSERT(offset == 0); - ASSERT(size == blk->blk_size); - - memcpy_P(buf, (const void *)(uint16_t)(idx * blk->blk_size), size); + memcpy_P(buf, (const void *)(uint16_t)(idx * blk->blk_size + offset), size); return blk->blk_size; } @@ -164,18 +161,19 @@ static void common_init(Flash *fls) } -void flash_hw_init(Flash *fls) +void flash_hw_init(Flash *fls, int flags) { common_init(fls); fls->blk.priv.vt = &flash_avr_buffered_vt; - fls->blk.priv.flags |= KB_BUFFERED | KB_PARTIAL_WRITE; + fls->blk.priv.flags |= KB_BUFFERED | KB_PARTIAL_WRITE | flags; fls->blk.priv.buf = flash_buf; } -void flash_hw_initUnbuffered(Flash *fls) +void flash_hw_initUnbuffered(Flash *fls, int flags) { common_init(fls); fls->blk.priv.vt = &flash_avr_unbuffered_vt; + fls->blk.priv.flags |= flags; }