代码位于
https://github.com/lisider/u-boot/tree/ok6410a
提交id : 1334ebb659844e51b60bbbdbce5b3d7da7d82e2c
代码include/configs/ok6410a.h 中的
CONFIG_DM9000_BASE 为 0x18000000 或者 0x18000300 都可以
因为都在 SROMC Bank 1 内
static init_fnc_t init_sequence_r[] = {
initr_net
eth_initialize
board_eth_init
dm9000_initialize
eth_register
if (!eth_devices) {
eth_devices = dev;
eth_current = dev;
}
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
switch (net_state) {
case NETLOOP_CONTINUE:
continue;
case NETLOOP_SUCCESS:
eth_halt
eth_current->halt
}
}
- eth_legacy ping 流程(硬件dm9000相关)
dm9000_rx
net_process_received_packet
receive_icmp
ping_receive(et, ip, len);
net_set_state(NETLOOP_SUCCESS);
net_state = state;