Могу предложить новый метод отладки всего этого хозяйства.
Я скрестил исходники telnet+uIP с моими исходниками эмуляции rtl8019as. И отлаживал уже в IDE.
Как и следовало ожидать, ничего не заработало. Кроме того, грузит процессор чуть ли не на 100%, но это, в принципе, понятно. Стал копать, выяснил, что в определённый момент отправка/приём деактивируется и больше не активируется. И момент этот - в самом конце приёма пакета. Если, однако, после приёма происходит отправка, то отправка/приём снова реанимируется. Получается, если приняли пакет, и ничего не отправили, то вилы.
А получается это, потому-что включение страницы регистров ты сделал так:
А в оригинале было так:Код:#define ETHERDEV_REG_PAGE(page) ETHERDEV_REG_WRITE(CR,(page << 6)|RD2|STP)
Поэтому, после того, как я сделал:Код:#define ETHERDEV_SELECT_REG_PAGE(page) \ do \ { \ etherdev_reg_write(CR, etherdev_reg_read(CR) & ~(PS1 | PS0)); \ etherdev_reg_write(CR, etherdev_reg_read(CR) | (page << 6)); \ } while(0)
всё заработало и у меня.Код:#define ETHERDEV_REG_PAGE(page) ETHERDEV_REG_WRITE(CR,(page << 6) | (ETHERDEV_REG_READ(CR) & 0x3F))






Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
