Прикручиваю к проекту в Keil TCPNet, драйвер под LAN8720 работает, соединение ловит, идентификатор вычитывает, но при запуске стека, если использовать DHCP, то происходит падение процессора в HardFault. В режиме отладки получаю следующий лог:
Код
000.0 MEM:Init MemPool 2000 bytes
000.0 ETH:Init interface
000.0 ARP:Init Cache, 10 entries
000.0 IP :Init localhost
000.0 ICMP:Init Engine
000.0 UDP:Init 5 Sockets
000.0 TCP:Init 5 Sockets
000.0 TCP: Local MSS: 1460
000.0 NBNS:Init Name Service
000.0 UDP:Socket 1 allocated
000.0 UDP:Open Socket 1, LocPort 137
000.0 DHCP:Init Client
000.0 UDP:Socket 2 allocated
000.0 UDP:Open Socket 2, LocPort 68
000.1 DHCP:State INIT
000.1 DHCP: Sending BCast DHCP_DISCOVER
000.1 MEM:Alloc 356 bytes
000.0 ETH:Init interface
000.0 ARP:Init Cache, 10 entries
000.0 IP :Init localhost
000.0 ICMP:Init Engine
000.0 UDP:Init 5 Sockets
000.0 TCP:Init 5 Sockets
000.0 TCP: Local MSS: 1460
000.0 NBNS:Init Name Service
000.0 UDP:Socket 1 allocated
000.0 UDP:Open Socket 1, LocPort 137
000.0 DHCP:Init Client
000.0 UDP:Socket 2 allocated
000.0 UDP:Open Socket 2, LocPort 68
000.1 DHCP:State INIT
000.1 DHCP: Sending BCast DHCP_DISCOVER
000.1 MEM:Alloc 356 bytes
Очень большие подозрения, что падение из-за выделения памяти. Точнее не могу сказать, не знаю, как в этом закрытом стеке что-то еще смотреть.
Если не активировать DHCP, то инициализация проходит нормально с таким логом:
Код
000.0 MEM:Init MemPool 2000 bytes
000.0 ETH:Init interface
000.0 ARP:Init Cache, 10 entries
000.0 IP :Init localhost
000.0 ICMP:Init Engine
000.0 UDP:Init 5 Sockets
000.0 TCP:Init 5 Sockets
000.0 TCP: Local MSS: 1460
000.0 NBNS:Init Name Service
000.0 UDP:Socket 1 allocated
000.0 UDP:Open Socket 1, LocPort 137
000.0 ETH:Init interface
000.0 ARP:Init Cache, 10 entries
000.0 IP :Init localhost
000.0 ICMP:Init Engine
000.0 UDP:Init 5 Sockets
000.0 TCP:Init 5 Sockets
000.0 TCP: Local MSS: 1460
000.0 NBNS:Init Name Service
000.0 UDP:Socket 1 allocated
000.0 UDP:Open Socket 1, LocPort 137
Что бы это могло быть, в какую сторону копать?