-=Max_Fly=- (21.08.2006 01:24, просмотров: 1) ответил Evgeny_CD на Интересно, кто-нибудь щупал это дело? Например, если взять ATmega162 (16 Мгц) + RTL8019AS (примерно как там ->), можно ли получить 50кб/сек в UDP?
я реально не щупал, но UDP он довольно несложный.
я прикидочно считал так:
если данные лежат во внешнем ОЗУ (самый неоптимальный случай)
1) посчитать контрольную сумму UDP
2) если мас адреса цели нет, соорудить арп запрос, и отправить его.
3) получить мас цели
4) построить ethernet пакет (дописать ip и mac свой и цели + будем считать что мелочи вроде тип инкапсулированного пакета в ethernet мы забили а-приори).
5) посчитать контрольную сумму ethernet пакета и дописать её в хвост пакета.
6) отправить ethernet пакет
итого 2 раза производится чтение из внешнего озу при подсчёте контрольных сумм. 2 пересылки арп пакета.
1 пересылка собственно целевого пакета.
видно что выгодно мас кешировать. потому как выполнять дурную работу по загрузке сети и собственно контроллер арп запросами нехорошо.
если выбросить арп-ы, то можно считать что на посылку одного пакета уходит 3 пересылки в\из внешнюю\ней память. Это конечно если считать что пакет достаточно большой, и дописыванием ip mac адресов можно пренебречь. Если конечно за 1 раз посылается 1 байтик :))) то надо учитывать. Расчёт понятно прикидочный потому что он так же не учитывает что длинна данных должна быть чётной. Иначе ещё добить нулевым октетом свой пакет.
грубо - 1\3 от пропускной способности внешней шины микроконтроллера - это в прыжке с табуретки в коньках и шляпе с пером.
по моему так. :).
Но это :( увы всё теория, которой волей работодателя не суждено было воплотиться в жизнь в своё время.