int main() { LED1_ENABLE(); LED1_ON(); /* LED1_ON(); delay(800000); LED1_OFF(); */ unsigned char ch = '\0'; init_baudrate(); clock_init(); initUART(); serial_putc('c'); serial_putc('o'); serial_putc('d'); serial_putc('e'); serial_putc('\n'); serial_putc('\n'); ch = '\n'; serial_putc(ch/10+'0'); serial_putc(ch%10+'0'); serial_putc(' '); //printf1("pclk scale is %d\n", get_PCLK()); while(1) { ch = serial_getc(); //if (ch <= '9' && ch >= '0') if (ch == '\r') ch = '\n'; serial_putc(ch); }; return 0; };
void board_init_f(ulong board_type) { gd_t gd_data; gd_t *new_gd; bd_t *bd; unsigned long *new_sp; unsigned long monitor_len; unsigned long monitor_addr; unsigned long addr; long sdram_size; /* Initialize the global data pointer */ memset(&gd_data, 0, sizeof(gd_data)); gd = &gd_data; /* Perform initialization sequence */ board_early_init_f(); cpu_init(); board_postclk_init(); env_init(); init_baudrate(); serial_init(); console_init_f(); display_banner(); sdram_size = initdram(board_type); /* If we have no SDRAM, we can't go on */ if (sdram_size <= 0) panic("No working SDRAM available\n"); /* * Now that we have DRAM mapped and working, we can * relocate the code and continue running from DRAM. * * Reserve memory at end of RAM for (top down in that order): * - u-boot image * - heap for malloc() * - board info struct * - global data struct * - stack */ addr = CONFIG_SYS_SDRAM_BASE + sdram_size; monitor_len = __bss_end__ - _text; /* * Reserve memory for u-boot code, data and bss. * Round down to next 4 kB limit. */ addr -= monitor_len; addr &= ~(4096UL - 1); monitor_addr = addr; /* Reserve memory for malloc() */ addr -= CONFIG_SYS_MALLOC_LEN; #ifdef CONFIG_SYS_DMA_ALLOC_LEN /* Reserve DMA memory (must be cache aligned) */ addr &= ~(CONFIG_SYS_DCACHE_LINESZ - 1); addr -= CONFIG_SYS_DMA_ALLOC_LEN; #endif #ifdef CONFIG_LCD #ifdef CONFIG_FB_ADDR printf("LCD: Frame buffer allocated at preset 0x%08x\n", CONFIG_FB_ADDR); gd->fb_base = (void *)CONFIG_FB_ADDR; #else addr = lcd_setmem(addr); printf("LCD: Frame buffer allocated at 0x%08lx\n", addr); gd->fb_base = (void *)addr; #endif /* CONFIG_FB_ADDR */ #endif /* CONFIG_LCD */ /* Allocate a Board Info struct on a word boundary */ addr -= sizeof(bd_t); addr &= ~3UL; gd->bd = bd = (bd_t *)addr; /* Allocate a new global data copy on a 8-byte boundary. */ addr -= sizeof(gd_t); addr &= ~7UL; new_gd = (gd_t *)addr; /* And finally, a new, bigger stack. */ new_sp = (unsigned long *)addr; gd->stack_end = addr; *(--new_sp) = 0; *(--new_sp) = 0; /* * Initialize the board information struct with the * information we have. */ bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; bd->bi_dram[0].size = sdram_size; bd->bi_baudrate = gd->baudrate; memcpy(new_gd, gd, sizeof(gd_t)); relocate_code((unsigned long)new_sp, new_gd, monitor_addr); }