📄 ecctest.c
字号:
#ifdef ECC_TESTstatic inline void ecc_off(void){ *(volatile int *)(INTERNAL_REG_BASE_ADDR+0x4b4) &= ~0x00200000;}static inline void ecc_on(void){ *(volatile int *)(INTERNAL_REG_BASE_ADDR+0x4b4) |= 0x00200000;}static int putshex(const char *buf, int len){ int i; for (i=0;i<len;i++) { printf("%02x", buf[i]); } return 0;}static int char_memcpy(void *d, const void *s, int len){ int i; char *cd=d; const char *cs=s; for(i=0;i<len;i++) { *(cd++)=*(cs++); } return 0;}static int memory_test(char *buf){ const char src[][16]={ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01}, {0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02}, {0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04}, {0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08}, {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10}, {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}, {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40}, {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80}, {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55}, {0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa}, {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff} }; const int foo[] = {0}; int i,j,a; printf("\ntest @ %d %p\n", foo[0], buf); for(i=0;i<12;i++) { for(a=0;a<8;a++) { const char *s=src[i]+a; int align=(unsigned)(s)&0x7; /* ecc_off(); */ memcpy(buf,s,8); /* ecc_on(); */ putshex(s,8); if(memcmp(buf,s,8)) { putc('\n'); putshex(buf,8); printf(" [FAIL] (%p) align=%d\n", s, align); for(j=0;j<8;j++) { s[j]==buf[j]?puts(" "):printf("%02x", (s[j])^(buf[j])); } putc('\n'); } else { printf(" [PASS] (%p) align=%d\n", s, align); } /* ecc_off(); */ char_memcpy(buf,s,8); /* ecc_on(); */ putshex(s,8); if(memcmp(buf,s,8)) { putc('\n'); putshex(buf,8); printf(" [FAIL] (%p) align=%d\n", s, align); for(j=0;j<8;j++) { s[j]==buf[j]?puts(" "):printf("%02x", (s[j])^(buf[j])); } putc('\n'); } else { printf(" [PASS] (%p) align=%d\n", s, align); } } } return 0;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -