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

 
 
 
Reply to this topicStart new topic
> 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
Dopler
сообщение Mar 6 2007, 23:12
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



У меня на с диска Atmel есть архив, в котором атмеловские примеры для всех модулей Sam7x - Can, USB, EMAC. В инете его можно взять отсюда:

ftp://ftp.efo.ru/pub/atmel/MCU/ARM_32bit/...91sam7x256_iar/


Пример с EMAC проверен, рабочий.

Вот еще делал перевод главы EMAC для аспирантуры, может пригодится
Прикрепленные файлы
Прикрепленный файл  MAC.doc ( 66 килобайт ) Кол-во скачиваний: 185
 
Go to the top of the page
 
+Quote Post
zpv78
сообщение Mar 9 2007, 08:22
Сообщение #3





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



Большое спасибо, буду разбираться.
Go to the top of the page
 
+Quote Post
Badwin
сообщение Nov 27 2007, 04:09
Сообщение #4





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



Хотелось бы тоже получить пример , ссылка нерабочая. help.gif
Go to the top of the page
 
+Quote Post
xelax
сообщение Nov 27 2007, 06:55
Сообщение #5


Местный
***

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



Сайт FreeRTOS. Там пример WEB сервера с готовым простеньким драйвером на EMAC. Для освоения самое оно.

http://www.freertos.org/
Go to the top of the page
 
+Quote Post
Badwin
сообщение Nov 27 2007, 07:12
Сообщение #6





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



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


Местный
***

Группа: Свой
Сообщений: 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
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #9


кекс
******

Группа: Свой
Сообщений: 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
prottoss
сообщение Jan 27 2008, 11:28
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Возможно, пропустил, изучая даташит, но возник вопрос такого плана.

Имеется массив RX блоков. В какой то момент времени процесс, из-за своей медлительности оставил, промежуток блоков не освобожденным, т.е. Ownership-бит в дескрипторе блоков отрезка не очищен. При этом остальные блоки в массиве обрабатываются нормально. В последствии этот процесс отрезок освобождает. Как поведет себя EMAC в этом случае?


--------------------
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 17th June 2025 - 23:37
Рейтинг@Mail.ru


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