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

Jun 23, 2004 Last reply: 22 years ago 12 Replies

Привет All!



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



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


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> ... Смотрю куда глаза глядят...

Привет 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] Алексей М. ... Вышла корова в чисто поле, да всё его и запачкала.

Привет Dmitriy!

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

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

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

Привет 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> ... Вышла корова в чисто поле, да всё его и запачкала.

Привет 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] Алексей М. ... Посетители должны общаться по сети.

Привет 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. По крайней мере у меня получилось так.

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

Привет Dmitriy!

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

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

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

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

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

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

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

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

Привет 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] Алексей М. ... Владею дыроколом на уровне пользователя.

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

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

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

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

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

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

Привет Dmitriy!

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

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

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

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

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

Привет 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] Алексей М. ... Дареному письму в клуджи не смотрят.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required