Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91sam7x + 2 Ethernet
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Fast Ethernet/Gigabit Ethernet/FibreChannel
IJAR
Есть ARM7 - получает в течение 1 сек по SPI блоки данных по 2.5 Кбайт/100 мл сек т.е. в сумме 25 К
далее он преобразут принятое в 60Кбайт и далее все это надо
отправить в 2 сети Ethernet по протоколу TSP/IP. Из каждой сети есть небольшой асинхронный
обратный поток (десятки байт/сек) команд управления
Решение "в лоб" - ARM7 + 2 шт W5300, но приличный жор по питанию,
может кто-нибудь предложит более простое решение
aaarrr
Если уж ставите SAM7X, то зачем внешние костыли для Ethernet'а? Если нужно именно два раздельных выхода, поставьте снаружи какой-нибудь интегрированный коммутатор с MII-интерфейсом.
IJAR
Цитата(aaarrr @ Apr 23 2010, 17:11) *
Если уж ставите SAM7X, то зачем внешние костыли для Ethernet'а? Если нужно именно два раздельных выхода, поставьте снаружи какой-нибудь интегрированный коммутатор с MII-интерфейсом.


По требованию заказчика устройство должно быть эквивалентно PC
с двумя Ethernet картами - т.е. иметь 2 разъема RJ45 для подключения к
двум независимым сетям.
aaarrr
Должно быть эквивалентно PC с двумя картами (иметь два MAC'а), или все же просто иметь два RJ45 для подключения к разным сетям (один MAC + коммутатор)? Учитывая объемы передаваемой информации, два раздельных MAC'а - слишком большая роскошь.
zltigo
Цитата(aaarrr @ Apr 24 2010, 17:45) *
Должно быть эквивалентно PC с двумя картами (иметь два MAC'а)

Да и два и более MAC адреса на одном MAC иметь может.
aaarrr
Цитата(zltigo @ Apr 24 2010, 20:38) *
Да и два и более MAC адреса на одном MAC иметь может.

Это понятно, просто вдруг в требованиях заказчика фигурируют непременно два честных раздельных контроллера? Требования - они ведь не обязательно совместимы со здравым смыслом.
KRS
Цитата(IJAR @ Apr 24 2010, 19:17) *
По требованию заказчика устройство должно быть эквивалентно PC
с двумя Ethernet картами - т.е. иметь 2 разъема RJ45 для подключения к
двум независимым сетям.

Только что для таких целей использовали KSZ8893 у него 1 MAC и 2 PHY наружу!
Причем внутри очень хорошо конфигурится ставит таги с кагого порта пришел фрейм и при отправке можно ставить таг в какой порт отправлять (естественно при уходе из свитча так можно удалять). В общем все есть для того что бы сделать 2 независимые карты!
IJAR
Цитата(KRS @ Apr 26 2010, 00:21) *
Только что для таких целей использовали KSZ8893 у него 1 MAC и 2 PHY наружу!
Причем внутри очень хорошо конфигурится ставит таги с кагого порта пришел фрейм и при отправке можно ставить таг в какой порт отправлять (естественно при уходе из свитча так можно удалять). В общем все есть для того что бы сделать 2 независимые карты!

А на сколько устойчиво держися соединение, сколько ресурсов "отъедаеся" у процессор?
KRS
Цитата(IJAR @ Apr 26 2010, 00:25) *
А на сколько устойчиво держися соединение, сколько ресурсов "отъедаеся" у процессор?

Все фильтры по MAC стоят в свитче. Так что проц получает только броадкастовые фреймы и свои (по нужным mac, причем можно mac к номеру порта привязать). Никаких дополнительных ресурсов не отъедается, к фрейму только таг цепляется с какого порта он пришел, а при отправке куда отправлять. Пакеты не теряются.
Причем в свитче куча настроек по предотварещению DOS атак...
IJAR
Цитата(KRS @ Apr 26 2010, 01:58) *
Все фильтры по MAC стоят в свитче. Так что проц получает только броадкастовые фреймы и свои (по нужным mac, причем можно mac к номеру порта привязать). Никаких дополнительных ресурсов не отъедается, к фрейму только таг цепляется с какого порта он пришел, а при отправке куда отправлять. Пакеты не теряются.
Причем в свитче куча настроек по предотварещению DOS атак...


santa2.gif
Спасибо, похоже это то что нужно!
Можно будет несколько вопросов через личку?
KRS
Цитата(IJAR @ Apr 26 2010, 10:24) *
santa2.gif
Спасибо, похоже это то что нужно!
Можно будет несколько вопросов через личку?

Да без проблем!
Сразу скажу что мне нужен был только простой UDP, поэтому готовые стеки я не использовал.
настройка micrel у меня через SPI. И вот как его настроить что бы он изображал из себя 2 карты с минимальным оверхедом со стороны проца я разобрался полностью.
dch
Смешно об этом говорить поставьте два sam7x они стоят копейки или один арм 9
iosifk
Цитата(KRS @ Apr 26 2010, 00:21) *
Только что для таких целей использовали KSZ8893 у него 1 MAC и 2 PHY наружу!
Причем внутри очень хорошо конфигурится ставит таги с кагого порта пришел фрейм и при отправке можно ставить таг в какой порт отправлять (естественно при уходе из свитча так можно удалять). В общем все есть для того что бы сделать 2 независимые карты!


И я еще немного добавлю.
Если габариты не жмут, то я рекомендую 5-ти портовый свич. Они на складе есть да и стоят столько же, как и 3-х портовый. Но при этом у Вас появится порт для технологической отладки...
или предусмотреть, чтобы на одном порте подключался оптический преобразователь...
Ведь аппетит у заказчика не всегда "приходит" на момент написания ТЗ. Бывает, что и позже...
Информацию я выложил здесь
http://www.eltech.spb.ru/micrel_ethernet.html
Можно взять стартовый набор и попробовать...

Кстати, там на сайте уже наверное выложили запись вебинара по свитчам.
Удачи!
Gunner
Цитата(iosifk @ May 17 2010, 08:16) *
И я еще немного добавлю.
Если габариты не жмут, то я рекомендую 5-ти портовый свич. Они на складе есть да и стоят столько же, как и 3-х портовый. Но при этом у Вас появится порт для технологической отладки...
или предусмотреть, чтобы на одном порте подключался оптический преобразователь...
Ведь аппетит у заказчика не всегда "приходит" на момент написания ТЗ. Бывает, что и позже...
Информацию я выложил здесь
http://www.eltech.spb.ru/micrel_ethernet.html
Можно взять стартовый набор и попробовать...

Кстати, там на сайте уже наверное выложили запись вебинара по свитчам.
Удачи!


С позволения автора хочу присоединиться к вопросу.
Исходные данные те же: ARM-контроллер (на борту один МАС) и 2 внешних интерфейса Ethernet (Eth1 и Eth2). Надо, чтобы пакеты, приходящие по Eth1, поступали в ARM. Там они будут преобразовываться, после чего должны быть отправлены по Eth2. В обратном напрвлении - аналогично.
Собственно вопрос - позволяют ли данные коммутаторы (напр., KS8893/KS8993) работу в таком режиме Eth1 <--> ARM <--> Eth2 (то есть чтобы была заблокирована связь Eth1 <--> Eth2)?
IJAR
Цитата(Gunner @ Jun 8 2010, 15:56) *
С позволения автора хочу присоединиться к вопросу.
Исходные данные те же: ARM-контроллер (на борту один МАС) и 2 внешних интерфейса Ethernet (Eth1 и Eth2). Надо, чтобы пакеты, приходящие по Eth1, поступали в ARM. Там они будут преобразовываться, после чего должны быть отправлены по Eth2. В обратном напрвлении - аналогично.
Собственно вопрос - позволяют ли данные коммутаторы (напр., KS8893/KS8993) работу в таком режиме Eth1 <--> ARM <--> Eth2 (то есть чтобы была заблокирована связь Eth1 <--> Eth2)?

Мы смотрели DS на KS8893 у него управление по SPI
и есть настройки : выводить через канал 1
выводить через канал 2
выводить через канал 1 и 2 одновременно
IMHo:
похоже что Вам это тоже подойдет
Gunner
Цитата(IJAR @ Jun 8 2010, 15:04) *
Мы смотрели DS на KS8893 у него управление по SPI
и есть настройки : выводить через канал 1
выводить через канал 2
выводить через канал 1 и 2 одновременно
IMHo:
похоже что Вам это тоже подойдет

Мне надо чтобы через канал 1 не был доступен канал 2 (и наоборот). Чтобы потоки замыкались только через контроллер, подключенный к каналу 3. Такое реализуемо?

P.S. На странице http://www.eltech.spb.ru/micrel_ethernet.html есть пример шлюза на основе KSZ8995A и сказано:
"Кроме возможности управлять режимом работы портов, у микросхем фирмы Микрел так же имеется возможность и управлять самими данными. Для этого к коммутатору, к одному из портов МАС подключают внешний микроконтроллер. Пример такого шлюза приведен на рисунке."
Но там у процессора показано два MACа. У меня есть только один.
KRS
Цитата(Gunner @ Jun 8 2010, 16:44) *
Мне надо чтобы через канал 1 не был доступен канал 2 (и наоборот). Чтобы потоки замыкались только через контроллер, подключенный к каналу 3. Такое реализуемо?

Реализуемо! У меня так и работает! Там есть битовая настройка для каждого порта с какими он может быть связан.
Только что бы имитировать 2 мака, лучше задать в Static MAC table броадкастовый мак, нужные мультикастовые и свои юникастовые с битом OVERRIDE и открыть phy 1 и phy 2 - Recive disable | Special Tagging Mode
Тогда будет полный контроль над фреймами. При соотв. настройке у покидающих свитч пакетов через phy1 и phy2 таги будут удаляться т.е. с наружи ничего заметно не будет.
Gunner
QUOTE (KRS @ Jun 15 2010, 00:19) *
Реализуемо! У меня так и работает! Там есть битовая настройка для каждого порта с какими он может быть связан.
Только что бы имитировать 2 мака, лучше задать в Static MAC table броадкастовый мак, нужные мультикастовые и свои юникастовые с битом OVERRIDE и открыть phy 1 и phy 2 - Recive disable | Special Tagging Mode
Тогда будет полный контроль над фреймами. При соотв. настройке у покидающих свитч пакетов через phy1 и phy2 таги будут удаляться т.е. с наружи ничего заметно не будет.

Спасибо.
grinux
LAN9303
http://www.smsc.com/index.php?tid=147&pid=217
Почти в 2 раза дешевле микрела.
KRS
QUOTE (grinux @ Jul 1 2010, 00:38) *
Почти в 2 раза дешевле микрела.

Это где в 2 раза дешевле? В несколько десятков центов разница при штучной покупке. ~9 баксов
pulo
Цитата(KRS @ Apr 26 2010, 00:21) *
Только что для таких целей использовали KSZ8893 у него 1 MAC и 2 PHY наружу!
Причем внутри очень хорошо конфигурится ставит таги с кагого порта пришел фрейм и при отправке можно ставить таг в какой порт отправлять (естественно при уходе из свитча так можно удалять). В общем все есть для того что бы сделать 2 независимые карты!

Примером работы через SPI с KSZ8893 не поделитесь?
KRS
Цитата(pulo @ Sep 23 2011, 07:59) *
Примером работы через SPI с KSZ8893 не поделитесь?

А что конкретно интересует? Сам интерфейс SPI - он там очень простой. К тому же мои функции низкого уровня вам не подойдут, я NXP использовал.
Там достаточно такие функции определить
Код
uint_fast8_t ks8893_read(uint_fast8_t addr);
void ks8893_write(uint_fast8_t addr, uint_fast8_t data);
void ks8893_write_mac(uint64_t data, unsigned addr);
uint64_t ks8893_read_mac(unsigned addr);

Для чтения и записи регистров и таблицы с mac адресами.

Для теста интерфейса я использовал примерно такой код:
Код
    tmp = ks8893_read(0);
    c_puts("Family ");
    c_puthex(tmp,2);
    if (tmp == 0x88) {
        c_puts("OK\x0D\x0A");
    } else {
        c_puts("Failed\x0D\x0A");
    }
    tmp = ks8893_read(1) >> 4;
    c_puts("Chip id ");
    c_puthex(tmp,1);
    if (tmp == 0x2) {
        c_puts("OK\x0D\x0A");
    } else {
        c_puts("Failed\x0D\x0A");
    }
    for(i = 0; i < 0x100; i ++) {
        ks8893_write(0x14, i);
        tmp = ks8893_read(0x14);
        if (tmp != i) {
            c_puts("SPI test failed\x0D\x0A");
        }
    }

т.к. тестового регистра нет, использовал регистр который может принимать любые значения.
pulo
KRS, большое спасибо за пример.
Решил продолжить заниматься свитчем, свитч подключен по MII и настраиваю его через SMI интерфейс, ледами у выходов помигать и тп - без проблем, но вот с посылкой пакетов проблема. Разбираюсь с VLAN, собрал пакет, указал в ID 1 для первого порта, пакет точно правильный (отснифал, поменял только VID и на свой Мак адрес) и при посылке пакет дальше свитч не идет, до свитча доходит(осциллографом посмотрел)...
Перечитываю даташит, правильно ли я понял, чтобы посылать пакет в нужный порт, нужно использовать VLAN теги?
Ну и странный вопрос наверно, зачем таблицы MAC адресов?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.