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
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.
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:
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).
„Nach der Kommunikation müssen wir die folgenden Bibliotheken einbinden (wobei .a eine statische Bibliothek und .so eine dynamische Bibliothek ist):
Schritt 2: Rufen Sie die allgemeine Bibliothek libcomn.a auf und bestehen Sie den einfachen Test
„Bei der Ausführung wird es möglicherweise nicht kompliziert, nachdem libcomn.a eingebunden wurde.
Erfolgreich.
Schritt 3: SDK führt eine separate Modularisierung ein
„Dies ist der einheitliche Standard unseres Unternehmens für modulare Entwicklung:
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:
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:
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:
sdkManager.pri
Die fertige sdkManager.pri:
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:
„Die Kommunikation hier kann darauf zurückzuführen sein, dass die vorherige Version von mpp falsch ist. Ersetzen Sie sie durch die folgende Version:
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:
Wiedereinführung, verwenden Sie die vorherige Header-Datei und die neue Bibliotheksdatei und fügen Sie sie Schritt für Schritt hinzu:
„Der Test funktioniert immer noch nicht. Die Debugging-Bibliothek verfügt nicht über diese Funktion:
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...