|
Как повысить скорость работы по сети AT91SAM7X256 |
|
|
|
Apr 22 2008, 07:21
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 5-12-06
Пользователь №: 23 146

|
Некоторое время назад я разрабатывал прошивку для этого процесора в которой была добавлена функциональность обмена данными по сети и USB. В качестве операционной системы использована FreeRTOS, TCP/IP стека - uIP. Сейчас потребовалось повысить скорость обработки событий устройством и оказалось, что по сети обмен данными идёт медленно. Так как я разбирался со всеми нюансами процесора и внутренностями сети самостоятельно, то мог пропустить какие-то важные моменты. Может кто увидит какие-то недостатки приведённого ниже алгоритма и подскажет как увеличить скорость работы устройства. Итак, в устройство периодически по сети передаются данные блоком размером приблизительно в 16-20 кБ. Эти данные записываются в масив памяти и по таймеру процесора обрабатываются. Когда я програмировал работу с сетью то передачу данных сделал блоками по 1500 Байт. Может я что-то не учёл, а может тогда вылезали другие ошибки, но при передачи блока большей длины у меня подвисал процесор (приёмный буфер установлен приблизительно на 2кБ), поэтому сделать так как в USB, когда я пишу в порт всё одним куском, на уровне USB контролера масив разбивается на части, а в процесоре я уже собираю данные (гарантированно доставленные), мне не удалось. Сейчас я смотрю, что похоже можно в обработчике прерываний от сети поставить свой код анализа входных данных и сделать похоже как в USB но не уверен - не буду ли я получать повреждённые даные, которые долго нужно будет перефрагментировать, проверять и т.д. Сейчас у меня скорость передачи данных приблизительно 2Мб/с по 100 мегабитной сети. Выглядит это приблизительно так (результат теперешнего анализа с помощью Ethereal): отсылается пакет размером в 1500 байт в процесор, приблизительно через 4мс (время работы стека и моего копирования порции в нужное место памяти) процесор отсылает однобайтный пакет-подтверждения о приёме данных (чтобы внешняя программа не начала посылать данные пока я не обработал предыдущую порцию - правильно ли?), приблизительно через (дома забыл логи поэтому тут цыфру не помню) толи 1, толи 0,1мс, отсылается следующая порция данных. В результате 16кБ передаётся приблизительно за 50мс. Долго, было бы хорошо хотя бы в 2 раза быстрее. Можно ли улучшить скорость? Я смотрел, что при обработке стек копирует данные из буфера контролера в память, а потом я копирую куда мне нужно. Может можно сразу копировать без промежуточного буфера, но не будут ли проблемы с проверкой ошибок при передаче? Может в стеке uIP можно убрать лишнюю обработку?
Пока что я в процессе анализа кода, может ещё что и сам найду, но за любые советы и предложения буду искренне благодарен.
|
|
|
|
|
 |
Ответов
|
May 5 2008, 11:12
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Есть такой тэг VLAN, в MAC хидере. Используя его можно много чего придумать. Не совсем понятно, что же можно придумать с этим тегом на приемном конце? Тег-то приходит из сети, и есть он или нет - еще неизвестно (обычно, в конечном устройстве его надо просто стрипнуть). А я о том, что и в IP-заголовке, и в TCP-заголовке возможны дополнительные опции - например, при открытии сессии очень все любят сунуть опцию MTU. Хотя, с другой стороны, при передаче собственно данных обычно дополнительные заголовки не встречаются (нефиг оверхед гонять, и это правильно), но закладываться на это - себе дороже. Хотя, конечно, это мои размышлизмы, может в мотороловской реализации мака уже и подумали за нас. Дайте, чтоли, ссылочку на даташит, почитаем, проникнемся
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
Сообщений в этой теме
OlegHmt Как повысить скорость работы по сети AT91SAM7X256 Apr 22 2008, 07:21 _dem 2 мегабита или 2 мегабайта ? Apr 22 2008, 07:26 OlegHmt Цитата(_dem @ Apr 22 2008, 10:26) 2 мегаб... Apr 22 2008, 08:03 Gemm Цитата(OlegHmt @ Apr 22 2008, 11:21) ...
... Apr 22 2008, 08:01 chds А транспорт UDP или TCP?
Мы юзали uCOS у нас с под... Apr 22 2008, 08:24 OlegHmt Цитата(chds @ Apr 22 2008, 11:24) А транс... Apr 22 2008, 08:36 prottoss Закончил примерно с месяц встраиваемый HTTP-сервер... Apr 22 2008, 09:04 OlegHmt Цитата(prottoss @ Apr 22 2008, 12:04) Зак... Apr 22 2008, 11:06  defunct Цитатав таких приложениях - использование memcpy
Д... Apr 22 2008, 13:08   aaarrr Цитата(defunct @ Apr 22 2008, 17:08) Да о... May 4 2008, 10:06    zltigo Цитата(aaarrr @ May 4 2008, 12:06) Не над... May 4 2008, 10:45    prottoss Цитата(aaarrr @ May 4 2008, 17:06) Не над... May 4 2008, 13:01     zltigo Цитата(prottoss @ May 4 2008, 15:01) Free... May 4 2008, 16:33      prottoss Цитата(zltigo @ May 4 2008, 23:33) Мне с... May 4 2008, 16:58      defunct Цитата(zltigo @ May 4 2008, 19:33) По быс... May 4 2008, 20:09 _dem Какую скорость требуется получить ?
на uip много ... Apr 22 2008, 14:33 OlegHmt Цитата(_dem @ Apr 22 2008, 17:33) Какую с... Apr 22 2008, 14:59 OlegHmt Писать свой менеджер памяти, пока для меня будет с... May 3 2008, 20:30 defunct Цитата(OlegHmt @ May 3 2008, 23:30) А пок... May 3 2008, 21:26  Rst7 Цитата(defunct @ May 4 2008, 00:26) В ARM... May 4 2008, 11:06   defunct Цитата(Rst7 @ May 4 2008, 14:06) Вы уж пр... May 4 2008, 13:58    prottoss Цитата(defunct @ May 4 2008, 20:58) Есть ... May 4 2008, 14:17     defunct Цитата(prottoss @ May 4 2008, 17:17) Я же... May 4 2008, 14:26      prottoss Цитата(defunct @ May 4 2008, 21:26) Ну ка... May 4 2008, 14:55       defunct Цитата(prottoss @ May 4 2008, 17:55) hIP ... May 4 2008, 14:59        prottoss Цитата(defunct @ May 4 2008, 21:59) Ок, к... May 4 2008, 15:17         defunct Цитата(prottoss @ May 4 2008, 18:17) Но о... May 4 2008, 15:20          prottoss Цитата(defunct @ May 4 2008, 22:20) Под m... May 4 2008, 15:27           defunct Цитата(prottoss @ May 4 2008, 18:27) Я го... May 4 2008, 15:33            prottoss Цитата(defunct @ May 4 2008, 22:33) Ну ды... May 4 2008, 15:52            prottoss Цитата(defunct @ May 4 2008, 22:33) Указа... May 4 2008, 16:01             defunct prottoss
можете привести реальные цифры?
Сколько у... May 4 2008, 16:10              prottoss Цитата(defunct @ May 4 2008, 23:10) prott... May 4 2008, 16:48          blackfin Цитата(defunct @ May 4 2008, 19:20) Может... May 4 2008, 15:53           defunct Цитата(blackfin @ May 4 2008, 18:53) Это ... May 4 2008, 15:58            blackfin Цитата(defunct @ May 4 2008, 19:58) А с ч... May 4 2008, 16:37             zltigo Цитата(blackfin @ May 4 2008, 18:37) Если... May 4 2008, 16:52              blackfin Цитата(zltigo @ May 4 2008, 20:52) Ага, т... May 4 2008, 16:59               zltigo Цитата(blackfin @ May 4 2008, 18:59) Став... May 4 2008, 17:47                blackfin Цитата(zltigo @ May 4 2008, 21:47) Будет ... May 4 2008, 17:58                 zltigo Цитата(blackfin @ May 4 2008, 19:58) Меня... May 4 2008, 18:09    aaarrr Цитата(defunct @ May 4 2008, 17:58) Надо ... May 4 2008, 15:15 OlegHmt Понятно, тогда вопрос со стороны lwIP - можно ли и... May 3 2008, 22:30 defunct Цитата(OlegHmt @ May 4 2008, 01:30) Перво... May 3 2008, 23:12  OlegHmt Цитата(defunct @ May 4 2008, 02:12) А чем... May 4 2008, 07:36 Rst7 Цитатарасчитаной на быстрое копирование выровненны... May 4 2008, 15:19 Rst7 ЦитатаНу дык на 60-ти байтных пакетах +/- попугай ... May 4 2008, 15:43 Rst7 ЦитатаДлина блоков, применительно к SAM7X уже выбр... May 4 2008, 16:37 AlexandrY Возьмите процы от Freescale, в них IP-core Ethern... May 4 2008, 21:32 zltigo Цитата(AlexandrY @ May 4 2008, 23:32) RTO... May 5 2008, 08:07  AlexandrY Я ж не предлагаю отказаться от оси. Это ж святое... May 5 2008, 09:19 OlegHmt Ну и темку же я поднял
Поделюсь результатами кот... May 5 2008, 06:59 Rst7 ЦитатаВозьмите процы от Freescale, в них IP-core ... May 5 2008, 09:44 AlexandrY Не забывают, а не договаривают. Ну не всеж сразу в... May 5 2008, 10:24 AlexandrY Вообще-то я просто прикалывался, но была одна мелк... May 5 2008, 13:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|