分类:
2008-10-29 18:12:45
#define KSEG1 0xa0000000
#define AR7100_DDR_SIZE_INCR (4*1024*1024)
int
ar7100_ddr_find_size()
{
uint8_t *p = KSEG1, pat = 0x77;
int i, incr = AR7100_DDR_SIZE_INCR;
*p = pat;
for(i = 1; ; i++) {
*(p + i * AR7100_DDR_SIZE_INCR) = (uint8_t)(i);
if (*p != pat) {
break;
}
}
return (i*AR7100_DDR_SIZE_INCR);
}
看看意思就是在uncached的kseg1空间写数,如果超出了memory的范围,就会回到起始地址。这个不知道是什么原理。