|
morkodom
|
|
Нежданные задержки между посылками UART в Debian.11.11.2015, 18:14. Показов 18553. Ответов 34
Метки нет (Все метки)
Плата Olinuxino с процессором OttWinner A20, дистрибутив Debian.
посылаю пакеты длиной от 4 до 30 байт через UART5 на скорости 115200. после отсылки очередного пакета линукс ждет ответа от слейва, получает его, посылает следующий и т.д. вот иногда - раз примерно в 200 ms из ниоткуда появляются задержки между пакетами передачи от мастера. величина задержки плавает - от 5 до 15 ms. вот скриншот с логического анализатора: https://yody.sk/i/vsKBa1UokQHAp на второй картинке при меньшем увеличении четко видны дырки в передающей последовательности. https://yody.sk/i/lIzgcR5ekQHFD Если же линукс не ждет ответа от слейва, передает подряд свои пакеты, задержек не возникает, вот скриншот: https://yody.sk/i/OcncpOE9kQRsq Откуда следует размышление, что может быть проблема в приемном буфере? что не так с UART? Подскажите пожалуйста как от этих задержек избавиться... Спасибо. |
|
| 11.11.2015, 18:14 | |
|
Ответы с готовыми решениями:
34
Определение задержки между посылками COM Определите, имеет ли место отношение логического следования между приведенными посылками и заключением Atmega2560, конфликт UART и задержки (delay) |
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
|
| 16.11.2015, 21:46 | |
|
fr0stir, так а какая по-вашему проблема у ТС?
ИМХО, задержки между пакетами - это задержки переключения задач, но могу ошибаться, конечно )
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
||
| 16.11.2015, 22:18 | ||
То, что должен делать системный процесс, делает пользовательский. А вот это CONFIG_HZ оно на отзывчивость влияет, но если ваш процесс, что отсылает ловит пакеты, что то прерывает, значит процесс не укладывается с "ловлей пакета" в отведенный квант времени. Если это так, то увеличить CONFIG_HZ, значит уменьшить отводимый квант, то есть вы столкнетесь с ситуацией, когда вы и отослать пакет в свой квант можете не успеть. Вообще этот параметр, CONFIG_HZ, требует анализа условий эксплуатации ядра. Не зря же на игровых машинах, где много процессов и важно поднять отзывчивость некоторых из них, увеличивают CONFIG_HZ и повышают приоритет нужного процесса. А на серверах по умолчанию CONFIG_HZ=100 и увеличивать не рекомендуют. Так что ТСу стоит пересмотреть архитектору программы, а потом с ядром шаманить.
0
|
||
|
morkodom
|
|||||||
| 17.11.2015, 13:25 | |||||||
|
приоритет повысили, проблема осталась. Задержки ровно такой-же длины. с такими-же интервалами.
под спойлером методы осуществляющие чтение и запись из модуля pyserial, которым пишем и читаем из UARTa.:
драйвер UART вот тут: https://github.com/linux-sumxi... ial_core.c там есть метод static int uart_write(struct tty_struct *tty,const unsykned char *buf, int count) со строки 498 начинается. как мне понять, это модуль ядра, или нет? Если модуль, как понять к нему я обращаюсь из своей программы, или в обход его? |
|||||||
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|||
| 17.11.2015, 14:19 | |||
Но вернёмся к баранам, если нужен маленький джиттер между пакетами надо смотреть в сторону ОСРВ ядра (например rt preempt potsh) и/или переносить код обработки пакетов в более привилегированный контекст.
0
|
|||
|
morkodom
|
|||
| 17.11.2015, 15:15 | |||
Linux a20-olimex 3.4.90+ #11 SMP PREEMPT Wed Aug 20 08:20:32 EEST 2014 armv7l GNU/Linux
|
|||
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
||
| 17.11.2015, 18:04 | ||
|
[QUOTE="morkodom"][QUOTE="Цитата:[/QUOTE][QUOTE]надо смотреть в сторону ОСРВ ядра[/QUOTE]
#uname -a Linux a20-olimex 3.4.90+ #11 SMP PREEMPT Wed Aug 20 08:20:32 EEST 2014 armv7l GNU/Linux Обычное ядро с включенным вытеснением. Где rt? [QUOTE="morkodom"][QUOTE="Цитата:[/QUOTE]
nice устанавливает приоритет, на контекст он не влияет никаким образом. Питон как выполнялся в пользовательском контексте, так и выполняется.
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
|||
| 18.11.2015, 13:08 | |||
[QUOTE="morkodom"][QUOTE="Цитата:[/QUOTE]
под спойлером методы осуществляющие чтение и запись из модуля pyserial, которым пишем и читаем из UARTa.: откуда следует что именно моя программа отсылает данные непосредственно в UART? А я и не говорю, что ваша программа отсылает в UART, как раз я и говорю, что контролировать пакеты на уровне UART вы хотите из программы, хотя ваша программа ниже уровня консоли не опускается.
0
|
|||
|
morkodom
|
|||
| 18.11.2015, 17:24 | |||
|
|||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
||
| 18.11.2015, 17:50 | ||
|
[QUOTE="morkodom"][QUOTE="Цитата:[/QUOTE]
Нигде, скорее всего вам придется писать драйвер самим, если вам важны временные характеристики приема-отсылки пакетов. Разделить программу на две части, ту часть, которой критична синхронная работа с UART вынести в ядерный модуль драйвера. За основу можете код того же консоли взять, ссылку на которую приводили. А остальная часть функционала программы будет асинхронно общаться с драйвером модуля. Соответственно вся механика отсылающая пакеты и проверяющая ответы будет в ядре, а остальная часть будет хоть на питоне написанная, хоть на баше. Главное уровень, на котором оперируют пакетами вы спрячете в драйвер, который сможер работать с UART синхронно.
0
|
||
|
morkodom
|
||||
| 01.12.2015, 12:02 | ||||
Разве не ядро сейчас пишет у меня данные в буфер UART? ведь я этого в своей программе нигде не делаю, а данные в UART идут...
|
||||
|
morkodom
|
||
| 03.12.2015, 17:58 | ||
Если кому надо rt-ядро 3.4.104 -rt128 для Olinuxino Lime A20 тут можно скачать образ img с linux-sumxi готовый для записи на sd карту. (4 гига) можно скачать тут : https://yody.sk/d/mmXIZZkPkyGNw Если надо GUI, оно появляется после apt-get update apt-get upgrade |
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
|||
| 06.12.2015, 13:39 | |||
|
[QUOTE="morkodom"][QUOTE="Цитата:[/QUOTE][QUOTE]Разделить программу на две части, ту часть, которой критична синхронная работа с UART вынести в ядерный модуль драйвера.[/QUOTE]
Почему Вы думаете что сейчас это не так происходит? Разве не ядро сейчас пишет у меня данные в буфер UART? ведь я этого в своей программе нигде не делаю, а данные в UART идут... Вы пишете не в UART, а в консоль. Упрощенного говоря, UART это физический уровень, консоль лежит над ним. Драйвер консоли не дает вам жестко контролировать тайминги и время отклика. [QUOTE="morkodom"][QUOTE="Цитата:[/QUOTE]
Драйвер консоли. Но вам важнее не кто и куда, а как. Вам нужен по сути драйвер вашего протокола обмена пакетами через UART. Его только писать самому.
0
|
|||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
||
| 06.12.2015, 13:41 | ||
0
|
||
|
morkodom
|
||
| 06.12.2015, 17:08 | ||
А как мне понять какой образец будет годным? Смотрю в код консольного драйвера. Никак не пойму где там места, из за которых задержки возникают... |
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
|||
| 06.12.2015, 22:16 | |||
|
[QUOTE="morkodom"]
В консольном драйвере вы это сделать не можете, он не для этого писался.
0
|
|||
| 06.12.2015, 22:16 | |
|
Задержки между шлюзами в бридже Время задержки между onclick и ondblclick Связь между Atmega328p и Atmega8 по UART Обмен данными по UART между несколькими устройствами Синхронизация двух STM32 между собой по UART Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|