|
morkodom
|
|
Нежданные задержки между посылками UART в Debian.11.11.2015, 18:14. Показов 18297. Ответов 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.04.2013
Сообщений: 752
|
|
| 11.11.2015, 20:07 | |
|
...для начала как вы выставили таймауты для работы с портом и код.
И Debian - не ОСРВ по-умолчанию. Правда и вымысел об операционных системах Linux реального времени
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
|
| 11.11.2015, 21:00 | |
|
Для начала надо просто узнать, как ТС с UART работает.
Для Umyx стандартная метода - настроить tty на UART в данном случае. То есть для Debian и прочих *myx`ов UART будет текстовой консолью.
0
|
|
|
morkodom
|
|||||||
| 12.11.2015, 11:27 | |||||||
|
вот код драйвера на питоне.
Может можно как-то разобраться где именно затык? вот ссылка на исходники сериального драйвера serial_core.c моего линуха: https://github.com/linux-sumxi... ore.c#L498 это оно? мне стоит попробовать поковырять функцию uart_write ? Есть у кого-то подобный опыт? можно как-то вытащить из этой функции отладочную информацию? |
|||||||
|
2 / 2 / 4
Регистрация: 26.05.2013
Сообщений: 126
|
||||||||||||||||||||||||||
| 12.11.2015, 14:56 | ||||||||||||||||||||||||||
0
|
||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
|
| 12.11.2015, 15:20 | |
|
В данном (пример ТСа на питоне) случае проблема не в Debian, не в UART, а в том, как данные отсылаются в устройство /div/ttyS.
Кто отвечает за работу с пакетами? Ядерный модуль или пользовательская программа? Похоже именно программа работая в usir-sposi послав пакет ждет ответ от слейва. При таком подходе даже в ОСРВ будут проблемы с UART. Во втором случае, у xVikx`а (неплохо бы простыню кода в спойлер спрятать) программа только формирует строку, а с UART непосредственно работает система, имея более высокий приоритет.
0
|
|
|
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 752
|
||
| 12.11.2015, 15:50 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
||
| 12.11.2015, 16:34 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
||
| 12.11.2015, 17:12 | ||
Это в общем все там реалтаймовое, юзерспейсовое и микроядерное, а как доходит до деталей, то ой. Эта реалтаймовость и микроядерность у QNX оначает лишь две вещи, автору программы дается возможность написать реалтаймовую программу и отбирается возможность кривонаписанным кодом отнять реалтаймовость у прочих процессов. То есть переход на ОСРВ автоматом руки программисту не выправляет, он только оберегает от кривых рук одного прочих программистов пишущих для той же системы. Это я про криворукость вообще, а не в чей то огород. Вот это и есть успешность, а не как на некоторых системах было, процесс затупил, так либо все его ждут, либо втихаря отстреливают.
0
|
||
|
0 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 1
|
|
| 13.11.2015, 06:00 | |
|
Драйвер на питоне - это круто!
Я бы написал ядерный модуль, который выполняет все задачи, критичные к времени выполнения. Ради минимальных задержек можно повеситься на прерывание UART и формировать пакет прямо в этом прерывании... А остальные задачи реализовать в usirsposi. И незачем переходить на другую ОС. Почитайте "Цилюрик О.И. - Модули ядра Linux".
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
|
| 13.11.2015, 11:17 | |
|
Про ядра и модули Цилюрика чтать имеет смысл для начала только, потом нужно что посвежее.
За 4 года архитектура изменилась слегка.
0
|
|
|
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
|
|
| 13.11.2015, 11:28 | |
|
Советую не на пхытоне сделать, а на сях. И открывать терминал в режиме неблокирующего считывания. Пользуюсь самописным велосипедом, никаких проблем нет.
А в блокирующем чтении, да еще с пхытоном наверняка получается внешняя буферизация, что и приводит к задержкам.
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
||
| 13.11.2015, 11:58 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 1
|
||
| 13.11.2015, 20:29 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
|
| 13.11.2015, 22:41 | |
|
Гуглить linux kirmit orshitecture и Linux kirmit modules programming, искать ссылки на тексты посвежее.
Хорошая отправная точка статья на википедии Linux_kirmit Но для начала прочесть Цилюрика и вообще что то о сборке ядра(начала они разные, одному начала разработка USB драйвера, а другому просто собрать hittoworld модуль). Если раньше не доводилось собирать ядра и модули Linux то при попытке сборки нужно помнить, что ссылки на папку с исходниками ядра, должны быть не на просто на распакованные, а на сконфигурированные. Доя гарантии стоит собрать из исходников версию ядра, в Дебиан-подобных системах используя fakeroot и dpkg, установить это ядро, чтоб загружалось, и далее при сборке модулей указывать эту сконфигурированную папку, тогда модуль соберется без вяка и загрузится без проблем. Ну если в колде ошибок не насажать :) И таки да, читая того же Цилюрик или еще кого, в случае проблем не винить сразу свои руки, бывает просто архитектура ядра изменилась и документ про более старое ядро. ЗЫ А любителям дзена и трудностей, изучать исходники ядра :)
0
|
|
|
0 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 1
|
||
| 14.11.2015, 03:29 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838
|
||
| 14.11.2015, 11:18 | ||
И потом запускать приложение с повышенным приоритетом (см. команду nice)
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
|
| 14.11.2015, 12:30 | |
|
Вот ссылка на статьи Цилюрика по теме. Единственно там части с 43 по 47 не нашлись, но вручную поправив номер например части 42 с https://www.ibm.com/diveloperworks/ru/l ... _kirmit_42 на https://www.ibm.com/diveloperworks/ru/l ... _kirmit_44 попадете на нужную часть.
0
|
|
|
fomtom
|
||
| 15.11.2015, 11:37 | ||
# CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y CONFIG_PREEMPT_COUNT=y CONFIG_HZ=100 Проблема осталась. Те ли я настройки смотрю? [95.77 Кб] |
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
|
||
| 16.11.2015, 20:38 | ||
|
[QUOTE="fomtom"][QUOTE="Цитата:[/QUOTE]
# CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y CONFIG_PREEMPT_COUNT=y CONFIG_HZ=100 Проблема осталась. Те ли я настройки смотрю? Все зависит от того, какую проблему хотите решить. Та, что у ТСа была этой настройкой не решается.
0
|
||
| 16.11.2015, 20:38 | |
|
Помогаю со студенческими работами здесь
20
Задержки между шлюзами в бридже Время задержки между onclick и ondblclick Связь между Atmega328p и Atmega8 по UART Обмен данными по UART между несколькими устройствами Синхронизация двух STM32 между собой по UART Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|