Начал разбираться с EMAC на AT91SAM9260. Имеется документация на сам контроллер и тестовый пример для IAR под названием basic-emac-uip-webserver-project-at91sam9260-ek. У меня появились вопросы, которые касаются проблемы запуска Ethernet на вышеупомянутом контроллере. Они касаются приема и передачи пакетов (фреймов) и работы с дескрипторами и указателями адреса: Когда устанавливается и кем бит начала фрейма SOF? Зачем его вообще проверять? При инициализации он должен быть равен нулю, как в принципе и все Слово 1 (Статуса) дескриптора. Каков тогда вообще принцип работы с этими дескрипторами? Еще в доке сказано про 11-битный счетчик, значения которого складывается со значением регистра указателя очереди приемных буферов EMAC_RBQP. Этот счетчик нужно реализовывать или он уже есть в процессоре? При этом не понятно регистр EMAC_RBQP процессор сам инкрементирует (ибо написано, что он содержит адрес (точку входа) дескриптора к которому производится обращение в настоящее время) или что-то туда нужно постоянно писать? Прием пакетов осуществляет функция EMAC_Poll: Сначала проверяется бит Ownership Слова 0 дескриптора приемного буфера. Если он установлен, это значит, что этот буфер используется. Тогда мы проверяем бит начала фрейма SOF. Если он установлен, то в примере от IAR делается какая-то хитрая операция. Видимо связанная со сбросом предыдущего кадра и подсчетом количества использованных буферов. По мимо всего прочего разрешается прием фрема. Каков вообще алгоритм приема/передачи фрейма? Совсем запутался. В доке ничего конкретного не сказано, только какие-то обще рекомендации, или я просто не умею читать.
|