void board_init_f(ulong bootflag) { uint plat_ratio, bus_clk, sys_clk = 0; volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); volatile ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR); uint val, sysclk_mask; val = pgpio->gpdat; sysclk_mask = val & SYSCLK_MASK; if(sysclk_mask == 0) sys_clk = SYSCLK_66; else sys_clk = SYSCLK_100; plat_ratio = gur->porpllsr & 0x0000003e; plat_ratio >>= 1; bus_clk = plat_ratio * sys_clk; NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1, bus_clk / 16 / CONFIG_BAUDRATE); puts("\nNAND boot... "); #ifdef CONFIG_SYS_FSL_BOOT_DDR /* board specific DDR initialization */ initsdram(); #endif /* copy code to DDR and jump to it - this should not return */ /* NOTE - code has to be copied out of NAND buffer before * other blocks can be read. */ relocate_code(CONFIG_SYS_NAND_U_BOOT_RELOC_SP, 0, CONFIG_SYS_NAND_U_BOOT_RELOC); }
int main(void) { const int flash_burn = 0; int testcpu; initboard(); initsdram(); com_init(); sendtocom0("LH-1008 Satellite Navigation System\n\n\n"); initmodules(); //TestCPU testcpu = (0xabcddcba * 0x56899865 + 0xccdd) / 0xaabb; testcpu <<= 16; testcpu = ~testcpu; if (testcpu == 0x11DCFFFF) { sendtocom0("Satellite Navigation System Start\n\n"); } //Test Flash if (flash_burn == 1) { Flash_Chip_Erase(); printf("Flash Erase Complete\n"); Flash_Writem(FLASH_BASE_ADDR, 0x000, 0x48); Flash_Writem(FLASH_BASE_ADDR+0x400, (Uint32*)0x400, 0x5b30); printf("Flash Write Complete\n"); } test_entry(); /* printf("TEST SDRAMing... Write 0x00000000\t\n"); for (i=0; i<0x1000000; i++) write16((0x80000000 + i*2), 0x0); for (i=0; i<0x1000000; i++) { tmptest = read16(0x80000000 + i*2); if (tmptest != 0) { printf("SDRAM Check failed...\t\n"); printf("i=0x%x\r\n", i); printf("tmptest=0x%x\r\n", tmptest); printf("testram=0x%x\r\n", testram); } } printf("SDRAM Check 0x00000000 OK\t\n"); printf("TEST SDRAMing... Write 0xFFFFFFFF\t\n"); for (i=0; i<0x1000000; i++) write16((0x80000000 + i*2), 0xffff); for (i=0; i<0x1000000; i++) { tmptest = read16(0x80000000 + i*2); if (tmptest != 0xffff) { printf("SDRAM Check failed...\t\n"); printf("i=0x%x\r\n", i); printf("tmptest=0x%x\r\n", tmptest); printf("testram=0x%x\r\n", testram); } } printf("SDRAM Check 0xFFFFFFFF OK\t\n"); printf("TEST SDRAMing... Write 0xAAAAAAAA\t\n"); for (i=0;i<0x1000000; i++) write16((0x80000000 + i*2), 0xaaaa); for (i=0; i<0x1000000; i++) { tmptest = read16(0x80000000 + i*2); if (tmptest != 0xaaaa) { printf("SDRAM Check failed...\t\n"); printf("i=0x%x\r\n", i); printf("tmptest=0x%x\r\n", tmptest); printf("testram=0x%x\r\n", testram); } } printf("SDRAM Check 0xAAAAAAAA OK\t\n"); printf("TEST SDRAMing... Write 0x55555555\t\n"); for (i=0; i<0x1000000; i++) write16((0x80000000 + i*2), 0x5555); for (i=0; i<0x1000000; i++) { tmptest = read16(0x80000000 + i*2); if (tmptest != 0x5555) { printf("SDRAM Check failed...\t\n"); printf("i=0x%x\r\n", i); printf("tmptest=0x%x\r\n", tmptest); printf("testram=0x%x\r\n", testram); } } printf("SDRAM Check 0x55555555 OK\t\n"); printf("TEST SDRAMing...Write Accumulation \t\n"); for (i=0, testram=TESTCOUNT; i<0x1000000; i++, testram--) write16((0x80000000 + i*2), testram); for (i=0, testram=TESTCOUNT; i<0x1000000; i++, testram--) { tmptest = read16(0x80000000 + i*2); if (tmptest != testram) { printf("SDRAM Check failed...\t\n"); printf("i=0x%x\r\n", i); printf("tmptest=0x%x\r\n", tmptest); printf("testram=0x%x\r\n", testram); } } printf("SDRAM Test good\n"); initsdram(); */ }