реклама на сайте
подробности

 
 
> Скорость обмена данными используя Ethernet, AT91SAM7X256, rtl8201bl, FreeRTOS, uIP
OlegHmt
сообщение Jan 16 2007, 00:59
Сообщение #1


Участник
*

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



Когда-то я встречал такую информацию, но сейчас не смог найти - вроде бы много таких тем, но разобраться я так и не смог. Вообщем не бейте очень сильно если повторяюсь. smile.gif

Собственно вопрос: какую скорость обмена данными по сети можно получить используя такую связку: AT91SAM7X256, rtl8201bl, FreeRTOS, uIP? Ядро процесора работает на 48 МГц. Программа исполняется из флеша.

Собственно мне нужно где-то 4-5Мбит/с (а если можно то и больше). Пока что реализовав програму и используя TCP обмен (буфер на приём 2к, данные передаются в процесор и просто записываются во внутреннюю память) у меня получается приблизительно 1,3Мбит/с (Связь установлена на 100Мбит/с). Это предел или нет? Может нужно оптимизировать стек или переходить на UDP?

Спасибо

Сообщение отредактировал OlegHmt - Jan 16 2007, 01:00
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
OlegHmt
сообщение Jan 22 2007, 10:51
Сообщение #2


Участник
*

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



Смог поднять скорость передачи даных на уровне TCP приблизитель в 1,5 раза где-то до 3,4 Мбит/с включив в RowleyCrossWorks оптимизацию по размеру кода для некоторых файлов IP стека. А именно для своего файла обработки данных, файлов uip_arch.c, uip_arp.c. Думаю, что можно ещё больше поднять скорость если включить оптимизацию uip.c, но при любой включенной оптимизации этого файла система подвисает при передаче данных. Что-то там компилятор неправильно оптимизирует. Жаль пока что нету времени искать места, где происходит сбой и корректировать их
Go to the top of the page
 
+Quote Post
boez
сообщение Jan 22 2007, 12:46
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 79
Регистрация: 1-11-06
Пользователь №: 21 868



Цитата(OlegHmt @ Jan 22 2007, 09:51) *
Смог поднять скорость передачи даных на уровне TCP приблизитель в 1,5 раза где-то до 3,4 Мбит/с включив в RowleyCrossWorks оптимизацию по размеру кода для некоторых файлов IP стека. А именно для своего файла обработки данных, файлов uip_arch.c, uip_arp.c. Думаю, что можно ещё больше поднять скорость если включить оптимизацию uip.c, но при любой включенной оптимизации этого файла система подвисает при передаче данных. Что-то там компилятор неправильно оптимизирует. Жаль пока что нету времени искать места, где происходит сбой и корректировать их


Какая версия CW? Советую обновить до 1.6, лучше build 3. Помогает. При уровне О1 тоже падает?
Go to the top of the page
 
+Quote Post
OlegHmt
сообщение Jan 22 2007, 14:55
Сообщение #4


Участник
*

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



Цитата(boez @ Jan 22 2007, 11:46) *
Какая версия CW? Советую обновить до 1.6, лучше build 3. Помогает. При уровне О1 тоже падает?

1.6 build 3, но после лечения стало build 2.
Но как я понимаю gcc там осталось из пакета build 3.
Падает при всех уровнях оптимизации. Одну из ошибок я когда нашёл (когда первый раз с этим столкнулся). Затыкалось на такой конструкции:

Код
if((uip_connr->tcpstateflags != CLOSED) &&
       (BUF->destport == uip_connr->lport) &&
       (BUF->srcport == uip_connr->rport) &&
       (BUF->srcipaddr[0] == uip_connr->ripaddr[0]) &&
       (BUF->srcipaddr[1] == uip_connr->ripaddr[1])) {
      goto found;
    }

Когда я каждое сравнение сделал отдельно в отдельные переменные, а потом их сравнил и поставил в if система у меня прошла эту конструкцию (тогда я пробовал только на уровне оптимизации 1).
Когда дойдут руки, надо будет поискать ещё куски кода где затыкается

Цитата(boez @ Jan 22 2007, 11:46) *
Какая версия CW? Советую обновить до 1.6, лучше build 3. Помогает. При уровне О1 тоже падает?

1.6 build 3, но после лечения стало build 2.
Но как я понимаю gcc там осталось из пакета build 3.
Падает при всех уровнях оптимизации. Одну из ошибок я когда нашёл (когда первый раз с этим столкнулся). Затыкалось на такой конструкции:

Код
if((uip_connr->tcpstateflags != CLOSED) &&
       (BUF->destport == uip_connr->lport) &&
       (BUF->srcport == uip_connr->rport) &&
       (BUF->srcipaddr[0] == uip_connr->ripaddr[0]) &&
       (BUF->srcipaddr[1] == uip_connr->ripaddr[1])) {
      goto found;
    }

Когда я каждое сравнение сделал отдельно в отдельные переменные, а потом их сравнил и поставил в if система у меня прошла эту конструкцию (тогда я пробовал только на уровне оптимизации 1).
Когда дойдут руки, надо будет поискать ещё куски кода где затыкается
Go to the top of the page
 
+Quote Post
Alex03
сообщение Jan 22 2007, 15:39
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(OlegHmt @ Jan 22 2007, 16:55) *
1.6 build 3, но после лечения стало build 2.
Но как я понимаю gcc там осталось из пакета build 3.

Есть ж лекарство для b3.
Цитата
Падает при всех уровнях оптимизации.

__attribute__ ((interrupt ("IRQ"))) нигде не пользуете?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- OlegHmt   Скорость обмена данными используя Ethernet   Jan 16 2007, 00:59
- - sff   Цитата(OlegHmt @ Jan 16 2007, 00:59) Когд...   Jan 16 2007, 01:16
- - aaarrr   Цитата(OlegHmt @ Jan 16 2007, 00:59) ...у...   Jan 16 2007, 01:22
- - etoja   Начало пакета в сети Ethernet привязано к импульса...   Jan 16 2007, 07:40
|- - Mc_off   Цитата(etoja @ Jan 16 2007, 07:40) Начало...   Jan 16 2007, 09:25
- - etoja   На страницах №37,38 даташита на CS8900 описано выр...   Jan 16 2007, 09:41
|- - Mc_off   Цитата(etoja @ Jan 16 2007, 09:41) На стр...   Jan 16 2007, 09:58
- - OlegHmt   Цитатаsff А почему uIP а не lwIP Насколько я понял...   Jan 16 2007, 11:19
|- - Mc_off   Цитата(OlegHmt @ Jan 16 2007, 11:19) Mc_o...   Jan 16 2007, 12:35
- - OlegHmt   В который раз приходиться извиняться за свои ошибк...   Jan 16 2007, 12:08
- - OlegHmt   Mc_off При переходе от работы на уровне TCP к раб...   Jan 16 2007, 13:05
|- - Mc_off   Цитата(OlegHmt @ Jan 16 2007, 13:05) Mc_o...   Jan 16 2007, 19:39
- - 3.14   2 OlegHmt uIP не лучший выбор, там с ходу больше д...   Jan 17 2007, 09:46
- - OlegHmt   Понятно. Спасибо. Посмотрю может и я спущусь к раб...   Jan 17 2007, 09:53
- - 3.14   ЦитатаИзвините, не совсем понял - десятков килобай...   Jan 17 2007, 10:01
|- - OlegHmt   Цитата(3.14 @ Jan 17 2007, 09:01) Трафик ...   Jan 17 2007, 10:09
- - 3.14   Про этов его доке (v1.1) написано.   Jan 17 2007, 10:13
|- - OlegHmt   Цитата(3.14 @ Jan 17 2007, 09:13) Про это...   Jan 17 2007, 10:50
- - 3.14   Cори, попутал, смотрите "TCP throughput boost...   Jan 17 2007, 11:09
- - Rinat86   мне надо разработать устройство-мост CAN-Ethernet ...   Jan 22 2007, 00:15
- - OlegHmt   ЦитатаЕсть ж лекарство для b3. На тот момент нашёл...   Jan 22 2007, 16:25


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 04:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01421 секунд с 7
ELECTRONIX ©2004-2016