16 #define PAGE_SIZE 0x800
18 * For 2KiB page OneNAND
19 * +------+------+------+------+
20 * | 2KiB | 2KiB | 2KiB | 2KiB |
21 * +------+------+------+------+
23 #define CHECKSUM_8K (SZ_8K - 0x4)
25 * For 4KiB page OneNAND
26 * +----------------+----------------+----------------+----------------+
27 * | 2KiB, reserved | 2KiB, reserved | 2KiB, reserved | 2KiB, reserved |
28 * +----------------+----------------+----------------+----------------+
30 #define CHECKSUM_16K (SZ_14K - 0x4)
32 int main(int argc, char *argv[])
42 unsigned int header[4];
50 fd = open(argv[1], O_RDWR);
53 printf("open err: %s\n", argv[1]);
57 ret = fstat(fd, &stat);
63 if (stat.st_size > SZ_8K)
68 for (i = 0; i < size; i++) {
69 /* evt1 doesn't have reserved area */
71 /* if reserved area, skip the checksum */
72 if (stat.st_size > SZ_8K) {
73 if (i % PAGE_SIZE == 0) {
81 * if 1st page's reverved area,
82 * copy the data to 2nd page
90 lseek(fd, i, SEEK_SET);
96 ret = read(fd, &buf, 1);
108 printf("%02x ", buf & 0xFF);
115 ret = write(fd, &sum, 4);
118 printf("read err: %s\n", ret);
122 printf("checksum = %x\n", sum);
125 fd0 = open("header.bin", O_RDWR | O_CREAT | O_TRUNC,
129 printf("open err: header.bin\n");
133 if (size == CHECKSUM_16K)
141 ret = write(fd0, header, 16);