2017-01-13 4 views
-2

私はAllwinner A20 cortex-a7 cpuで埋め込みデバイスを使用しています。 Qtはマリのサポートでビルドされました。here、no x11のようなフレームバッファで直接動作します。 私のアプリはuartを使ってデータを受信して​​います。Allwinner A20レガシーカーネルでQt Qmlを使用するとUartデータが壊れます

私はQt 5.7の例から同時にstandart Qml Oscilliscopeを実行すると、uartから受信したデータバイトが失われたり、誤ってアプリケーションになります。私はQSerialPortと私のアプリ(like here)、同じ結果で基本的なCシリアルインプリメンテーションでテストしている。 Htopはシステム負荷が0.75未満(A20は2コア)ですので、システムが完全にロードされていないように見えます。

私のアプリとsysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 runを実行すると、htopは両方のコアに100%の負荷を返しますが、アプリはデータを失うことはありません。

UPDATE:

こんにちは! 私はCRCがあるすべての155ms、その約(65hz)の96バイトのパケットを送信しています 私は115200または250000ボーを使用する場合は、毎秒65パケットがすべてcrcチェックに合格します。しかし、もし私が1mbit以上に速度を上げて、qt GUIアプリケーションを動的qmlインターフェイスで実行すると、uartのデータは失われ、エラー率は約20-24%です。私は私のアプリだけを実行し、qt qml gui appはありません。すべてのデータは正しいですが、エラー率は1,5mbitでも1%以下です。

+0

正しい質問をする方法についてはこちら[http://stackoverflow.com/help/how-to-ask]をご覧ください。これは、規則に従って「不明確」として閉鎖される可能性が高い。 2つのことを指摘する。 A)相関は因果関係ではない。 B)私たちはスループットが非常に高いA20上のQMLを使用しました(WiFiのため、カプセル化によるデータオーバーヘッドが増えます)。 – BaCaRoZzo

+0

@BaCaRoZzo thx。 Wifiは別のものです。ドライバーが正しく動作すれば、socでなくても依存しません。 Iamはsunxiのレガシーカーネルを使用し、uartドライバは高いCPU負荷でいくつかの問題を抱えていると思います。私は正確にその問題を知っていないので、正しく質問する方法を知らない。誰かがこの問題に出会い、助言してくれることを願っています。 – aneox

+0

これは、同じSoCを使用したボードとは別のボードでしたが、とにかく私の仕事は、ワークロードが奇妙に聞こえると言う例でした。 ドライバにバグがあると思われる場合は、問題を調査し、問題を絞り込んでここに投稿してください。私はあなたがこのように答えるつもりはないと思います。がんばろう。 – BaCaRoZzo

答えて

0

私は解決策を得ているようです。データシートa20によると、私はこのSoCが64バイトハードウェアのUARTバッファを持っていることがわかりました。私のパケットサイズは156だったので、今は4つの部分(39バイト)にパケットを分割しようとしましたが、cpuが完全にロードされても0%の不良パケットを取得します。しかし、私は注意する必要があります、qmlエンジンは、影響を与えることができるこの種のCPU負荷を生成します。

関連する問題