- //Compute page address of current page.
- page_addr_t *addr = (page_addr_t *)((fd->curr_page * FLASH_PAGE_SIZE_BYTES) + FLASH_BASE);
-
- //Copy modified page into internal latch.
- for (page_addr_t page_addr = 0; page_addr < FLASH_PAGE_SIZE_BYTES; page_addr += 4)
- {
- // This is needed in order to have a single 32bit write instruction in addr.
- // (8 and 16 writes cause unpredictable results).
- uint32_t data;
- memcpy(&data, &fd->page_buf[page_addr], sizeof(data));
- *addr++ = data;
- }
-
- // Send write command to transfer page from latch to internal flash memory.
- flash_at91_sendWRcmd(fd->curr_page);
- fd->page_dirty = false;