Ethernet на asm

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 13
Зарегистрирован: Вс июн 20, 2010 16:55:05

Сообщение Enelar »

Появилась у меня задача сделать физический фаервол на микроконтроллере.
А именно приходит пакет который направлен на такой то порт такой то машины, в ту сторону не передавать.
Встает вопрос, документация ethernet нужна.
А именно как фиксируется начало передачи, конец, как передается байты, тактуется сигнал или нет...
вобщем все что нужно для того что бы принять хотя бы один байт.
(PS о существовании роутеров, ethernet контроллеров и тп знаем, хотелось бы самому спрограммировать)
Реклама
Родился
Сообщения: 13
Зарегистрирован: Вс июн 20, 2010 16:55:05

Сообщение Enelar »

Ну может кто нибудь знает хотя бы ключевое слово для поиска?
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ключевое слово ENC28J60
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Вс июн 20, 2010 16:55:05

Сообщение Enelar »

Ну это не то. Я хочу сделать какраз что то вроде ENC28J60. Для этого мне нужно знать то что спросил раньше.
Они то откуда то знают, а стандарт Ethernet открытый, значит и мы можем знать.
Реклама
Эиком - электронные компоненты и радиодетали
Прорезались зубы
Сообщения: 231
Зарегистрирован: Пт ноя 16, 2007 13:52:44
Откуда: Рига, Латвия

Сообщение Pe3ucTop »

Кличевое слова - Ethernet frame , потом читаем IP protocol, потом TCP соединения.
Это для теории.
Для практики - хм, поиск "Ethernet" по форуму поможет.
Но в вашей задаче не хватает параметров:
- на сколько быстро всё это делать :)
- тип данных - мелкие пакеты или крупные
- что анализировать - от / к / адресс / порт / ещё чегонибудь ..

Поищите по этому форуму - я много ссылок давал на разъяснение этого.
ARV писал(а):ключевое слово ENC28J60
Тоже можно поискать - но это только один контроллер Ethernet на SPI шину.
Я бы посоветомал поизучать RTL8019 - на паралельную шину.

P.S. из личного опыта - без специальных микроконтроллеров под Ethernet скорость никакая.
Реклама
Прорезались зубы
Сообщения: 231
Зарегистрирован: Пт ноя 16, 2007 13:52:44
Откуда: Рига, Латвия

Сообщение Pe3ucTop »

Enelar писал(а):Ну это не то. Я хочу сделать какраз что то вроде ENC28J60. Для этого мне нужно знать то что спросил раньше.
Они то откуда то знают, а стандарт Ethernet открытый, значит и мы можем знать.
Как-то не сходится то что вы с прашиваете...
Enelar писал(а): ...
(PS о существовании роутеров, ethernet контроллеров и тп знаем, хотелось бы самому спрограммировать)
Хочется делать - преобразователи уровней, преобразование серийных данных, выделение задающей частоты, аналоговое определение состояния ?
Это к микроконтроллеру почти никакого отношения не имеет, и делается на транзисторах/операционниках и логических элементах.
Если вас интересует именно уровень логического начала пакета - то это взятие на микроконтроллер лишних задачь, но возможно ..

Ключевые слова - Ethernet PHY , SNI, MII, RMII , GMII, RGMII ...

По этим шинам переадётся начало/конец приема-передачи, синхронизация и данные в разных видах (кварт / серийный / двубитный получастотный )..

Линк: http://en.wikipedia.org/wiki/Ethernet английский вариант, там есть и русская версия, но она не полная - отсутствует картина кадра в среде (прамбулоа, определитель старта пакета, и межпакетный интервал)
Реклама
Родился
Сообщения: 13
Зарегистрирован: Вс июн 20, 2010 16:55:05

Сообщение Enelar »

По сусекам наскреб, но основную информацию дал Таненбаум "Компьютерные сети!.
И вот этот замечательный ресурс http://sesia5.ru/lokseti/s331.htm
Пойду пить молоко, как переварю, вернусь.
Родился
Сообщения: 13
Зарегистрирован: Вс июн 20, 2010 16:55:05

Сообщение Enelar »

Так, встает отколовшийся вопрос(возможно нубский).
У таненбаума написанно, что еденица кодируется как пол интервала 1 пол 0, а ноль наоборот.
Следовательно проверять канал нужно в 2 раза чаще чем его пропускная скорость.
Т.о для канала в 100мбит нужна штуковина, которая сможет проверять с частотой 200МГц.
Где такую взять и что бы не очень дорого. (МК на 100Мгц уже 800р стоит)
Родился
Сообщения: 13
Зарегистрирован: Вс июн 20, 2010 16:55:05

Сообщение Enelar »

Pe3ucTop писал(а):Я бы посоветомал поизучать RTL8019 - на паралельную шину.
Вот за это спасибо. Хорошая штуковина и не дорогая.
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

У таненбаума написанно, что еденица кодируется как пол интервала 1 пол 0, а ноль наоборот.
Се суть Манчестерское кодирование, такое же применяется в пультах от телевизоров (только там еще несущая).

Есть гораздо более элегантный способ приема такого сигнала: надо опрашивать состояние линии через 2/3 длительности бита после каждого фронта, это и будет искомый уровень. Про это даже есть аппнот у Atmel, сейчас номера не вспомню. Алгоритм выглядит примерно так (вход данных вешаем на внешнее прерывание по фронту):

по внешнему прерыванию:

запрещаем внешнее прерывание;
запускаем таймер на 2/3 длительности бита;

по прерыванию таймера:

читаем линию входа данных (ножку внешнего прерывания), записываем значение в переменную;
если посылка принята - вызываем обработчик;
разрешаем внешнее прерывание;
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Вс июн 20, 2010 16:55:05

Сообщение Enelar »

Элегантное решение) Спасибо)
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Спасибо инженерам Atmel. :)

Кстати, вот он и аппнот нашелся. :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Вс июн 20, 2010 16:55:05

Сообщение Enelar »

Вскроем карты, дабы получить советы от людей более опытных. Чего там темнить, думаю.
Я хочу сделать роутер. Хороший и дешевый. Т.е для дома аля D-LINK, но стабильнее и все такое + пара удобных функций(идеи).
Понимаю работы много будет, но трудностей не боимся.
Цель - сделать опытный образец, потестить, улучшить и поставить на конвеер.
Вот соответственно и интересовался как получать пакеты 802.3(а в дальнейшем и 802.11).
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Enelar писал(а):Т.е для дома аля D-LINK, но стабильнее и все такое + пара удобных функций(идеи).
Вряд ли у вас получится сделать что-то стабильнее, чем D-LINK и иже с ними. Над этими роутерами корпели многие и многие инженеры с высочайшим образованием именно в этой сфере. В них применяются узкоспециализированные микросхемы, сделанные специально для этой задачи. Это устройство настолько сложное (если смотреть с самого низкого уровня) что и вообразить себе трудно. А так, конечно: открыл коробку- "а, что тут? Одна микросхема, 5 трансформаторов? Да я тоже такое могу собрать!"
Я буду аплодировать вам стоя, если вы сможете сделать роутер, который хотя-бы как то работает на скорости 10 МБит. (Действительно 10 МБит).

Сам сейчас долбаюсь с Ethernet, TCP, UDP, NTP. Хочу кое-какой проектик, если успею, то и на конкурс его... Поэтому, я не просто так говорю, что это сложно. Конечно, я использую ENC28J60. Но если вы хотите заняться RTL-ями, с параллельной шиной....

В общем, мое мнение, что вряд-ли у вас что-то выйдет. Хотя как знать...
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Грызет канифоль
Сообщения: 296
Зарегистрирован: Ср дек 30, 2009 09:55:39

Сообщение kolobok0 »

РадиоЛоматель писал(а):...если вы сможете сделать роутер, который хотя-бы как то работает на скорости 10 МБит....долбаюсь с Ethernet, TCP, UDP, NTP...ENC28J60....
Собственно на десятку (с юзаньем CS8900 или как в Вашем проекте ENC28J60 - хотя есть сомнения лично у меня) - ничего сверх сложного. Сложнее сами протоколы реализовать согласно спецификации. Есть свои нюансы конечно же. Например в инете Вы не найдёте примеров со сборкой на IP уровне дефрагментированных пакетов. Без памяти - не прокатит. TCP так же требует бОльшей отладки на уровне логики состояний, анализа заторов и потерь пакетов, правильных стартов... а так - ничего сложного в принципе.

Кстати на ENC28J60 по SPI - вряд ли Вы выкачаете десятку. На CS8900 на 4 битной шине, на 51 серии (2 мф), где то около 8 выходит после конкретной заточке на скорость (пинги больших кусков данных > 30 кб).

удачи вам
(круглый)
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Я не сказал, что знаю как это сделать, причем быстро. Я просто написал, что не спроста говорю про сложность. И именно грамотный обмен ее создает.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Вс июн 20, 2010 16:55:05

Сообщение Enelar »

Я и не говорил про то что считаю что это легко, и что смогу это сделать.
Я решил попробовать.
А вопрос заключался в том, может кто знает как выбрать железки.
Ну я про то что дорого выходит, а хотелось бы попасть в ту же ценовую категорию.
Родился
Аватара пользователя
Сообщения: 16
Зарегистрирован: Сб июл 24, 2010 12:16:57
Откуда: Чита

Сообщение котэ315 »

А кому-нибудь известны уровни сигнала в ethernet? А то я нигде найти не могу
Контактная информация:
Прорезались зубы
Сообщения: 231
Зарегистрирован: Пт ноя 16, 2007 13:52:44
Откуда: Рига, Латвия

Сообщение Pe3ucTop »

Мда, почитал, народ лезет в дебри.. Уровни сигнала в ethernet, начала пакета, кодирование Манчестера и т.д. Зачем вам это ??
Pe3ucTop писал(а): ...
Ключевые слова - Ethernet PHY , SNI, MII, RMII , GMII, RGMII ...
...
По этим шинам переадётся начало/конец приема-передачи, синхронизация и данные в разных видах (кварт / серийный / двубитный получастотный )..
Линк: http://en.wikipedia.org/wiki/Ethernet английский вариант, там есть и русская версия, но она не полная - отсутствует картина кадра в среде (прамбулоа, определитель старта пакета, и межпакетный интервал)
Работайте с цифровыми данными..
У болшинства комутаторов чип имеет подобную шину (свободную) - используйте, не говоря уже о специальных чипах преобразования уровней за копейки. Далее для пробы посоветовал бы ARM LPCxxx с ethernet, и развернутся есть где и скорость хорошая и при надобности вплоть до Linux-a (но быстрее роутеров заводских замучаетесь делать).
котэ315 писал(а):А кому-нибудь известны уровни сигнала в ethernet? А то я нигде найти не могу
http://en.wikipedia.org/wiki/Ethernet_over_twisted_pair
Для скоростей рассписаны уровни.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»