• ホーム
  • ブログとニュース
  • 設計プロジェクト例
  • 顧問契約概要
  • お問い合わせ
  • …  
    • ホーム
    • ブログとニュース
    • 設計プロジェクト例
    • 顧問契約概要
    • お問い合わせ

     

    • ホーム
    • ブログとニュース
    • 設計プロジェクト例
    • 顧問契約概要
    • お問い合わせ
    • …  
      • ホーム
      • ブログとニュース
      • 設計プロジェクト例
      • 顧問契約概要
      • お問い合わせ

      RasPi5でEmbeddedWizardアプリをGPU動作させるためのソース修正

      EmbeddedWizardアプリはGPU(グラフィックプロセッサユニット)で動作することを前提としている。しかし調査の結果、GPUを使うための“入口”であるEGL(Embedded-System Graphics Library)を経由できていないことが判明している。その結果GPUを使えていない。

      [ Embedded Wizard ]
      ↓
      [ OpenGL ES ]
      ↓
      (EGL失敗)★
      ↓
      [ llvmpipe(CPU) ]
      ↓
      [ DRM/KMS ]
      ↓
      [ DSI 表示 ]

      この状態をさらに調査した結果、接続されているFreenove5インチの表示デバイスはDSI_1に接続されているが、EmbeddedWizardにおける表示デバイスの判定としてDSI_0と認識されていることが判明した。このDSI_0の認識はEmbeddedWizardが提供するソースに依存していることが分かった。gfx_system_drm.c内のGfxSystemInit( void )関数における以下のopen関数コール後の判定が根本原因である。

       DrmFd = open( DrmDevices[ dev ], O_RDWR );

      resources = drmModeGetResources( DrmFd );

      if ( resources )

      break;

      本来DrmDevicesのconnectを判定条件とするべきであるが、デバイスの存在を判定条件としている。これでは0から始まるDrmDevicesの判定で0にて判定クリアとなりbreakとなる。実際はデバイスは1で接続されているので、EGLは0の表示先が存在しないため間違ったデバイスであると認識することになりEGLの初期化に失敗することになる。

      修正としては、DrmDevicesを1で固定として判定する修正を実施している。

      修正結果として以下のengineの消費時間が増加していることが確認でき、かつtopでもCPU占有時間を90%から10%以下にダウンできている。
      cat /proc/*/fdinfo/* | grep drm-engine
      drm-engine-bin: 1435627157 ns
      drm-engine-render: 12307580191 ns

      現在実現しているEmbeddedWizardアプリにおいては、GPUを使わないCPUオンリーの処理でもグラフィック表示は違和感なくできているが、GPU(グラフィックプロセッサユニット)を使う本来の方式を実現できたので、より動きのあるグラフィックスの表示対応のケースも自信をもって実現できると考える。


































      前へ
      EmbeddedWizardアプリの滑らかさの比較検証からの事実
      次へ
       サイトへ戻る
      strikingly iconStrikinglyを搭載
      クッキーの使用
      ブラウジングエクスペリエンス、セキュリティ、データ収集を向上させるためにクッキーを使用します。 同意すると、広告と分析のための クッキーの使用に同意したことになります。 クッキーの設定はいつでも変更できます。 詳しく見る
      同意する
      設定
      すべて拒否する
      クッキー設定
      必要なクッキー
      こちらのクッキーは、セキュリティ、ネットワーク管理、アクセシビリティなどのコア機能を有効にします。こちらのクッキーをオフにすることはできません。
      アナリティクスクッキー
      こちらのクッキーは、訪問者がサイトをどのように操作しているかをよりよく理解し、エラーを発見するのに役立ちます。
      設定クッキー
      こちらのクッキーにより、サイトは、拡張機能とパーソナライズを提供するために行った選択を記憶することができます。
      保存