flash: implement a default function for copying data

tags/0.1.0
S.J.R. van Schaik 7 years ago
parent 1ba4e77dd6
commit a8beb53fa0
  1. 2
      include/flash.h
  2. 26
      source/core/flash.c

@ -24,6 +24,8 @@ struct flash_dev {
};
int default_flash_is_erased(struct flash_dev *dev, uint32_t addr);
size_t default_flash_copy(struct flash_dev *dev, uint32_t dst, uint32_t src,
size_t len);
struct flash_dev *flash_probe(void);
void flash_release(struct flash_dev *dev);

@ -29,6 +29,32 @@ int default_flash_is_erased(struct flash_dev *dev, uint32_t addr)
return 1;
}
size_t default_flash_copy(struct flash_dev *dev, uint32_t dst, uint32_t src,
size_t len)
{
uint8_t data[32];
size_t nbytes, ret = 0;
while (len) {
nbytes = min(sizeof data, len);
if (flash_read(dev, src, data, nbytes) == 0)
return -1;
if (flash_write(dev, dst, data, nbytes) == 0)
return -1;
dst += nbytes;
src += nbytes;
len -= nbytes;
ret += nbytes;
}
return ret;
}
void flash_release(struct flash_dev *dev)
{
if (!dev)

Loading…
Cancel
Save