OK6410A 开发板 (五) 2 OK6410A u-boot-2021.01 ethernet SRAM接口

代码位于
https://github.com/lisider/u-boot/tree/ok6410a
提交id : 1334ebb659844e51b60bbbdbce5b3d7da7d82e2c

代码include/configs/ok6410a.h 中的 
	CONFIG_DM9000_BASE 为 0x18000000 或者 0x18000300  都可以
	因为都在 SROMC Bank 1
  • eth_legacy ping 流程(硬件无关)
static init_fnc_t init_sequence_r[] = {
    
    
	initr_net
		eth_initialize
			board_eth_init 				// board/samsung/ok6410a/ok6410a.c
				dm9000_initialize		// drivers/net/dm9000x.c
					eth_register
						if (!eth_devices) {
    
    
						eth_devices = dev;
						eth_current = dev; // 等同于 drivers/net/dm9000x.c 中的 dm9000_info.netdev
						}


do_ping
	net_loop
		if (eth_is_on_demand_init() || protocol != NETCONS) {
    
    
		eth_halt
			eth_current->halt
		eth_init
			eth_current->init
		}

		switch (net_check_prereq(protocol)) {
    
    
		case 0:
			switch (protocol) {
    
    
			case PING:
				ping_start();
					ping_send
						arp_request
							arp_raw_request
								net_send_packet
									eth_send
										eth_current->send
			}
		}


		for (;;) {
    
    
			eth_rx
				eth_current->recv // 等同于 dm9000_rx
					

			switch (net_state) {
    
    
				case NETLOOP_CONTINUE:
				continue;
				case NETLOOP_SUCCESS:
				eth_halt
					eth_current->halt
			}
		}
  • eth_legacy ping 流程(硬件dm9000相关)
dm9000_rx						// drivers/net/dm9000x.c
	net_process_received_packet
		receive_icmp
			ping_receive(et, ip, len);
				net_set_state(NETLOOP_SUCCESS);
					net_state = state;

猜你喜欢

转载自blog.csdn.net/u011011827/article/details/114662105