2017-01-13 7 views
-2

Я работаю с встроенным устройством с Allwinner A20 cortex-a7 cpu. Qt был построен с поддержкой mali, чтобы работать с фрейм-буфером, как here, нет x11. Мое приложение использует uart для получения данных.Данные Uart повреждены при работе с Qt Qml на устаревшем ядре Allwinner A20

Если я запускаю собственное приложение и (например) стандартное Qml Oscilliscope из примеров Qt 5.7 одновременно, байт данных, полученный из uart, потерян или стал неправильным в моем приложении. У меня есть тест с QSerialPort и базовым серийным внедрением C в моем приложении (like here), тот же результат. Загрузка системы Htop под 0,75 (A20 имеет 2 ядра), поэтому система выглядит не полностью загруженной.

Если я запустил приложение и sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run, htop возвращает 100% нагрузку на оба ядра, но мое приложение не потеряло никаких данных.

UPDATE:

Привет! Я отправляю 96-байтовый пакет с CRC каждые 155 мс, его около (65hz) Если я использую 115200 или 250000 бод, все 65 пакетов в каждой секунде проходят проверку crc. Но если я увеличу скорость до 1 мбит или более и запустив приложение qt gui с динамическим интерфейсом qml, данные в uart проиграли, процент ошибок составит около 20-24%. Если я запускаю только мое приложение и не закрываю qt qml gui app, все данные верны, процент ошибок ниже 1% даже на 1,5 мбит.

+0

Имейте [здесь] (http://stackoverflow.com/help/how-to-ask) о том, как задать правильный вопрос. Вероятно, это будет закрыто как «неясное» в соответствии с правилами. Следует отметить две вещи. A) Корреляция не является причинно-следственной связью. B) Мы использовали QML через A20 с гораздо более высокой пропускной способностью (например, благодаря высокому объему данных на основе данных из-за инкапсуляции), и мы никогда не сталкивались с потерей данных. – BaCaRoZzo

+0

@BaCaRoZzo thx. Wifi - это другое дело, его не в соц и не зависит от него, если драйверы работают правильно. Ям, использующий устаревшее ядро ​​sunxi, и думаю, что драйвер uart имеет некоторые проблемы с высокой загрузкой процессора. Я не знаю, что именно проблема, поэтому не знаю, как правильно спросить. Надеюсь, что кто-то встретил эту проблему и может посоветовать. – aneox

+0

Это был другой совет, чем ваш, с тем же SoC, но так или иначе мой был просто примером того, что рабочая нагрузка звучит странно как проблема. Если вы считаете, что у водителя есть ошибка, расследуйте это и сушите проблему перед публикацией здесь. Я не думаю, что у вас будет такой ответ. Удачи. – BaCaRoZzo

ответ

0

Кажется, я получаю решение. Согласно данным a20, я обнаружил, что этот SoC имеет 64-байтовый аппаратный буфер uart. Размер моего пакета был 156. Теперь я попытался разбить пакет на 4 части (39 байт) и теперь получает 0% плохих пакетов, даже если CPU полностью загружен. Но я хочу отметить, что только процессор qml генерирует такую ​​нагрузку процессора, которая может повлиять.