Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Hash Addressing в at91sam7x
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Alfa
EMAC контроллера позволяет отфильтровывать входящие пакеты по адресу назначения, используя specific address registers или Hash Addressing. Какой способ лучше использовать? Какие преимущества и недостатки обоих способов?
aaarrr
Hash Addressing можно использовать для приема multicast'ов (собственно, другого способа их приема и нет). Unicast'ы так тоже можно принимать, только какой смысл?
Alfa
Цитата(aaarrr @ Feb 24 2010, 18:02) *
Hash Addressing можно использовать для приема multicast'ов (собственно, другого способа их приема и нет). Unicast'ы так тоже можно принимать, только какой смысл?


стр 571 даташита:
The EMAC supports recognition of four specific addresses. Each specific address requires two
registers, specific address register bottom and specific address register top.
Specific address register bottom stores the first four bytes of the destination address and specific address register
top contains the last two bytes. The addresses stored can be specific, group, local or universal.

Последнее предложение говорит, что с помощью specific address register можно принимать и multicastы. Или я не прав?
Тогда зачем хеш?
KRS
Цитата(Alfa @ Feb 25 2010, 06:08) *
Тогда зачем хеш?

Что бы не все мультикасты принимать.
Alfa
Цитата(KRS @ Feb 25 2010, 14:25) *
Что бы не все мультикасты принимать.

Но это можно сделать и с помощью specific address registers...
В хеше должен быть какой то глубокий смысл... smile.gif
KRS
Цитата(Alfa @ Feb 25 2010, 12:41) *
Но это можно сделать и с помощью specific address registers...
В хеше должен быть какой то глубокий смысл... smile.gif

specific address только 4 штуки!
aaarrr
Цитата(Alfa @ Feb 25 2010, 06:08) *
Последнее предложение говорит, что с помощью specific address register можно принимать и multicastы. Или я не прав?

Очень может быть, что я ошибаюсь. Помню только, что принимал мультикасты хэшем, а со specific address случился какой-то облом.

Если интересно, вот код для установки бита в HRT/HRB в соответствии с адресом:
Код
void emac_set_hash(unsigned int at, unsigned int ab)
{
    unsigned char hash;
    
    hash = ((at >> 8) & 0x3f) ^ ((at >> 14) & 0x03) ^
        ((at << 2) & 0x3c) ^ ((at >> 4) & 0x0f) ^
        ((ab >> 20) & 0x30) ^ ((ab >> 26) & 0x3f) ^
        ((ab >> 16) & 0x3f) ^ ((ab >> 22) & 0x03) ^
        ((ab >> 6) & 0x3c) ^ ((ab >> 12) & 0x0f) ^
        ((ab << 4) & 0x30) ^ ((ab >> 2) & 0x3f);
    if(hash < 32) *AT91C_EMAC_HRB |= (1UL << hash);
    else *AT91C_EMAC_HRT |= (1UL << (hash - 32));
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.