Всем привет. Есть у меня вышеозначенная микросхема. К ней подключен ПЛИС. Написал простой модуль приема/передачи пакетов. Суть такая:
Отправка пакета в сеть:
1. Приходит запрос от ядра LInux на передачу пакета в сеть - добавляю нулями, если пакет короткий, от всего пакета считаю CRC и записываю в хвост.
2. Выставляю сигнал TX_EN на микрухе phy, и шлю по интерфейсу RMII в нее биты "00". Так делаю 28 раз. Много-не мало.
3. Отправляю 7 байт "10101010".
4. Отправляю один байт "10101011".
5. Все данные, что пришли от ядра ОС идут следом+моя подсчитанная CRC. С крайними данными CRC снимаю сигнал TX_EN.
Прием вроде работает.
Все пакеты что ОС отправляет и принемает - вывожу на экран.
При подключении кабелем к отдельно стоящему компу пинг работает. Но как только пытаюсь поднять FTP - формируется в ядре пакет длиной 74 байта, я его пытаюсь передать - он уходит, а вот ответ не приходит.Смотрел осцилографом на RMII ногах микросхемы - картинка в точности такая же, как я описал выше в алгоритме действий. CRC также совпадает, так как для верности считаю ее и программно(это чтоб потом можно было сравнить с той, что в ПЛИС.)
Может кто сталкивался с подобной проблемой? Может еще необходимо что-то реализовать? У меня реализован только прием/передача пакетов. Настраивается phy сама, MDIO интерфейса с ней нет.
Заранее спасибо.