RK3588-Entwicklungshinweise (2): Erstellen Sie eine hostübergreifende Qt5.12.10-Umgebung, die MPP und SDK basierend auf dem vom Lösungsanbieter bereitgestellten SDK einführt

Wenn es sich bei dem Artikel um einen Originalartikel handelt, geben Sie beim Nachdruck bitte die Quelle des Originalartikels an.
Die Blog-Adresse dieses Artikels:https ://hpzwl.blog.csdn .net/article/details/133915614

Die Sammlung der Blogbeiträge zur Netzwerktechnologie von Red Fat Man: Eine Sammlung von Entwicklungstechnologien (einschließlich praktischer Qt-Technologie, Raspberry Pi, 3D, OpenCV, OpenGL, ffmpeg, OSG, Mikrocontroller, Software- und Hardwarekombination usw.) wird kontinuierlich aktualisiert. ..

Rockchip-Entwicklungskolumne

Vorheriger Artikel: „RK3588-Entwicklungshinweise (1): Cross-Kompilierung von Qt5.12.10 basierend auf dem vom Lösungsanbieter bereitgestellten Host
Nächster Artikel: Bleiben Sie dran...


Vorwort

  Qt wurde im vorherigen Projekt erstellt. Das Board ist mit dem Mipi-Bildschirm verbunden und läuft, und Qt kann normal ausgeführt werden. Jetzt müssen wir eine Verbindung zum benutzerdefinierten SDK herstellen. Das SDK verwendet harte Dekodierung und andere Ressourcen, die das MPP von BSP einbeziehen. Der nächste Schritt besteht also darin, mpp und sdk in die Qt-Entwicklungsumgebung einzuführen, damit die SDK-Schnittstelle in Qt für die weitere Anwendungsentwicklung aufgerufen werden kann.


Beachten

  Dieser Artikel beschreibt den tatsächlichen Prozess der Entwicklung eingebetteter Motherboard-Anwendungen mit Qt und stellt den Lesern eine Lernreferenz zur Verfügung. Der grundlegende Prozess ist derselbe (erfahrene Anbieter von Entwicklungsboard-Lösungen stellen jedoch im Allgemeinen eine virtuelle Maschine für die Qt-Basisumgebungs-Demo bereit basierend auf dem SDK. ), dieses Mal handelt es sich um einen zusätzlichen Prozess, der nur zu Referenzzwecken aufgezeichnet wird.
  Alle Informationen in diesem Artikel werden nicht der Öffentlichkeit zugänglich gemacht. Die Einhaltung grundlegender Berufsethik ist die Grundlage von allem. Der Schwerpunkt liegt auf dem Lernen und Kennenlernen des Problemlösungsprozesses.


veranschaulichen

  „Die Firmware wurde nicht aktualisiert. Das BSP-Unterstützungspaket wird in Form einer Bibliothek bereitgestellt und kann daher als Bibliothek verwendet werden.
  Fügen Sie hier eine Bildbeschreibung ein


Qt in SDK integriert

Schritt 1: Analysieren Sie die SDK-Zusammensetzung

  Dieser Teil muss mit dem Lösungsanbieter abgeklärt werden. Natürlich gibt es auch alte Serviceunternehmen, die von Anfang an eine vollständige Umgebung und Dokumentation bereitstellen. Der Lösungsanbieter, mit dem wir zusammenarbeiten, hat dieses Mal nichts bezüglich der Kompatibilität unternommen mit Qt, also müssen wir es manuell selbst machen.
  Sdk übernimmt das traditionelle BSP-Entwicklungsmodell Makefile von CMake:
  Fügen Sie hier eine Bildbeschreibung ein

  Es handelt sich lediglich um ein reines SDK-Teilpaket. Dieses Problem tritt auch bei den meisten unerfahrenen Linux-Entwicklern häufig auf, das heißt, es mangelt immer an Dingen (der beste Weg ist, es selbst auszuführen, um zu viel zusätzliche Kommunikation zu vermeiden).
  Fügen Sie hier eine Bildbeschreibung ein

  „Nach der Kommunikation müssen wir die folgenden Bibliotheken einbinden (wobei .a eine statische Bibliothek und .so eine dynamische Bibliothek ist):
  Fügen Sie hier eine Bildbeschreibung ein

Schritt 2: Rufen Sie die allgemeine Bibliothek libcomn.a auf und bestehen Sie den einfachen Test

  Fügen Sie hier eine Bildbeschreibung ein

  Fügen Sie hier eine Bildbeschreibung ein

  „Bei der Ausführung wird es möglicherweise nicht kompliziert, nachdem libcomn.a eingebunden wurde.
  Fügen Sie hier eine Bildbeschreibung ein

  Erfolgreich.

Schritt 3: SDK führt eine separate Modularisierung ein

  „Dies ist der einheitliche Standard unseres Unternehmens für modulare Entwicklung:
  Fügen Sie hier eine Bildbeschreibung ein

Schritt 4: Alle Bibliotheken importieren

  Führen Sie sie einzeln in sdkManager.pri ein. Einige Bibliotheken müssen verarbeitet werden. Die normalerweise eingeführten sind include und lib. Sie werden nicht herausgenommen. Die folgenden separaten müssen angepasst und geändert werden:

opencv-Bibliothek

  Es gibt mehrere Versionen der opencv-Bibliothek. Unsere ist aarch64, daher korrigieren wir die Logik separat:
  Fügen Sie hier eine Bildbeschreibung ein

mpp (Unterstützung der BSP-Entwicklung)

  Das Folgende ist die MPP-Bibliothek, die BSP ist, aber es gibt zwei .0 und .1. Die Kommunikation besteht aus zwei Versionen von BSP. Es kann nur gesagt werden, dass beim Ausführen diejenige verwendet werden soll, die ausgeführt werden kann, und wenn ja, dann ist dies der Fall falsch, ändern Sie es:
  Fügen Sie hier eine Bildbeschreibung ein

ffmpeg-Bibliothek

  Das Folgende ist die Bibliothek von ffmpeg4.0. Es handelt sich höchstwahrscheinlich um einen symbolischen Link. Die Referenzverbindung kann beim Kopieren und Packen des SDK unterbrochen werden. Verwenden Sie hier die größere Datei, um direkt Folgendes einzugeben:
  Fügen Sie hier eine Bildbeschreibung ein

sdkManager.pri

  Die fertige sdkManager.pri:
  Fügen Sie hier eine Bildbeschreibung ein

  Fügen Sie hier eine Bildbeschreibung ein
  Fügen Sie hier eine Bildbeschreibung ein

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

# comn
INCLUDEPATH += $$PWD/sdk/comn/include
LIBS += -L$$PWD/sdk/comn/lib \
        -lcomn

# xzsDevice
INCLUDEPATH += $$PWD/sdk/xzsDevice/include
LIBS += -L$$PWD/sdk/xzsDevice/lib \
        -lrtsp_util \
        -lXzsDevice

# sqlite3
INCLUDEPATH += $$PWD/sdk/sqlite3/include
LIBS += -L$$PWD/sdk/sqlite3/lib \
        -lsqlite3

# Rockit
INCLUDEPATH += $$PWD/sdk/Rockit/include
LIBS += -L$$PWD/sdk/Rockit/lib \
        -lasound \
        -ldrm \
        -lgraphic_lsf \
        -ljpeg \
        -lmali \
        -lpanoStitchApp \
        -lrga \
        -lrkaiq \
        -lrkgfx_avs \
        -lrknn_api \
        -lRkSwCac \
        -lrockchip_mpp \
        -lrockit \
        -lturbojpeg

# opencv
INCLUDEPATH += $$PWD/sdk/opencv/opencv-linux-aarch64/include
LIBS += -L$$PWD/sdk/opencv/opencv-linux-aarch64/lib \
        -llibjpeg-turbo \
        -lopencv_calib3d \
        -lopencv_core \
        -lopencv_dnn \
        -lopencv_features2d \
        -lopencv_imgcodecs \
        -lopencv_imgproc \
        -lopencv_video

# mpp
INCLUDEPATH += $$PWD/sdk/mpp/include
LIBS += -L$$PWD/sdk/mpp/Linux/aarch64/lib \
        -lrockchip_mpp

# MediaStore
INCLUDEPATH += $$PWD/sdk/MediaStore/include
LIBS += -L$$PWD/sdk/MediaStore/lib \
        -lMediaStore \
        -lMediaStoreClient \
        -lsqlite3

# MediaReader
INCLUDEPATH += $$PWD/sdk/MediaReader/include
LIBS += -L$$PWD/sdk/MediaReader/lib \
        -lMediaReader

# jsoncpp-1.9.5
INCLUDEPATH += $$PWD/sdk/jsoncpp-1.9.5/include
LIBS += -L$$PWD/sdk/jsoncpp-1.9.5/lib \
        -ljsoncpp

# HiDevice
INCLUDEPATH += $$PWD/sdk/HiDevice/include
LIBS += -L$$PWD/sdk/HiDevice/lib \
        -lHiDevice

# ffmpeg-4.0
INCLUDEPATH += $$PWD/sdk/ffmpeg-4.0/include
LIBS += -L$$PWD/sdk/ffmpeg-4.0/lib \
        -lavcodec-58 \
        -lavdevice-58 \
        -lavfilter-7 \
        -lavformat-58 \
        -lavutil-56 \
        -lpostproc-55 \
        -lswresample-3 \
        -lswscale-5

HEADERS += \
    $$PWD/sdkManager.h

Schritt 5: Kompilieren Sie eine leere Demo, die alle Umgebungen vorstellt

  Kompilieren und überprüfen Sie, ob alle Bibliotheken erfolgreich eingeführt wurden:
  Fügen Sie hier eine Bildbeschreibung ein

  Fügen Sie hier eine Bildbeschreibung ein

  Fügen Sie hier eine Bildbeschreibung ein

  „Die Kommunikation hier kann darauf zurückzuführen sein, dass die vorherige Version von mpp falsch ist. Ersetzen Sie sie durch die folgende Version:
  Fügen Sie hier eine Bildbeschreibung ein

  Wenn es nach dem Testen nicht funktioniert, kann davon ausgegangen werden, dass die Generierungszeit von .so und .so.1 gleich ist und .so.0 leer ist und die Größe 0 hat. Nach der Kommunikation Mit dem Lösungsanbieter wird später eine separate Bibliothek für ihn zusammengestellt. Die hohe Wahrscheinlichkeit besteht darin, dass die Versionskontrolle nicht gut durchgeführt wird, die Einführung erfolgreich sein muss und am nächsten Tag gelöst wird.
  Am nächsten Tag wurden alle direkt abhängigen Bibliotheken separat neu verpackt:
  Fügen Sie hier eine Bildbeschreibung ein

  Wiedereinführung, verwenden Sie die vorherige Header-Datei und die neue Bibliotheksdatei und fügen Sie sie Schritt für Schritt hinzu:
  Fügen Sie hier eine Bildbeschreibung ein

  „Der Test funktioniert immer noch nicht. Die Debugging-Bibliothek verfügt nicht über diese Funktion:
  Fügen Sie hier eine Bildbeschreibung ein

  Für den Koordinationsplan stellen wir das modulare testSdkDemo unseres Unternehmens bereit, das lediglich Grundfunktionen einführt, damit der Lösungsanbieter sie anpassen kann (bei der herkömmlichen Entwicklung überprüft der Lösungsanbieter normalerweise die Qt-Basisumgebung mit seinem eigenen testSdk, um zu bestätigen, dass das entwickelte SDK dies kann). korrekt eingeführt werden. Qt, siehe andere Anbieter von Entwicklungsboard-Lösungen auf dem Markt).


abschließend

  Da zu diesem Zeitpunkt das von Qt unseres Unternehmens getestete reine SDK dem Lösungsanbieter übergeben wurde, ist es in Ordnung, nachdem der Lösungsanbieter es gut angepasst hat. Weitere SDKs können unter Bezugnahme auf diesen Artikel hinzugefügt werden. Derzeit die ffmpeg-Bibliothek wird für die Player-Anzeige verwendet und es wurde bestätigt, dass es in Ordnung ist. Dieser Artikel endet.


Vorheriger Artikel: „RK3588-Entwicklungshinweise (1): Cross-Kompilierung von Qt5.12.10 basierend auf dem vom Lösungsanbieter bereitgestellten Host
Nächster Artikel: Bleiben Sie dran...

Guess you like

Origin blog.csdn.net/qq21497936/article/details/133915614