Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2468 rev A и Ethernet
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Dimitry_
Собрал плату. В качестве PHY - Микрел KSZ8001BLI. Пинг работает. TFTP нет. Вылетает при приеме пакета - длина принятого пакета на единицу меньше требуемой. Другая плата (тестовая) работает на этом же коде без вопросов. Правда там стоит KSZ8001BL. Вопрос - что может быть? В чем закавыка?
Цырен
Цитата(Dimitry_ @ Sep 12 2007, 17:16) *
Собрал плату. В качестве PHY - Микрел KSZ8001BLI. Пинг работает. TFTP нет. Вылетает при приеме пакета - длина принятого пакета на единицу меньше требуемой. Другая плата (тестовая) работает на этом же коде без вопросов. Правда там стоит KSZ8001BL. Вопрос - что может быть? В чем закавыка?


Я сейчас работаю над ETHERNET/IP/UDP/TFTP/MODBUS - связкой от uIP и думаю дело в дровах под ваш KSZ8001BLI МАС-контроллер. Придется покопаться там, внизу стэка. А у вас что за стэк, от кого?
Dimitry_
Цитата(Цырен @ Sep 12 2007, 18:33) *
Я сейчас работаю над ETHERNET/IP/UDP/TFTP/MODBUS - связкой от uIP и думаю дело в дровах под ваш KSZ8001BLI МАС-контроллер. Придется покопаться там, внизу стэка. А у вас что за стэк, от кого?

Я же написал - U-Boot. А стек там похож на uIP. Понятно что проблема либо с контроллером, либо с PHY, чем BL отличается от BLI кроме расширенного диапазона и кода? Есть еще одно предположение, что как то не так проиисходит чтение пакета в самом контроллере. Хотя я поглядел обновления - вроде ничего не изменилось...
Dimitry_
В результате исследований. получен следующий результат. В драйвере контроллера 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
Я сейчас столкнулся с расхождениями DP83848 C и I. На демоплате стоит C. На моей I. При том же коде при запущеном отладчике PHY не видит LINK, однако таже прошивка при прошитом контроллере работает. Без j-tag'а программу отладить практически не возможно. Уже думаю перепаять эти PHY и убедиться так это или нет. По даташитам разницы нет sad.gif
А вы не пробовали PHY с демоплаты поставить на свою?
Vitaliy_ARM
Поставил на демо плату PHY с индексом I. И все заработало нормально. Значит скорее в плате проблема
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.