void TftpdStart(void) { ptr=0x80201000; //only for RT6855/RT6856/RT63365 #if defined(CONFIG_NET_MULTI) printf("Using %s device\n", eth_get_name()); #endif //puts(" \nTFTP from server "); print_IPaddr(NetServerIP); puts("\nOur IP address is:("); print_IPaddr(NetOurIP); puts(")\nWait for TFTP request...\n"); /* Check if we need to send across this subnet */ if (NetOurGatewayIP && NetOurSubnetMask) { IPaddr_t OurNet = NetOurIP & NetOurSubnetMask; IPaddr_t ServerNet = NetServerIP & NetOurSubnetMask; if (OurNet != ServerNet) { puts("; sending through gateway "); print_IPaddr(NetOurGatewayIP) ; } } memset(ptr,0,sizeof(ptr)); _tftpd_open(); }
static void BootpVendorProcess (u8 * ext, int size) { u8 *end = ext + size; debug_ext ("[BOOTP] Checking extension (%d bytes)...\n", size); while ((ext < end) && (*ext != 0xff)) { if (*ext == 0) { ext++; } else { u8 *opt = ext; ext += ext[1] + 2; if (ext <= end) BootpVendorFieldProcess (opt); } } #ifdef DEBUG_BOOTP_EXT puts ("[BOOTP] Received fields: \n"); if (NetOurSubnetMask) { puts ("NetOurSubnetMask : "); print_IPaddr (NetOurSubnetMask); putc ('\n'); } if (NetOurGatewayIP) { puts ("NetOurGatewayIP : "); print_IPaddr (NetOurGatewayIP); putc ('\n'); } if (NetBootFileSize) { printf ("NetBootFileSize : %d\n", NetBootFileSize); } if (NetOurHostName[0]) { printf ("NetOurHostName : %s\n", NetOurHostName); } if (NetOurRootPath[0]) { printf ("NetOurRootPath : %s\n", NetOurRootPath); } if (NetOurNISDomain[0]) { printf ("NetOurNISDomain : %s\n", NetOurNISDomain); } if (NetBootFileSize) { printf ("NetBootFileSize: %d\n", NetBootFileSize); } #endif /* DEBUG_BOOTP_EXT */ }
int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { int i; bd_t *bd = gd->bd; print_num ("arch_number", bd->bi_arch_number); print_num ("env_t", (ulong)bd->bi_env); print_num ("boot_params", (ulong)bd->bi_boot_params); for (i=0; i<CONFIG_NR_DRAM_BANKS; ++i) { print_num("DRAM bank", i); print_num("-> start", bd->bi_dram[i].start); print_num("-> size", bd->bi_dram[i].size); } #if defined(CONFIG_CMD_NET) puts ("ethaddr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } puts ( "\n" "ip_addr = "); print_IPaddr (bd->bi_ip_addr); #endif printf ("\n" "baudrate = %d bps\n", bd->bi_baudrate); return 0; }
int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { int i; bd_t *bd = gd->bd; printf("U-Boot = %s\n", bd->bi_r_version); printf("CPU = %s\n", bd->bi_cpu); printf("Board = %s\n", bd->bi_board_name); printf("VCO = %lu MHz\n", bd->bi_vco / 1000000); printf("CCLK = %lu MHz\n", bd->bi_cclk / 1000000); printf("SCLK = %lu MHz\n", bd->bi_sclk / 1000000); print_num("boot_params", (ulong)bd->bi_boot_params); print_num("memstart", (ulong)bd->bi_memstart); print_num("memsize", (ulong)bd->bi_memsize); print_num("flashstart", (ulong)bd->bi_flashstart); print_num("flashsize", (ulong)bd->bi_flashsize); print_num("flashoffset", (ulong)bd->bi_flashoffset); puts("ethaddr ="); for (i = 0; i < 6; ++i) printf("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); puts("\nip_addr = "); print_IPaddr(bd->bi_ip_addr); printf("\nbaudrate = %d bps\n", bd->bi_baudrate); return 0; }
int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { #if defined(CONFIG_CMD_NET) int i; #endif bd_t *bd = gd->bd; print_num ("mem start", (ulong)bd->bi_memstart); print_num ("mem size", (ulong)bd->bi_memsize); print_num ("flash start", (ulong)bd->bi_flashstart); print_num ("flash size", (ulong)bd->bi_flashsize); print_num ("flash offset", (ulong)bd->bi_flashoffset); #if defined(CFG_SRAM_BASE) print_num ("sram start", (ulong)bd->bi_sramstart); print_num ("sram size", (ulong)bd->bi_sramsize); #endif #if defined(CONFIG_CMD_NET) puts ("ethaddr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } puts ("\nip_addr = "); print_IPaddr (bd->bi_ip_addr); #endif printf ("\nbaudrate = %ld bps\n", bd->bi_baudrate); return 0; }
void TftpStart (void) { struct timestamp now; time_get(&now); #ifdef ET_DEBUG printf ("\nServer ethernet address %02x:%02x:%02x:%02x:%02x:%02x\n", NetServerEther[0], NetServerEther[1], NetServerEther[2], NetServerEther[3], NetServerEther[4], NetServerEther[5] ); #endif /* DEBUG */ printf ("TFTP from server %s", inet_ntoa(NetServerIP)); printf ("; our IP address is %s", inet_ntoa(NetOurIP)); // Check if we need to send across this subnet if (NetOurGatewayIP && NetOurSubnetMask) { IPaddr_t OurNet = NetOurIP & NetOurSubnetMask; IPaddr_t ServerNet = NetServerIP & NetOurSubnetMask; if (OurNet != ServerNet) { printf ("; sending through gateway "); print_IPaddr (NetOurGatewayIP) ; } } printf("\n"); printf ("Filename '%s'.", tftp_filename); if (NetBootFileSize) { printf (" Size is %d%s kB => %x Bytes", NetBootFileSize/2, (NetBootFileSize%2) ? ".5" : "", NetBootFileSize<<9); } printf("\n"); printf ("Load address: 0x%lx\n\n", get_board_desc()->memctrl_membase); printf ("Press Ctrl-C to abort...\n"); printf ("Loading: *\b"); NetSetTimeout (TIMEOUT * 1000, TftpTimeout); NetSetHandler (TftpHandler); TftpServerPort = WELL_KNOWN_PORT; TftpTimeoutCount = 0; TftpState = STATE_RRQ; TftpOurPort = 1024 + (now.usec % 3072); //FIXED TftpSend (); }
/* * Handle DHCP received packets. */ static void dhcp_handler(void *ctx, char *packet, unsigned int len) { char *pkt = net_eth_to_udp_payload(packet); struct udphdr *udp = net_eth_to_udphdr(packet); struct bootp *bp = (struct bootp *)pkt; len = net_eth_to_udplen(packet); debug("DHCPHandler: got packet: (len=%d) state: %d\n", len, dhcp_state); if (bootp_check_packet(pkt, ntohs(udp->uh_sport), len)) /* Filter out pkts we don't want */ return; switch (dhcp_state) { case SELECTING: /* * Wait an appropriate time for any potential DHCPOFFER packets * to arrive. Then select one, and generate DHCPREQUEST response. * If filename is in format we recognize, assume it is a valid * OFFER from a server we want. */ debug ("%s: state SELECTING, bp_file: \"%s\"\n", __func__, bp->bp_file); dhcp_state = REQUESTING; if (net_read_uint32((uint32_t *)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) dhcp_options_process((u8 *)&bp->bp_vend[4], bp); bootp_copy_net_params(bp); /* Store net params from reply */ dhcp_start = get_time_ns(); dhcp_send_request_packet(bp); break; case REQUESTING: debug ("%s: State REQUESTING\n", __func__); if (dhcp_message_type((u8 *)bp->bp_vend) == DHCP_ACK ) { if (net_read_uint32((uint32_t *)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) dhcp_options_process((u8 *)&bp->bp_vend[4], bp); bootp_copy_net_params(bp); /* Store net params from reply */ dhcp_state = BOUND; puts ("DHCP client bound to address "); print_IPaddr(net_get_ip()); putchar('\n'); return; } break; default: debug("%s: INVALID STATE\n", __func__); break; } }
static int do_host(int argc, char *argv[]) { IPaddr_t ip; if (argc != 2) return COMMAND_ERROR_USAGE; ip = resolv(argv[1]); if (!ip) printf("unknown host %s\n", argv[1]); else { printf("%s is at ", argv[1]); print_IPaddr(ip); printf("\n"); } return 0; }
int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { int i; bd_t *bd = gd->bd; print_num ("memstart", (ulong)bd->bi_memstart); print_num ("memsize", (ulong)bd->bi_memsize); print_num ("flashstart", (ulong)bd->bi_flashstart); print_num ("flashsize", (ulong)bd->bi_flashsize); print_num ("flashoffset", (ulong)bd->bi_flashoffset); puts ("ethaddr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } puts ("\nip_addr = "); print_IPaddr (bd->bi_ip_addr); printf ("\nbaudrate = %ld bps\n", bd->bi_baudrate); return 0; }
/* * Boot support */ #include <common.h> #include <command.h> #include <net.h> /* for print_IPaddr */ DECLARE_GLOBAL_DATA_PTR; static void print_num(const char *, ulong); #ifndef CONFIG_ARM /* PowerPC and other */ #ifdef CONFIG_PPC static void print_str(const char *, const char *); int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { int i; bd_t *bd = gd->bd; char buf[32]; #ifdef DEBUG print_num ("bd address", (ulong)bd ); #endif print_num ("memstart", bd->bi_memstart ); print_num ("memsize", bd->bi_memsize ); print_num ("flashstart", bd->bi_flashstart ); print_num ("flashsize", bd->bi_flashsize ); print_num ("flashoffset", bd->bi_flashoffset ); print_num ("sramstart", bd->bi_sramstart ); print_num ("sramsize", bd->bi_sramsize ); #if defined(CONFIG_5xx) || defined(CONFIG_8xx) || \ defined(CONFIG_8260) || defined(CONFIG_E500) print_num ("immr_base", bd->bi_immr_base ); #endif print_num ("bootflags", bd->bi_bootflags ); #if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \ defined(CONFIG_405EP) || defined(CONFIG_XILINX_ML300) || \ defined(CONFIG_440EP) || defined(CONFIG_440GR) || \ defined(CONFIG_440EPX) || defined(CONFIG_440GRX) || \ defined(CONFIG_440SP) || defined(CONFIG_440SPE) print_str ("procfreq", strmhz(buf, bd->bi_procfreq)); print_str ("plb_busfreq", strmhz(buf, bd->bi_plb_busfreq)); #if defined(CONFIG_405GP) || defined(CONFIG_405EP) || defined(CONFIG_XILINX_ML300) || \ defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_440SPE) || \ defined(CONFIG_440EPX) || defined(CONFIG_440GRX) print_str ("pci_busfreq", strmhz(buf, bd->bi_pci_busfreq)); #endif #else /* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_ML300, CONFIG_440EP CONFIG_440GR */ #if defined(CONFIG_CPM2) print_str ("vco", strmhz(buf, bd->bi_vco)); print_str ("sccfreq", strmhz(buf, bd->bi_sccfreq)); print_str ("brgfreq", strmhz(buf, bd->bi_brgfreq)); #endif print_str ("intfreq", strmhz(buf, bd->bi_intfreq)); #if defined(CONFIG_CPM2) print_str ("cpmfreq", strmhz(buf, bd->bi_cpmfreq)); #endif print_str ("busfreq", strmhz(buf, bd->bi_busfreq)); #endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_ML300, CONFIG_440EP CONFIG_440GR */ #if defined(CONFIG_MPC8220) print_str ("inpfreq", strmhz(buf, bd->bi_inpfreq)); print_str ("flbfreq", strmhz(buf, bd->bi_flbfreq)); print_str ("pcifreq", strmhz(buf, bd->bi_pcifreq)); print_str ("vcofreq", strmhz(buf, bd->bi_vcofreq)); print_str ("pevfreq", strmhz(buf, bd->bi_pevfreq)); #endif puts ("ethaddr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } #if defined(CONFIG_HAS_ETH1) puts ("\neth1addr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enet1addr[i]); } #endif #if defined(CONFIG_HAS_ETH2) puts ("\neth2addr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enet2addr[i]); } #endif #if defined(CONFIG_HAS_ETH3) puts ("\neth3addr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enet3addr[i]); } #endif #ifdef CONFIG_HERMES print_str ("ethspeed", strmhz(buf, bd->bi_ethspeed)); #endif puts ("\nIP addr = "); print_IPaddr (bd->bi_ip_addr); printf ("\nbaudrate = %6ld bps\n", bd->bi_baudrate ); return 0; } #elif defined(CONFIG_NIOS) /* NIOS*/ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { int i; bd_t *bd = gd->bd; print_num ("memstart", (ulong)bd->bi_memstart); print_num ("memsize", (ulong)bd->bi_memsize); print_num ("flashstart", (ulong)bd->bi_flashstart); print_num ("flashsize", (ulong)bd->bi_flashsize); print_num ("flashoffset", (ulong)bd->bi_flashoffset); puts ("ethaddr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } puts ("\nip_addr = "); print_IPaddr (bd->bi_ip_addr); printf ("\nbaudrate = %ld bps\n", bd->bi_baudrate); return 0; } #elif defined(CONFIG_NIOS2) /* Nios-II */ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { #if defined(CONFIG_CMD_NET) int i; #endif bd_t *bd = gd->bd; print_num ("mem start", (ulong)bd->bi_memstart); print_num ("mem size", (ulong)bd->bi_memsize); print_num ("flash start", (ulong)bd->bi_flashstart); print_num ("flash size", (ulong)bd->bi_flashsize); print_num ("flash offset", (ulong)bd->bi_flashoffset); #if defined(CFG_SRAM_BASE) print_num ("sram start", (ulong)bd->bi_sramstart); print_num ("sram size", (ulong)bd->bi_sramsize); #endif #if defined(CONFIG_CMD_NET) puts ("ethaddr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } puts ("\nip_addr = "); print_IPaddr (bd->bi_ip_addr); #endif printf ("\nbaudrate = %ld bps\n", bd->bi_baudrate); return 0; } #elif defined(CONFIG_MICROBLAZE) /* ! PPC, which leaves Microblaze */ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { int i; bd_t *bd = gd->bd; print_num ("mem start ", (ulong)bd->bi_memstart); print_num ("mem size ", (ulong)bd->bi_memsize); print_num ("flash start ", (ulong)bd->bi_flashstart); print_num ("flash size ", (ulong)bd->bi_flashsize); print_num ("flash offset ", (ulong)bd->bi_flashoffset); #if defined(CFG_SRAM_BASE) print_num ("sram start ", (ulong)bd->bi_sramstart); print_num ("sram size ", (ulong)bd->bi_sramsize); #endif #if defined(CONFIG_CMD_NET) puts ("ethaddr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } puts ("\nip_addr = "); print_IPaddr (bd->bi_ip_addr); #endif printf ("\nbaudrate = %d bps\n", (ulong)bd->bi_baudrate); return 0; } #elif defined(CONFIG_SPARC) /* SPARC */ int do_bdinfo(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) { bd_t *bd = gd->bd; #if defined(CONFIG_CMD_NET) int i; #endif #ifdef DEBUG print_num("bd address ", (ulong) bd); #endif print_num("memstart ", bd->bi_memstart); print_num("memsize ", bd->bi_memsize); print_num("flashstart ", bd->bi_flashstart); print_num("CFG_MONITOR_BASE ", CFG_MONITOR_BASE); print_num("CFG_ENV_ADDR ", CFG_ENV_ADDR); printf("CFG_RELOC_MONITOR_BASE = 0x%lx (%d)\n", CFG_RELOC_MONITOR_BASE, CFG_MONITOR_LEN); printf("CFG_MALLOC_BASE = 0x%lx (%d)\n", CFG_MALLOC_BASE, CFG_MALLOC_LEN); printf("CFG_INIT_SP_OFFSET = 0x%lx (%d)\n", CFG_INIT_SP_OFFSET, CFG_STACK_SIZE); printf("CFG_PROM_OFFSET = 0x%lx (%d)\n", CFG_PROM_OFFSET, CFG_PROM_SIZE); printf("CFG_GBL_DATA_OFFSET = 0x%lx (%d)\n", CFG_GBL_DATA_OFFSET, CFG_GBL_DATA_SIZE); #if defined(CONFIG_CMD_NET) puts("ethaddr ="); for (i = 0; i < 6; ++i) { printf("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } puts("\nIP addr = "); print_IPaddr(bd->bi_ip_addr); #endif printf("\nbaudrate = %6ld bps\n", bd->bi_baudrate); return 0; }
int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { int i; bd_t *bd = gd->bd; char buf[32]; #ifdef DEBUG print_num ("bd address", (ulong)bd ); #endif print_num ("memstart", bd->bi_memstart ); print_num ("memsize", bd->bi_memsize ); print_num ("flashstart", bd->bi_flashstart ); print_num ("flashsize", bd->bi_flashsize ); print_num ("flashoffset", bd->bi_flashoffset ); print_num ("sramstart", bd->bi_sramstart ); print_num ("sramsize", bd->bi_sramsize ); #if defined(CONFIG_5xx) || defined(CONFIG_8xx) || \ defined(CONFIG_8260) || defined(CONFIG_E500) print_num ("immr_base", bd->bi_immr_base ); #endif print_num ("bootflags", bd->bi_bootflags ); #if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \ defined(CONFIG_405EP) || defined(CONFIG_XILINX_ML300) || \ defined(CONFIG_440EP) || defined(CONFIG_440GR) || \ defined(CONFIG_440EPX) || defined(CONFIG_440GRX) || \ defined(CONFIG_440SP) || defined(CONFIG_440SPE) print_str ("procfreq", strmhz(buf, bd->bi_procfreq)); print_str ("plb_busfreq", strmhz(buf, bd->bi_plb_busfreq)); #if defined(CONFIG_405GP) || defined(CONFIG_405EP) || defined(CONFIG_XILINX_ML300) || \ defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_440SPE) || \ defined(CONFIG_440EPX) || defined(CONFIG_440GRX) print_str ("pci_busfreq", strmhz(buf, bd->bi_pci_busfreq)); #endif #else /* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_ML300, CONFIG_440EP CONFIG_440GR */ #if defined(CONFIG_CPM2) print_str ("vco", strmhz(buf, bd->bi_vco)); print_str ("sccfreq", strmhz(buf, bd->bi_sccfreq)); print_str ("brgfreq", strmhz(buf, bd->bi_brgfreq)); #endif print_str ("intfreq", strmhz(buf, bd->bi_intfreq)); #if defined(CONFIG_CPM2) print_str ("cpmfreq", strmhz(buf, bd->bi_cpmfreq)); #endif print_str ("busfreq", strmhz(buf, bd->bi_busfreq)); #endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_ML300, CONFIG_440EP CONFIG_440GR */ #if defined(CONFIG_MPC8220) print_str ("inpfreq", strmhz(buf, bd->bi_inpfreq)); print_str ("flbfreq", strmhz(buf, bd->bi_flbfreq)); print_str ("pcifreq", strmhz(buf, bd->bi_pcifreq)); print_str ("vcofreq", strmhz(buf, bd->bi_vcofreq)); print_str ("pevfreq", strmhz(buf, bd->bi_pevfreq)); #endif puts ("ethaddr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } #if defined(CONFIG_HAS_ETH1) puts ("\neth1addr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enet1addr[i]); } #endif #if defined(CONFIG_HAS_ETH2) puts ("\neth2addr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enet2addr[i]); } #endif #if defined(CONFIG_HAS_ETH3) puts ("\neth3addr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enet3addr[i]); } #endif #ifdef CONFIG_HERMES print_str ("ethspeed", strmhz(buf, bd->bi_ethspeed)); #endif puts ("\nIP addr = "); print_IPaddr (bd->bi_ip_addr); printf ("\nbaudrate = %6ld bps\n", bd->bi_baudrate ); return 0; }
int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { int i; bd_t *bd = gd->bd; char buf[32]; print_num ("memstart", (ulong)bd->bi_memstart); print_num ("memsize", (ulong)bd->bi_memsize); print_num ("flashstart", (ulong)bd->bi_flashstart); print_num ("flashsize", (ulong)bd->bi_flashsize); print_num ("flashoffset", (ulong)bd->bi_flashoffset); #if defined(CFG_INIT_RAM_ADDR) print_num ("sramstart", (ulong)bd->bi_sramstart); print_num ("sramsize", (ulong)bd->bi_sramsize); #endif #if defined(CFG_MBAR) print_num ("mbar", bd->bi_mbar_base); #endif print_str ("busfreq", strmhz(buf, bd->bi_busfreq)); #ifdef CONFIG_PCI print_str ("pcifreq", strmhz(buf, bd->bi_pcifreq)); #endif #ifdef CONFIG_EXTRA_CLOCK print_str ("flbfreq", strmhz(buf, bd->bi_flbfreq)); print_str ("inpfreq", strmhz(buf, bd->bi_inpfreq)); print_str ("vcofreq", strmhz(buf, bd->bi_vcofreq)); #endif #if defined(CONFIG_CMD_NET) puts ("ethaddr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } #if defined(CONFIG_HAS_ETH1) puts ("\neth1addr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enet1addr[i]); } #endif #if defined(CONFIG_HAS_ETH2) puts ("\neth2addr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enet2addr[i]); } #endif #if defined(CONFIG_HAS_ETH3) puts ("\neth3addr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enet3addr[i]); } #endif puts ("\nip_addr = "); print_IPaddr (bd->bi_ip_addr); #endif printf ("\nbaudrate = %d bps\n", bd->bi_baudrate); return 0; }
static void TftpHandler(uchar * pkt, unsigned dest, unsigned src, unsigned len) { ushort proto; int i; static int ledcount=0,ledstate=1; if (dest != TftpOurPort) { return; } /* don't care the packets that donot send to TFTP port */ if (TftpState != STATE_RRQ && src != TftpServerPort) { return; } if (len < 2) { return; } #if 0 if (0==ledcount%64)/*the led flicker when packet received*/ { ledstate+=1; ledstate%=2; } if(0==ledstate%2) LEDON(11); else LEDOFF(11); ++ledcount; if (0xffffff==i) i=0; #endif len -= 2; /* warning: don't use increment (++) in ntohs() macros!! */ proto = *((ushort *)pkt)++; switch (ntohs(proto)) { case TFTP_RRQ: printf("\n Get read request from:("); print_IPaddr(TempServerIP); printf(")\n"); NetCopyIP(&NetServerIP,&TempServerIP); TftpServerPort = src; TftpBlock = 1; TftpBlockWrapOffset = 0; TftpState = STATE_RRQ; for (i=0; i<13; i++) { if (*((uint8_t *)pkt)++ != asuslink[i]) break; } if (i==13) { /* it's the firmware transmitting situation */ /* here get the IP address from the first packet. */ NetOurIP = (*((uint8_t *)pkt)++) & 0x000000ff; NetOurIP<<=8; NetOurIP|= (*((uint8_t *)pkt)++) & 0x000000ff; NetOurIP<<=8; NetOurIP|= (*((uint8_t *)pkt)++) & 0x000000ff; NetOurIP<<=8; NetOurIP|= (*((uint8_t *)pkt)++) & 0x000000ff; } else { for (i=0; i<13; i++) { if (*((uint8_t *)pkt)++ != maclink[i]) break; } if(i==13) { /* here get the IP address from the first packet. */ NetOurIP = (*((uint8_t *)pkt)++)& 0x000000ff; NetOurIP<<=8; NetOurIP|=(*((uint8_t *)pkt)++)& 0x000000ff; NetOurIP<<=8; NetOurIP|=(*((uint8_t *)pkt)++)& 0x000000ff; NetOurIP<<=8; NetOurIP|=(*((uint8_t *)pkt)++)& 0x000000ff; } } TftpdSend();//send a vacant Data packet as a ACK break; case TFTP_WRQ: TftpServerPort = src; TftpBlock = 0; TftpState = STATE_WRQ; TftpdSend(); break; case TFTP_DATA: if (len < 2) return; len -= 2; TftpBlock = ntohs(*(ushort *)pkt); /* * RFC1350 specifies that the first data packet will * have sequence number 1. If we receive a sequence * number of 0 this means that there was a wrap * around of the (16 bit) counter. */ if (TftpBlock == 0) { printf("\n\t %lu MB reveived\n\t ", TftpBlockWrapOffset>>20); } else { if (((TftpBlock - 1) % 10) == 0)
int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { DECLARE_GLOBAL_DATA_PTR; #if CONFIG_CMD_BDI_DUMP_EMI_BANKS #if !defined(ST40_EMI_SIZE) #define ST40_EMI_SIZE (128 << 20) /* EMI is usually 128 MiB */ #endif /* ST40_EMI_SIZE */ #define MAX_EMI_BANKS 6 /* Maximum of 6 EMI Banks */ const u32 emi_base = 0xa0000000u; u32 base[MAX_EMI_BANKS+1]; /* Base address for each bank */ u32 enabled; /* number of enabled EMI banks */ #endif /* CONFIG_CMD_BDI_DUMP_EMI_BANKS */ #if defined(CONFIG_CMD_NET) || CONFIG_CMD_BDI_DUMP_EMI_BANKS unsigned int i; #endif bd_t *bd = gd->bd; print_num ("boot_params", (ulong)bd->bi_boot_params); print_num ("memstart", (ulong)bd->bi_memstart); print_mem ("memsize", (ulong)bd->bi_memsize); #ifndef CFG_NO_FLASH print_num ("flashstart", (ulong)bd->bi_flashstart); print_mem ("flashsize", (ulong)bd->bi_flashsize); print_num ("flashoffset", (ulong)bd->bi_flashoffset); #endif /* CFG_NO_FLASH */ #if defined(CONFIG_CMD_NET) puts ("ethaddr ="); for (i=0; i<6; ++i) { printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]); } puts ("\nip_addr = "); print_IPaddr (bd->bi_ip_addr); #endif printf ("\nbaudrate = %d bps\n", bd->bi_baudrate); #if defined(CONFIG_SH_STB7100) if (STB7100_DEVICEID_7109(bd->bi_devid)) printf ("\nSTb7109 version %ld.x", STB7100_DEVICEID_CUT(bd->bi_devid)); else if (STB7100_DEVICEID_7100(bd->bi_devid)) printf ("\nSTb7100 version %ld.x", STB7100_DEVICEID_CUT(bd->bi_devid)); #elif defined(CONFIG_SH_STX5197) if (STX5197_DEVICEID_5197(bd->bi_devid)) printf ("\nSTx5197 version %ld.x", STX5197_DEVICEID_CUT(bd->bi_devid)); #elif defined(CONFIG_SH_STX5206) if (STX5206_DEVICEID_5206(bd->bi_devid)) printf ("\nSTx5206/STx5289 version %ld.x", STX5206_DEVICEID_CUT(bd->bi_devid)); #elif defined(CONFIG_SH_STX7105) if (STX7105_DEVICEID_7105(bd->bi_devid)) printf ("\nSTx7105 version %ld.x", STX7105_DEVICEID_CUT(bd->bi_devid)); #elif defined(CONFIG_SH_STX7108) if (STX7108_DEVICEID_7108(bd->bi_devid)) printf ("\nSTx7108 version %ld.x", STX7108_DEVICEID_CUT(bd->bi_devid)); #elif defined(CONFIG_SH_STX7111) if (STX7111_DEVICEID_7111(bd->bi_devid)) printf ("\nSTx7111 version %ld.x", STX7111_DEVICEID_CUT(bd->bi_devid)); #elif defined(CONFIG_SH_STX7141) if (STX7141_DEVICEID_7141(bd->bi_devid)) printf ("\nSTx7141 version %ld.x", STX7141_DEVICEID_CUT(bd->bi_devid)); #elif defined(CONFIG_SH_STX7200) if (STX7200_DEVICEID_7200(bd->bi_devid)) printf ("\nSTx7200 version %ld.x", STX7200_DEVICEID_CUT(bd->bi_devid)); #elif defined(CONFIG_SH_FLI7510) if (FLI7510_DEVICEID_7510(bd->bi_devid)) printf ("\nFLI7510 version %ld.x", FLI7510_DEVICEID_CUT(bd->bi_devid)); #elif defined(CONFIG_SH_FLI7540) if (FLI7540_DEVICEID_7540(bd->bi_devid)) printf ("\nFLI7540 version %ld.x", FLI7540_DEVICEID_CUT(bd->bi_devid)); #else #error Missing Device Definitions! #endif else printf ("\nUnknown device! (id=0x%08lx)", bd->bi_devid); #ifdef CONFIG_SH_SE_MODE printf (" [32-bit mode]\n"); #else printf (" [29-bit mode]\n"); #endif #ifdef CONFIG_SH_STB7100 print_mhz ("PLL0", bd->bi_pll0frq); print_mhz ("PLL1", bd->bi_pll1frq); print_mhz ("ST40 CPU", bd->bi_st40cpufrq); print_mhz ("ST40 BUS", bd->bi_st40busfrq); print_mhz ("ST40 PER", bd->bi_st40perfrq); print_mhz ("ST231 CPU", bd->bi_st231frq); print_mhz ("ST BUS", bd->bi_stbusfrq); print_mhz ("EMI", bd->bi_emifrq); print_mhz ("LMI", bd->bi_lmifrq); #else print_mhz ("EMI", bd->bi_emifrq); #endif /* CONFIG_SH_STB7100 */ #if CONFIG_CMD_BDI_DUMP_EMI_BANKS enabled = *ST40_EMI_BANK_ENABLE; printf("#EMI Banks = %u\n", enabled); if (enabled > MAX_EMI_BANKS) { printf("Error: Maximum Number of Enabled Banks should be %u\n", MAX_EMI_BANKS); enabled = MAX_EMI_BANKS; } /* * EmiBaseAddress[5:0] == Address[27:22] (Multiple of 4MiB) * * Retreive all the configured EMI bank bases into base[]. */ for(i=0; i<enabled; i++) { const u32 start = *ST40_EMI_BASEADDRESS(i) & 0x3fu; base[i] = emi_base + (start << (22)); } /* last valid bank occupies all remaining space */ base[i] = emi_base + ST40_EMI_SIZE; /* total size of EMI is usually 128MiB */ /* * Print out the ranges of each bank. */ for(i=0; i<enabled; i++) { const u32 lower = base[i]; const u32 upper = base[i+1]; printf ("EMI #%u CS%c = 0x%08X ... 0x%08X (", i, 'A' + i, lower, upper-1u); print_size (upper-lower, ")\n"); } #endif /* CONFIG_CMD_BDI_DUMP_EMI_BANKS */ return 0; }
static void TftpHandler(uchar * pkt, unsigned dest, unsigned src, unsigned len) { ushort proto; int i; if (dest != TftpOurPort) { return; } /* don't care the packets that donot send to TFTP port */ if (TftpState != STATE_RRQ && src != TftpServerPort) { return; } if (len < 2) { return; } len -= 2; /* warning: don't use increment (++) in ntohs() macros!! */ proto = *((ushort *)pkt)++; switch (ntohs(proto)) { case TFTP_RRQ: printf("\n Get read request from:("); print_IPaddr(TempServerIP); printf(")\n"); NetCopyIP(&NetServerIP,&TempServerIP); TftpServerPort = src; TftpBlock = 1; TftpBlockWrapOffset = 0; TftpState = STATE_RRQ; TftpdSend();//send a vacant Data packet as a ACK break; case TFTP_WRQ: TftpServerPort = src; TftpBlock = 0; TftpState = STATE_WRQ; TftpdSend(); break; case TFTP_DATA: if (len < 2) return; len -= 2; TftpBlock = ntohs(*(ushort *)pkt); /* * RFC1350 specifies that the first data packet will * have sequence number 1. If we receive a sequence * number of 0 this means that there was a wrap * around of the (16 bit) counter. */ if (TftpBlock == 0) { printf("\n\t %lu MB reveived\n\t ", TftpBlockWrapOffset>>20); } else { if (((TftpBlock - 1) % 10) == 0)