static int cmd_erase(int argc, char **argv) { int page; if (argc < 2) { printf("usage: %s <page>\n", argv[0]); return 1; } page = getpage(argv[1]); if (page < 0) { return 1; } flashpage_write(page, NULL); printf("successfully erased page %i (addr %p)\n", page, flashpage_addr(page)); return 0; }
/** * @brief Does a short raw write on last page available * * @note Since every hardware can have different flash layouts for * automated testing we always write to the last page available * so we are independent of the size or layout */ static int cmd_test_last_raw(int argc, char **argv) { (void) argc; (void) argv; /* try to align */ memcpy(raw_buf, "test12344321tset", 16); /* erase the page first */ flashpage_write(((int)FLASHPAGE_NUMOF - 1), NULL); flashpage_write_raw(flashpage_addr((int)FLASHPAGE_NUMOF - 1), raw_buf, strlen(raw_buf)); /* verify that previous write_raw effectively wrote the desired data */ if (memcmp(flashpage_addr((int)FLASHPAGE_NUMOF - 1), raw_buf, strlen(raw_buf)) != 0) { puts("error verifying the content of last page"); return 1; } puts("wrote raw short buffer to last flash page"); return 0; }
int flashpage_write_and_verify(int page, void *data) { flashpage_write(page, data); return flashpage_verify(page, data); }