Снова вопрос по Samsung S3C4530A

Привет All!

Hаблюдаю странное явление: при отправке ethernet кадра с помощью BDMA при размере кадра больше некоторого значения (порядка 350 байт) начинают сыпаться ошибки tx FIFO underrun. Ошибки появляются резко: скажем, при размере 310 байт ошибок нет, 320 байт - 30% ошибок, 330 байт - уже 90%. Прием (тоже через BDMA) никаких ошибок не дает. Интерфейс работает в режиме 100 Мбит/с, полный дуплекс. Самое странное, что описанный эффект периодически пропадает - несколько дней все работает безупречно - кадры в 1518 байт бегают без единой ошибки. А потом вдруг по неизвестной причине начинается опять... Может кто-нибудь подсказать, что может помешать BDMA вовремя заполнить FIFO? ОЗУ используется SDRAM, шина 32-разрядная, тактовая у процессора 25 МГц. Какими настройками в каких регистрах имеет смысл поиграться?

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Смотрю куда глаза глядят...

Reply to
Alex Mogilnikov
Loading thread data ...

BTxBRST,BTxMSL, 25 поменять на 50MHz. Underrun всегда появляется резко. Best Regards, Dmitriy Cherkashin

Alex Mogilnikov пишет: AM> Привет All!

AM> Hаблюдаю странное явление: при отправке ethernet кадра с помощью BDMA при AM> размере кадра больше некоторого значения (порядка

350 байт) начинают сыпаться AM> ошибки tx FIFO underrun. Ошибки появляются резко: скажем, при размере 310 байт AM> ошибок нет, 320 байт - 30% ошибок, 330 байт - уже 90%. Прием (тоже через BDMA) AM> никаких ошибок не дает. Интерфейс работает в режиме 100 Мбит/с, полный дуплекс. AM> Самое странное, что описанный эффект периодически пропадает - несколько AM> дней все работает безупречно - кадры в 1518 байт бегают без единой ошибки. А AM> потом вдруг по неизвестной причине начинается опять... AM> Может кто-нибудь подсказать, что может помешать BDMA вовремя заполнить AM> FIFO? ОЗУ используется SDRAM, шина 32-разрядная, тактовая у процессора 25 МГц. AM> Какими настройками в каких регистрах имеет смысл поиграться?

AM> Всего наилучшего, [Team PCAD 2000] AM> Алексей М. AM> ... Смотрю куда глаза глядят...

Reply to
Dmitriy Cherkashin

Привет Dmitriy!

01 Jul 04 17:17, Dmitriy Cherkashin писал Alex Mogilnikov:

DC> BTxBRST,BTxMSL, 25 поменять на 50MHz. Underrun всегда DC> появляется резко.

Помогло только поднятие тактовой. Hа 34 МГц теряется уже только 1% пакетов по 1514 байт. Выходит, что этот контроллер способен работать со 100 Мбит ethernet только на пределе своей производительности. А я-то еще выбирал, сделать мне 32-разрядную шину ОЗУ или только 16-разрядную... :)

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Вышла корова в чисто поле, да всё его и запачкала.

Reply to
Alex Mogilnikov

Привет Dmitriy!

Вот еще вопрос: ты не пользовался его HDLC контроллером? У меня наблюдается странное явление. Сделано кольцо дескрипторов передачи. Установлен бит DTxSTSK. При появлении данных на передачу в поле frame очередного дескриптора кладется адрес буфера с выставленным флагом O (естечтвенно, предварительно заполнив остальные поля). после передачи (когда O сбросится) буфер освобождается и в поле frame записывается 0. Иногда (при большом потоке данных) HDMA умудряется начинать передачу данных с адреса 0! То есть он почему-то не останавливает передачу, встретив дескриптор со сброшенным флагом O. Что за ерунда? С ethernet использую аналогичную схему, такой проблемы не наблюдается...

И еще: чтоозначает бит T в дескрипторе передачи? Hигде про него толкмо ничего не написано. Я даже не понял, программа его должна выставлять, или HDMA его туда вписывает...

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Пирожок сушеный с сушкой.

Reply to
Alex Mogilnikov

Привет Alex!

Наверное хотели сделать статус переданного пакета - и хранить в этом статусе такие факты как потеря CD, CTS, underrun - но не стали (точно также как как статус в буферном дескрипторе для Ethernet ).

При копировании данных не наблюдалось, но при такой схеме в поле frame меняется только бит 0. Ну и наверно надо взводить бит noncache.

Можно работать не кольцом дескрипторов, а null- terminated цепочкой дескрипторов. Данные появились - сформировать цепочку, ждать завершения ее передачи, ничего не трогать в передаваемой. Появляются дополнительные данные во время передачи текущей цепочки - формировать следующую. Закончилась передача текущей цепочки - подставить следующую сформированную.

Надо пробовать.

С уважением, Дмитрий Черкашин. ...Если есть дача, можно выехать на это поле, и подбирать, подбирать.

Alex Mogilnikov пишет: AM> Привет Dmitriy!

AM> 01 Jul 04 17:17, Dmitriy Cherkashin писал Alex Mogilnikov:

DC>> BTxBRST,BTxMSL, 25 поменять на 50MHz. Underrun всегда DC>> появляется резко.

AM> Помогло только поднятие тактовой. Hа 34 МГц теряется уже только 1% пакетов AM> по 1514 байт. Выходит, что этот контроллер способен работать со 100 Мбит AM> ethernet только на пределе своей производительности. А я-то еще выбирал, AM> сделать мне 32-разрядную шину ОЗУ или только 16- разрядную... :)

AM> Всего наилучшего, [Team PCAD 2000] AM> Алексей М. AM> ... Вышла корова в чисто поле, да всё его и запачкала.

Reply to
Dmitriy Cherkashin

Привет Dmitriy!

12 Jul 04 06:17, Dmitriy Cherkashin писал Alex Mogilnikov:

То есть этот бит не имеет какого-то осмысленного значения?

У чего? У фрейма и так взводится. Кстати, а почему так? Чем чревато его невзведение?

Сейчас поместил все дескрипторы передачи в некешируемую область - вроде бы ничего не изменилось...

DC> Можно работать не кольцом дескрипторов, а null- DC> terminated цепочкой дескрипторов. DC> Данные появились - сформировать цепочку, ждать DC> завершения ее передачи, ничего не трогать в передаваемой. DC> Появляются дополнительные данные во время передачи DC> текущей цепочки - формировать следующую. DC> Закончилась передача текущей цепочки - подставить DC> следующую сформированную.

Возможно, придется так и сделать, но не хотелось бы. До сих пор не было никаких манипуляций с дескрипторами, кроме того что при старте из них делают кольцо. Hадо будет погонять через интерфейс реальные данные (сейчас делаю ping

-f) и посмотреть, как все это будет себя вести. Если не хуже чем сейчас (сейчас наблюдаю один дуп на 50000-100000 пакетов), то, наверное, и смысла нет что-то трогать...

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Посетители должны общаться по сети.

Reply to
Alex Mogilnikov

Привет Alex

AM> >> что означает бит T в дескрипторе передачи DC>> Hаверное хотели сделать статус переданного пакета - и DC>> хранить в этом статусе DC>> такие факты как потеря CD, CTS, underrun - но не стали AM> То есть этот бит не имеет какого-то осмысленного значения?

Точно не знаю. Бит O говорит, что Вам вернули дескриптор и с ним можно работать. Но не факт что данный пакет передан. Может быть T обозначает, что пакет успешно передан?

В Ethernet BD есть похожий бит Comp, но там явно сказано что он взводится если пакет успешно передан или произошел отказ от передачи. Если есть отказ от передачи, то в статус BD записывается причина по которой произошел отказ от передачи (underrun, no carrier, transmit parity error...) . А далее пользователь имеет причину отказа передачи пакета и решает что делать дальше (чаще , наверное, просто игнорирует).

В HDLC Tx BD виден только бит T, если потеря пакета (из-за неправильного понимания смысла бита) очень критична для разрабаываемого продукта , можно запросить у Samsung алгоритм обработки этого бита.

В других коммуникационных процессорах в статус Tx BD записывается underrun, потеря CTS.

Потеря CD нормально записывается в статус Rx BD. Тут выше был не прав...

DC>> Hу и наверно надо взводить бит noncache. AM> У чего? У фрейма и так взводится. AM> Кстати, а почему так? Чем чревато его AM> невзведение?

У себя я сделал и у дескриптора и у буферов данных. В примерах от Samsung было так. Какой то смысл в этом есть. В документации явным образом не сказано как поступать. Надо опять же уточнять, либо делать также.

Есть более плохой эффект - нелинейная зависимость полезной загрузки HDLC канала от CLK при двух включенных HDLC каналах и при достаточно больших CLK. По крайней мере у меня получилось так.

С уважением, Дмитрий Черкашин.

Reply to
Dmitriy Cherkashin

Привет Dmitriy!

12 Jul 04 21:33, Dmitriy Cherkashin писал Alex Mogilnikov:

DC> Есть более плохой эффект - нелинейная DC> зависимость полезной загрузки HDLC канала от DC> CLK при двух включенных HDLC каналах и при DC> достаточно больших CLK. DC> По крайней мере у меня получилось так.

Ой! А что ты подразумеваешь под "нелинейной зависимостью нагрузки"? И какой CLK достаточно большой? Я пока работаю только с одним HDLC, наивно полагая, что они совершенно одинаковы. А в реальном устройстве как раз будут задействованы оба...

Всего наилучшего, [Team PCAD 2000] Алексей М. ... С кем поведешься - с тем и наберешься.

Reply to
Alex Mogilnikov

Добрый день, Alex.

AM> А в реальном устройстве как раз будут задействованы AM> оба...

Постройте графики полезной загрузки HDLC канала (одного, двух) (Ethernet включен) и посмотрите в диапазоне от 200Кбит до 8Мбит (заявлено 10Мбит). Может быть я где с софтом у себя напутал.

С уважением, Дмитрий Черкашин.

Reply to
Dmitriy Cherkashin

Привет Dmitriy!

13 Jul 04 21:25, Dmitriy Cherkashin писал Alex Mogilnikov:

DC> Постройте графики полезной DC> загрузки HDLC канала DC> (одного, двух) (Ethernet включен) DC> и посмотрите в диапазоне от 200Кбит DC> до 8Мбит (заявлено 10Мбит). DC> Может быть я где с софтом DC> у себя напутал.

Что есть "полезная загрузка"? Мне этот термин непонятен. Это пропускная способность?

Проблема в том, что у меня сейчас только два живых прототипа, я сейчас, как порядочный естествоиспытатель, ставлю опыты на себе - соединил их по HDLC и включил между своим компьютером и сетью фирмы. Второй HDLC нагрузить нечем. Разве что специально заставить драйвер гонять бессмысленные данные...

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Владею дыроколом на уровне пользователя.

Reply to
Alex Mogilnikov

Добый день, Alex.

AM> Что есть "полезная загрузка"? AM> Мне этот термин непонятен. Это пропускная AM> способность?

Полезные данные HDLC пакетов, без bit stuffing-а, CRC, флагов, например, за единицу времени.

AM> Разве что специально заставить драйвер AM> гонять бессмысленные данные...

Конечно, ведь остальные потери не интересуют. Для этого эксперимента достаточно одного прототипа - интерфейсы на шлейфе и генерация пакетов.

С уважением, Дмитрий Черкашин.

Reply to
Dmitriy Cherkashin

Привет Dmitriy!

14 Jul 04 19:12, Dmitriy Cherkashin писал Alex Mogilnikov:

AM>> Разве что специально заставить драйвер AM>> гонять бессмысленные данные...

DC> Конечно, ведь остальные потери не интересуют. DC> Для этого эксперимента достаточно DC> одного прототипа - интерфейсы DC> на шлейфе и генерация пакетов.

Я тут в отпуск ушел, вернусь - постараюсь попробовать.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Посетители должны общаться по сети.

Reply to
Alex Mogilnikov

Привет Dmitriy!

15 Jul 04 13:20, Alex Mogilnikov писал Dmitriy Cherkashin:

AM> Привет Dmitriy!

AM> 14 Jul 04 19:12, Dmitriy Cherkashin писал Alex Mogilnikov:

AM>>> Разве что специально заставить драйвер AM>>> гонять бессмысленные данные...

DC>> Конечно, ведь остальные потери не интересуют. DC>> Для этого эксперимента достаточно DC>> одного прототипа - интерфейсы DC>> на шлейфе и генерация пакетов.

AM> Я тут в отпуск ушел, вернусь - постараюсь попробовать.

Специально пробовать так и не стал, лениво было. Дождался, пока будут изготовлены новые платы (уже почти серийные). Включил их по такой схеме:

comp1 <- ethernet -> S3C4530 <- HDLC -> S3C4530 <- HDLC -> S3C4530 <- ethernet

-> comp2.

Сейчас гоняю между comp1 и comp2 файлы (с помощью scp), одновременно в обоих направлениях. Hеприятностей типа повышенных потерь не наблюдается, скорость передачи похожа на ту, какая и должна быть. И, главное, она совпадает со скоростью, которая получается при выкидывании среднего S3C4530. HDLC ходит поверх канала со скоростью 1920 кбит/с (64x30).

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Дареному письму в клуджи не смотрят.

Reply to
Alex Mogilnikov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.