реклама на сайте
подробности

 
 
> EMAC AT91SAM7X
zpv78
сообщение Mar 6 2007, 21:38
Сообщение #1





Группа: Новичок
Сообщений: 13
Регистрация: 8-02-07
Пользователь №: 25 181



Всем привет. У кого есть пример программы работы с модулем EMAC AT91SAM7X256. Скиньте, пожалуйста на ящик (zpv78@mail.ru) или укажите ссылку. Заранее благодарен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Badwin
сообщение Nov 27 2007, 07:12
Сообщение #2





Группа: Новичок
Сообщений: 14
Регистрация: 26-11-07
Из: Новосибирск
Пользователь №: 32 676



хотелось бы пример без Оси, т.к. ось не собираюсь использовать.
Go to the top of the page
 
+Quote Post
xelax
сообщение Nov 27 2007, 07:29
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(Badwin @ Nov 27 2007, 10:12) *
хотелось бы пример без Оси, т.к. ось не собираюсь использовать.


Косметические доработки по устранению оси (20 минут максимум) и получишь нормальный полноценный EMAC драйвер...
Go to the top of the page
 
+Quote Post
timofey_99
сообщение Dec 26 2007, 13:57
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 28-10-06
Пользователь №: 21 741



Цитата(xelax @ Nov 27 2007, 10:29) *
Косметические доработки по устранению оси (20 минут максимум) и получишь нормальный полноценный EMAC драйвер...


Использую этот драйвер вместе с осью. Всё было красиво и радостно, пока не сунулся в реальную сетку с тяжёлым трафиком. Зависает, точнее попадает в вечный луп на переборе дискрипторов, не может найти конец фрейма, соответственно замирают задачи, что имеют приоритет пониже. Очень удручает такое поведение. Кто сталкивался, удалось вылечить?
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 26 2007, 16:16
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(timofey_99 @ Dec 26 2007, 16:57) *
Использую этот драйвер вместе с осью. Всё было красиво и радостно, пока не сунулся в реальную сетку с тяжёлым трафиком. Зависает, точнее попадает в вечный луп на переборе дискрипторов, не может найти конец фрейма, соответственно замирают задачи, что имеют приоритет пониже. Очень удручает такое поведение. Кто сталкивался, удалось вылечить?

У меня аппарат живет в реальной сети и пропускает 8kpps трафика.
emac драйвер написал сам, подводный камень приводящий к затыканию emac'a был только один -

для коротких пакетов (те что помещаются в одном дескрипторе) DMA может установить флаг окончания приема, до того как запишет его длину...

поэтому для вычитки фрейма одного только условия
RSR & AT91C_EMAC_REC
недостаточно.
надо также проверять длину принятого фрейма, и вытаскивать его только если не 0.

(Rx_Desc[idx].stat & RD_LENGTH_MASK )

Ну и по мелочи - проверять переполнение RX дескрипторов и делать Flush:

Код
    if (RSR & (AT91C_EMAC_OVR | AT91C_EMAC_BNA))
    { // RX overrun or RX buffer not available
        if (emacContext.RxOverrunAlert < U8_MAX)
            emacContext.RxOverrunAlert += 1;
        
        if (RSR & AT91C_EMAC_BNA)
        {   // buffer not available
            pEMAC->EMAC_NCR &= ~AT91C_EMAC_RE;              // Stop Rx
            rx_descr_init ();                               // All packet data is invalid, re-init RxDesc
            pEMAC->EMAC_RSR  = AT91C_EMAC_OVR | AT91C_EMAC_REC | AT91C_EMAC_BNA;
            pEMAC->EMAC_NCR |= AT91C_EMAC_RE;               // Restart Rx
        }
    }
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 20:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01466 секунд с 7
ELECTRONIX ©2004-2016