d_wanderer 0 12 сентября, 2007 Опубликовано 12 сентября, 2007 · Жалоба Собрал плату. В качестве PHY - Микрел KSZ8001BLI. Пинг работает. TFTP нет. Вылетает при приеме пакета - длина принятого пакета на единицу меньше требуемой. Другая плата (тестовая) работает на этом же коде без вопросов. Правда там стоит KSZ8001BL. Вопрос - что может быть? В чем закавыка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bagot 0 12 сентября, 2007 Опубликовано 12 сентября, 2007 · Жалоба Собрал плату. В качестве PHY - Микрел KSZ8001BLI. Пинг работает. TFTP нет. Вылетает при приеме пакета - длина принятого пакета на единицу меньше требуемой. Другая плата (тестовая) работает на этом же коде без вопросов. Правда там стоит KSZ8001BL. Вопрос - что может быть? В чем закавыка? Я сейчас работаю над ETHERNET/IP/UDP/TFTP/MODBUS - связкой от uIP и думаю дело в дровах под ваш KSZ8001BLI МАС-контроллер. Придется покопаться там, внизу стэка. А у вас что за стэк, от кого? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
d_wanderer 0 13 сентября, 2007 Опубликовано 13 сентября, 2007 · Жалоба Я сейчас работаю над ETHERNET/IP/UDP/TFTP/MODBUS - связкой от uIP и думаю дело в дровах под ваш KSZ8001BLI МАС-контроллер. Придется покопаться там, внизу стэка. А у вас что за стэк, от кого? Я же написал - U-Boot. А стек там похож на uIP. Понятно что проблема либо с контроллером, либо с PHY, чем BL отличается от BLI кроме расширенного диапазона и кода? Есть еще одно предположение, что как то не так проиисходит чтение пакета в самом контроллере. Хотя я поглядел обновления - вроде ничего не изменилось... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
d_wanderer 0 14 сентября, 2007 Опубликовано 14 сентября, 2007 · Жалоба В результате исследований. получен следующий результат. В драйвере контроллера Ethernet при приеме длина принимаемого фрамента на единицу меньше требуемой. Сами данные принимаемые вполне адекватны. rxStatusAddr = (u32*)(RX_STATUS_ADDR + rxConsumeIndex * 8); recvSize = m_nic_read(rxStatusAddr); if ((recvSize & RX_DESC_STATUS_LAST) == 0) { printk("emac_rx: NOT LAST fragment\n"); } recvSize = (recvSize & DESC_SIZE_MASK) + 1; recvAddr = (u32*)(RX_DESCRIPTOR_ADDR + rxConsumeIndex * 8); Не совсем понимаю что делать. Помогите пожалуйста разобраться... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 1 октября, 2007 Опубликовано 1 октября, 2007 (изменено) · Жалоба Я сейчас столкнулся с расхождениями DP83848 C и I. На демоплате стоит C. На моей I. При том же коде при запущеном отладчике PHY не видит LINK, однако таже прошивка при прошитом контроллере работает. Без j-tag'а программу отладить практически не возможно. Уже думаю перепаять эти PHY и убедиться так это или нет. По даташитам разницы нет :( А вы не пробовали PHY с демоплаты поставить на свою? Изменено 1 октября, 2007 пользователем Vitaliy_ARM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба Поставил на демо плату PHY с индексом I. И все заработало нормально. Значит скорее в плате проблема Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться