dimone 0 18 октября, 2017 Опубликовано 18 октября, 2017 (изменено) · Жалоба Программа зачата "Кубом", работает с интрфейсами USАRT и USB -устройством (виртуальным СОМ-портом) под FreeRtos ,соответственно работа с интерфейсами вынесена в задачи, основное тело -Superloop, вертится в фоне.. Обмен по системе запрос-ответ, кол-во байт не больше десятка,частота запросов 10Гц и тут интересное, если обмен по USАRT не вызывает никаких нареканий, и спокойно пропускает и 100Гц и пол-кило.. то тот-же обмен , только по VCP -глючит.. Каждый новый запрос вызывает подвисание системы, и на 10Гц при мизерных количиствах принятых-переданых данных фоновая программа практически еле шевелется!.. соответственно, при прикращении подачи запросов программа отмерзает.. Естесственно возникает два вопроса: первый, как заставить USB stаste maschne шевелиться быстрее? (предполагаю, что она какие-то mallос-и делает..) и второй, как противостоять "флуду" , т.е. блокировать прием запросов по vcp таймаутом? СDC LL_suspend\resumuе,start\stop отваливают СОМ-порт - попытки отобрать приоритет у USB приводят нарушению работы.. Изменено 18 октября, 2017 пользователем dimone Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 20 октября, 2017 Опубликовано 20 октября, 2017 · Жалоба основное тело -Superloop, вертится в фоне.. Бороться следует не с симптомами (как принято в современной "медицине"), а искать конкретно виновника "болезни". В противном случае это только усугубит ситуацию и впоследствии "лечение" будет уже по-просту невозможным. В данном случае нужно сначала разобраться с неким "Superloop", которого не должно быть в принципе в системе с RTOS. Иначе, зачем тут вообще RTOS?? Потом нужно отключать разные части проекта, создавая соотв. тестовые "заглушки", чтобы локализовать виновника и лечить его, а не весь проект, как вы щас пытаетесь ;) - попытки отобрать приоритет у USB приводят нарушению работы.. Скорее всего загрузка CPU у вас достигает 100%, как в винде )) В этом случае ваша система реально времени перестает быть таковой! Кстати, есть у вас логи по степени загрузки всего ядра? Или хотя бы максимально зафиксированное значение? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimone 0 31 октября, 2017 Опубликовано 31 октября, 2017 (изменено) · Жалоба Всё оказалось прозаично. Как в одном из законов программизма сказано, величина мистичиских действий программы пропорциональна сделанной программистом глупости.. В коде USB задачи была вставлена систмная задержка, которая заставляла всё ползать и лагать.. А некий Superloop, это основное тело сорокакилобайлной программы, до этого существовавшей на 649Меге.. и перенесенная\портрованная в песочницу на STМ под Rtos.. с передефайном даже имен портов, настолко срaочно было нужно.. С прикрученными после свистелками ..главное, что всё заработалo. -Большое спасибо за посильную помощь. Изменено 31 октября, 2017 пользователем dimone Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 31 октября, 2017 Опубликовано 31 октября, 2017 · Жалоба систмная задержка А покажите код этой задержки ..главное, что всё заработалo. Я раньше тоже так относился к проектам, но жисть напрочь отучила так делать ... Видать, это нужно прочувствовать на собственной шкуре. Имхо, лучше рано, чем поздно ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться