Εγχειρίδιο χρήστη NXP AN13948 Ενσωμάτωση εφαρμογής LVGL GUI σε Smart HMI Platform
Εισαγωγή
Η NXP κυκλοφόρησε ένα κιτ ανάπτυξης λύσεων με το όνομα SLN-TLHMI-IOT. Επικεντρώνεται σε έξυπνες εφαρμογές HMI που περιέχουν δύο εφαρμογές – καφετιέρα και ανελκυστήρα (η εφαρμογή έξυπνου πίνακα είναι σύντομα διαθέσιμη).
Για την παροχή πληροφοριών στον χρήστη, περιλαμβάνονται ορισμένα βασικά έγγραφα, π.χample, τον οδηγό προγραμματιστή.
Ο οδηγός εισάγει τον βασικό σχεδιασμό λογισμικού και την αρχιτεκτονική των εφαρμογών που καλύπτουν όλα τα στοιχεία της λύσης.
Αυτά τα στοιχεία περιλαμβάνουν bootloader, πλαίσιο και σχεδιασμό HAL για να βοηθήσουν τους προγραμματιστές να εφαρμόσουν πιο εύκολα και αποτελεσματικά τις εφαρμογές τους χρησιμοποιώντας το SLN-TLHMI-IOT.
Για περισσότερες λεπτομέρειες σχετικά με τα έγγραφα και τη λύση, επισκεφθείτε: Λύση NXP EdgeReady Smart HMI βασισμένη στο i.MX RT117H με ML Vision, Voice και Graphical UI.
Ωστόσο, η εισαγωγή εστιάζει στις ιδέες και τη βασική χρήση. Λόγω της συμμόρφωσης του λογισμικού που βασίζεται στο πλαίσιο, εξακολουθεί να μην είναι εύκολο για τους προγραμματιστές να γνωρίζουν πώς να υλοποιούν τις εφαρμογές τους.
Για να επιταχυνθεί η ανάπτυξη, απαιτούνται πρόσθετοι οδηγοί για την εισαγωγή του τρόπου υλοποίησης των κύριων στοιχείων (π.χample, LVGL GUI, όραση και αναγνώριση φωνής) βήμα προς βήμα.
Για π.χampΈτσι, οι πελάτες θα πρέπει να έχουν τη δική τους εφαρμογή LVGL GUI διαφορετική από τις τρέχουσες εφαρμογές στη λύση.
Αφού εφαρμόσουν το LVGL GUI τους με τον GUI Guider που παρέχεται από την NXP, πρέπει να το ενσωματώσουν στην έξυπνη πλατφόρμα λογισμικού HMI που βασίζεται στο πλαίσιο.
Αυτή η σημείωση εφαρμογής περιγράφει τον τρόπο ενσωμάτωσης της εφαρμογής LVGL GUI που αναπτύχθηκε από τον χρήστη στην έξυπνη πλατφόρμα λογισμικού HMI με βάση το πλαίσιο.
Οι κωδικοί αναφοράς παρουσιάζονται επίσης μαζί με αυτήν τη σημείωση εφαρμογής.
Σημείωμα: Αυτή η σημείωση εφαρμογής δεν εξηγεί πώς να αναπτύξετε το GUI με βάση το LVGL με το εργαλείο λογισμικού GUI Guider.
Το πάνωview του οδηγού LVGL και GUI περιγράφεται στην Ενότητα 1.1 και στην Ενότητα 1.2.
Ελαφριά και ευέλικτη βιβλιοθήκη γραφικών
Η Light and Versatile Graphics Library (LVGL) είναι μια δωρεάν και ανοιχτού κώδικα βιβλιοθήκη γραφικών.
Παρέχει όλα όσα χρειάζεστε για να δημιουργήσετε ένα ενσωματωμένο GUI με εύχρηστα γραφικά στοιχεία, όμορφα οπτικά εφέ και χαμηλό αποτύπωμα μνήμης.
Οδηγός GUI
Το GUI Guider είναι ένα φιλικό προς το χρήστη εργαλείο ανάπτυξης γραφικών διεπαφής χρήστη από την NXP που επιτρέπει την ταχεία ανάπτυξη οθονών υψηλής ποιότητας με τη βιβλιοθήκη γραφικών LVGL ανοιχτού κώδικα.
Το πρόγραμμα επεξεργασίας μεταφοράς και απόθεσης του GUI Guider διευκολύνει τη χρήση των πολλών δυνατοτήτων του LVGL. Αυτές οι δυνατότητες περιλαμβάνουν γραφικά στοιχεία, κινούμενα σχέδια και στυλ για τη δημιουργία ενός GUI με ελάχιστη ή καθόλου κωδικοποίηση.
Με το πάτημα ενός κουμπιού, μπορείτε να εκτελέσετε την εφαρμογή σας σε ένα προσομοιωμένο περιβάλλον ή να την εξαγάγετε σε ένα έργο-στόχο.
Ο δημιουργημένος κώδικας από το GUI Guider μπορεί εύκολα να προστεθεί στο έργο σας, επιταχύνοντας τη διαδικασία ανάπτυξης και επιτρέποντάς σας να προσθέσετε μια ενσωματωμένη διεπαφή χρήστη στην εφαρμογή σας χωρίς προβλήματα.
Το GUI Guider είναι δωρεάν για χρήση με NXP MCU γενικής χρήσης και crossover και περιλαμβάνει ενσωματωμένα πρότυπα έργων για πολλές υποστηριζόμενες πλατφόρμες.
Για να μάθετε περισσότερα σχετικά με την ανάπτυξη LVGL και GUI στο GUI Guider, επισκεφτείτε τη διεύθυνση https://lvgl.io/ και την GUI Guider.
Περιβάλλον ανάπτυξης
Προετοιμάστε και ρυθμίστε το περιβάλλον ανάπτυξης για την ανάπτυξη και την ενσωμάτωση μιας εφαρμογής GUI στην έξυπνη πλατφόρμα HMI.
Περιβάλλον υλικού
Το ακόλουθο υλικό απαιτείται για την επίδειξη μετά την ανάπτυξη:
- Το έξυπνο κιτ ανάπτυξης HMI που βασίζεται στο NXP i.MX RT117H
- SEGGER J-Link με προσαρμογέα Cortex-M 9 ακίδων
περιβάλλον του λογισμικού
Τα εργαλεία λογισμικού και οι εκδόσεις τους που χρησιμοποιούνται σε αυτήν τη σημείωση εφαρμογής παρουσιάζονται ως εξής:
- GUI Guider V1.5.0-GA
- MCUXpresso IDE V11.7.0
Σημείωμα: Ένα σφάλμα σε εκδόσεις πριν από την 11.7.0 δεν επιτρέπει σωστά ενσωματωμένα έργα πολλαπλών πυρήνων.
Επομένως, απαιτείται έκδοση 11.7.0 ή μεταγενέστερη. - RT1170 SDK V2.12.1
- Πλατφόρμα λογισμικού SLN-TLHMI-IOT – έξυπνοι πηγαίοι κώδικες HMI που κυκλοφορούν στο επίσημο αποθετήριο GitHub
Για να μάθετε περισσότερα σχετικά με τον τρόπο ρύθμισης και εγκατάστασης του περιβάλλοντος υλικού και λογισμικού, ανατρέξτε στην ενότητα Ξεκινώντας με το SLN-TLHMI-IOT (έγγραφο MCU-SMHMI-GSG).
Ενσωματώστε την εφαρμογή LVGL GUI στην έξυπνη πλατφόρμα HMI
Η έξυπνη πλατφόρμα λογισμικού HMI βασίζεται στην αρχιτεκτονική πλαισίου. Οι προγραμματιστές δυσκολεύονται να προσθέσουν την εφαρμογή LVGL GUI στην έξυπνη πλατφόρμα λογισμικού HMI ακόμα κι αν διαβάσουν τον οδηγό προγραμματιστή και γνωρίζουν για το πλαίσιο.
Οι επόμενες ενότητες εξηγούν πώς να το εφαρμόσετε βήμα προς βήμα.
Αναπτύξτε την εφαρμογή LVGL GUI στο GUI Guider
Όπως αναφέρθηκε παραπάνω, ο τρόπος ανάπτυξης του LVGL GUI στο GUI Guider δεν είναι η έμφαση σε αυτήν τη σημείωση εφαρμογής.
Αλλά ένας πρώην GUIampείναι απαραίτητο.
Επομένως, ένα απλό πρότυπο GUI με το όνομα Slider Progress που παρέχεται στο GUI Guider επιλέγεται ως το GUI exampγια γρήγορη ρύθμιση.
Το πρότυπο Slider Progress GUI χρησιμοποιείται επειδή περιέχει μια εικόνα που απαιτείται για την επίδειξη της δημιουργίας πόρων εικόνας στην εφαρμογή.
Το GUI πρώηνampLe είναι πολύ εύκολο να δημιουργηθεί: Για να δημιουργήσετε ένα έργο με την ενημερωμένη βιβλιοθήκη LVGL V8.3.2 και το πρότυπο πλακέτας ως MIMXRT1176xxxxx, ανατρέξτε στον Οδηγό χρήστη GUI Guider (έγγραφο GUIGUIDERUG).
Το σχήμα 1 δείχνει τις ρυθμίσεις του έργου.
Σημείωμα: Ο τύπος του πίνακα πρέπει να επιλεγεί, όπως φαίνεται στο κόκκινο πλαίσιο στην Εικόνα 1, όπως χρησιμοποιείται στην τρέχουσα πλακέτα ανάπτυξης.
Αφού δημιουργήσετε το έργο, εκτελέστε τον προσομοιωτή για να δημιουργήσετε τους σχετικούς κωδικούς GUI LVGL και να δημιουργήσετε επίσης το έργο.
Μπορείτε να ελέγξετε την επίδραση του GUI example στον προσομοιωτή.
Εικόνα 1. Ρύθμιση έργου GUI στο GUI Guider
Δημιουργήστε το έργο σας σε έξυπνο HMI
Σημείωμα: Πρώτα, δημιουργήστε το έργο σας στο MCUXpresso IDE.
Μετά το LVGL GUI exampέχει κατασκευαστεί, μπορεί να πάει στον κύριο στόχο για να το ενσωματώσει στην έξυπνη πλατφόρμα λογισμικού HMI στο έργο MCUXpresso για την υλοποίηση της εφαρμογής GUI σας.
Η απλή και γρήγορη μέθοδος είναι η κλωνοποίηση του τρέχοντος έργου εφαρμογής που παρουσιάζεται στην έξυπνη πλατφόρμα HMI.
Η εφαρμογή ανελκυστήρας είναι η καλύτερη επιλογή ως η κλωνοποιημένη πηγή, καθώς έχει απλή υλοποίηση.
Για να δημιουργήσετε το έργο σας, ακολουθήστε τα παρακάτω βήματα:
- Αντιγράψτε και επικολλήστε τον φάκελο "elevator" στον κλωνοποιημένο έξυπνο πηγαίο κώδικα HMI από το GitHub. Μετονομάστε το σε δικό σας.
Για αυτό το πρώηνample, επιλέξαμε "slider_progress", ακολουθώντας το όνομα του GUI example. - Στο φάκελο "slider_progress", εισαγάγετε το φάκελο "lvgl_vglite_lib" που περιέχει το έργο LVGL GUI.
- Ανοίξτε το σχετικό με το έργο files .cproject και .project και αντικαταστήστε όλη τη συμβολοσειρά "elevator" με τη συμβολοσειρά ονόματος έργου "slider_progress".
- Κάντε την παρόμοια αντικατάσταση και για τα δύο έργα files στους φακέλους “cm4” και “cm7”.
Ρυθμίστε το έργο σας κλωνοποιώντας το έργο του ανελκυστήρα files.
Όπως φαίνεται στο Εικόνα 2 τα έργα σας μπορούν τώρα να ανοίξουν στο MCUXpresso IDE με τον ίδιο τρόπο όπως το έργο του ανελκυστήρα.
Εικόνα 2. Ρύθμιση έργων στο MCUXpresso
Δημιουργήστε τους πόρους για έξυπνο HMI
Γενικά, οι εικόνες χρησιμοποιούνται σε GUI (ήχοι που χρησιμοποιούνται και σε φωνητικές προτροπές).
Οι εικόνες και οι ήχοι ονομάζονται πόροι, αποθηκευμένοι σε μια αναλαμπή σε σειρά. Πριν τους προγραμματίσετε σε flash, οι πόροι θα πρέπει να ενσωματωθούν σε ένα δυαδικό αρχείο file.
Η κύρια δουλειά είναι να αντικαταστήσετε τα ονόματα της εφαρμογής αναφοράς (ασανσέρ) με τα δικά σας.
Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα:
- Διαγράψτε τον κλωνοποιημένο φάκελο "εικόνες" στο slider_progress/resource.
- Αντιγράψτε το φάκελο "εικόνες" κάτω από το \δημιουργημένο στο έργο σας Οδηγός GUI.
- Επικολλήστε το κάτω από το slider_progress/resource (Δηλαδή, χρησιμοποιήστε τις δικές σας εικόνες και όχι αυτές από την εφαρμογή ανελκυστήρας.).
- Διαγράψτε το *.mk file χρησιμοποιείται για το GUI Guider στο φάκελο "εικόνες".
- Μετονομάστε το files elevator_resource.txt, elevator_resource_build.bat και elevator_resource_build.sh στο φάκελο "resource" στο όνομα του έργου σας slider_progress_resource.txt, slider_progress_resource_build.bat και slider_progress_resource_build.sh.
Παρατήρηση:- elevator_resource.txt: περιέχει τις διαδρομές και τα ονόματα όλων των πόρων (εικόνες και ήχους) που χρησιμοποιούνται στην εφαρμογή.
- elevator_resource_build.bat/elevator_resource_build.sh: χρησιμοποιείται για τη δημιουργία των πόρων σε Windows και Linux αντίστοιχα.
- Αφού ανοίξετε το slider_progress_resource.txt file, αντικαταστήστε όλες τις συμβολοσειρές "elevator" με "slider_progress".
- Αφαιρέστε όλες τις παλιές εικόνες και προσθέστε νέες με την εικόνα σας file ονόματα (εδώ είναι "_scan_example_597x460.c”), όπως εικόνα ../../slider_progress/resource/images/_scan_example_597x460.c.
- Ανοίξτε το slider_progress_resource.bat file για Windows και αντικαταστήστε όλες τις συμβολοσειρές "elevator" με "slider_progress". Κάντε το ίδιο με το file slider_progress_resource.sh για Linux.
- Κάντε διπλό κλικ στην παρτίδα file slider_progress_resource_build.bat για Windows.
- Το παράθυρο εντολών εμφανίζεται και εκτελείται αυτόματα για τη δημιουργία του δυαδικού πόρου εικόνας file που περιέχει τα δεδομένα εικόνας και τις πληροφορίες πρόσβασης σε πόρους που περιέχουν κωδικούς C για να ορίσετε όλες τις θέσεις εικόνας σε flash και το συνολικό μέγεθος byte των εικόνων.
Αφού εμφανιστεί το μήνυμα "Ολοκληρώθηκε η δημιουργία πόρων!", το δυαδικό αρχείο πόρων εικόνας file με το όνομα slider_progress_resource.bin και τις πληροφορίες πρόσβασης στον πόρο file με το όνομα resource_information_table.txt δημιουργούνται στο φάκελο "resource".
Το δυαδικό πόρο της εικόνας file προγραμματίζεται σε flash και οι πληροφορίες πρόσβασης σε πόρους χρησιμοποιούνται για πρόσβαση στους πόρους στο smart HMI (βλ. Ενότητα 3.4.1).
Ενσωματώστε την εφαρμογή LVGL GUI στο έξυπνο HMI
Οι κωδικοί εφαρμογής LVGL GUI (εδώ είναι το SliderProgress GUI example) και οι ενσωματωμένοι πόροι εικόνας, συμπεριλαμβανομένων των πληροφοριών πρόσβασης, μπορούν να προστεθούν στο έξυπνο HMI.
Επιπλέον, για να εφαρμόσετε την εφαρμογή LVGL GUI στο έξυπνο HMI, απαιτείται να προσθέσετε τις συσκευές HAL που σχετίζονται με το LVGL GUI και τις σχετικές διαμορφώσεις.
Η εφαρμογή LVGL GUI εκτελείται στον πυρήνα M4 και η σχετική υλοποίηση βρίσκεται σχεδόν στο έργο M4 "sln_smart_tlhmi_slider_progress_cm4".
Τα λεπτομερή βήματα περιγράφονται σε περαιτέρω υποενότητες.
Προσθέστε κώδικες και πόρους GUI LVGL
Οι κωδικοί εφαρμογής LVGL GUI που χρησιμοποιούνται για το έξυπνο HMI βρίσκονται στους φακέλους "custom" και "generated" στο έργο GUI Guider.
Για να προσθέσετε τους κωδικούς στο smart HMI, ακολουθήστε τα παρακάτω βήματα:
- Αντικαταστήστε τα custom.c και custom.h στο slider_progress/cm4/custom/ με αυτά του φακέλου "custom" στο έργο GUI Guider.
- Αφαιρέστε τους φακέλους "δημιουργημένα" από το slider_progress/cm4/.
Στη συνέχεια, αντιγράψτε τον φάκελο "δημιουργημένο" από το έργο GUI Guider και επικολλήστε τον στο slider_progress/cm4/. - Διαγράψτε τους φακέλους "image" και "mPythonImages" και όλα τα files *.mk και *.py στον φάκελο "δημιουργημένο".
Όπως αναφέρθηκε παραπάνω, οι εικόνες στο φάκελο "εικόνα" είναι ενσωματωμένες σε ένα δυαδικό αρχείο πόρων file, επομένως δεν απαιτείται ο φάκελος "εικόνα".
Ο φάκελος “mPythonImages” και όλα τα fileΤα s *.mk και *.py είναι ανεπιθύμητα για το έξυπνο HMI. - Για να προσθέσετε έλεγχο mutex με βάση την έξυπνη πλατφόρμα HMI και να ρυθμίσετε τις θέσεις της εικόνας στο φλας, τροποποιήστε το file custom.c στο MCUXpresso IDE.
Όλα αυτά ορίζονται από το RT_PLATFORM. - Ανοίξτε το έργο ανελκυστήρα στο MCUXpresso IDE. Αναζητήστε τον ορισμό μακροεντολής RT_PLATFORM στο custom.c στην περιοχή sln_smart_tlhmi_elevator_cm4 > custom και αντιγράψτε όλες τις γραμμές κώδικα από #if defined(RT_PLATFORM) στο #endif και επικολλήστε τις στο file custom.c στην περιοχή sln_smart_tlhmi_slider_progress_cm4 > custom.
- Διαγράψτε τις γραμμές κώδικα κάτω από το #else που περιέχουν #else καθώς χρησιμοποιούνται για το GUI του ανελκυστήρα.
Οι προστιθέμενες γραμμές κώδικα καλύπτουν τα εξής:
- Το περιλαμβάνει files έχουν ως εξής:
- Η δήλωση μεταβλητής έχει ως εξής:
- Οι κωδικοί C στη συνάρτηση custom_init() είναι οι εξής:
- Οι κωδικοί C για τις συναρτήσεις _takeLVGLMutex(), _giveLVGLMutex() και setup_imgs() όπου ορίζονται οι θέσεις όλων των εικόνων.
- Το περιλαμβάνει files έχουν ως εξής:
- Αντικαταστήστε τους κωδικούς στη συνάρτηση setup_imgs() με τους κωδικούς ρύθμισης τοποθεσίας για εικόνες στο resource_information_table.txt file (βλ. Ενότητα 3.3).
Σε αυτήν τη σημείωση εφαρμογής, υπάρχει μόνο ένας πόρος εικόνας που έχει ρυθμιστεί ως: _scan_example_597x460.data = (βάση + 0); Αφού το κάνετε, η συνάρτηση setup_imgs() εμφανίζεται ως εξής:
- Για να προσθέσετε τον ορισμό της μακροεντολής και τη δήλωση συνάρτησης που σχετίζονται με το custom.c, τροποποιήστε το custom.h file κάτω από sln_smart_tlhmi_slider_progress_cm4 > custom, όπως φαίνεται παρακάτω:
- Για να ορίσετε τις εικόνες στην εφαρμογή LVGL GUI, τροποποιήστε το lvgl_images_internal.h file κάτω από sln_smart_tlhmi_slider_progress_cm4 > custom.
- Ανοίξτε μία εικόνα *.c file (εδώ είναι _scan_example_597x460.c) κάτω από το /generated/ image/ στο έργο GUI Guider.
Αντιγράψτε τον ορισμό της εικόνας στο τέλος του file. Επικολλήστε το στο lvgl_images_internal.h file αφού διαγράψετε όλους τους αρχικούς ορισμούς σχετικά με τις εικόνες για την εφαρμογή ανελκυστήρας. - Διαγραφή .data = _scan_example_597x460_map στον πίνακα αφού τα .data έχουν οριστεί στη συνάρτηση setup_imgs().
Ο πίνακας ορίζεται τελικά στο lvgl_images_internal.h file, όπως φαίνεται παρακάτω:
Παρατήρηση: Επαναλάβετε τις παραπάνω λειτουργίες για όλες τις εικόνες files ένα προς ένα αν υπάρχουν πολλαπλές εικόνες files.
- Ανοίξτε μία εικόνα *.c file (εδώ είναι _scan_example_597x460.c) κάτω από το /generated/ image/ στο έργο GUI Guider.
- Διαμορφώστε το συνολικό μέγεθος του πόρου εικόνας ορίζοντας τον ορισμό μακροεντολής APP_LVGL_IMGS_SIZE στο app_config.h file κάτω από sln_smart_tlhmi_slider_progress_cm7 > πηγή με το νέο μέγεθος των εικόνων.
Αυτό το νέο μέγεθος είναι διαθέσιμο στον ενσωματωμένο πόρο resource_information_table.txt file.
Προσθέστε συσκευές και διαμορφώσεις HAL
Με βάση την αρχιτεκτονική πλαισίου, δύο συσκευές HAL (συσκευές οθόνης και εξόδου) έχουν σχεδιαστεί για εφαρμογή LVGL GUI.
Οι υλοποιήσεις των δύο συσκευών είναι διαφορετικές ανάλογα με τις διαφορετικές εφαρμογές LVGL GUI αν και υπάρχουν κοινά σχέδια αρχιτεκτονικής για αυτές.
Υλοποιούνται χωριστά σε δύο files.
Επομένως, πρέπει να κλωνοποιήσει τα δύο files από την παρούσα εφαρμογή ανελκυστήρα και τροποποιήστε την εφαρμογή LVGL GUI.
Στη συνέχεια, ενεργοποιήστε τις συσκευές σας στη διαμόρφωση file.
Η εφαρμογή LVGL GUI είναι χτισμένη στην έξυπνη πλατφόρμα HMI που βασίζεται στο πλαίσιο.
Οι λεπτομερείς τροποποιήσεις μπορούν να γίνουν στο MCUXpresso IDE, όπως φαίνεται παρακάτω:
- Εφαρμογή συσκευής οθόνης HAL
- Αντιγράψτε και επικολλήστε το hal_display_lvgl_elevator.c file κάτω από την ομάδα sln_smart_tlhmi_slider_progress_cm4 > πλαίσιο > hal > εμφάνιση στο έργο MCUXpresso. Μετονομάστε το σε hal_display_lvgl_sliderprogress.c για την εφαρμογή σας.
- Ανοίξτε το file hal_display_lvgl_sliderprogress.c και αντικαταστήστε όλες τις συμβολοσειρές "elevator" με τη συμβολοσειρά της εφαρμογής σας "SliderProgress" στο file.
- Εφαρμογή συσκευής εξόδου HAL
- Αντιγράψτε και επικολλήστε το hal_output_ui_elevator.c file κάτω από την ομάδα sln_smart_tlhmi_slider_progress_cm4 > πλαίσιο > hal > έξοδος στο έργο MCUXpresso. Μετονομάστε το σε hal_output_ui_sliderprogress.c για την εφαρμογή σας.
- Ανοίξτε το file hal_output_ui_sliderprogress.γ. Καταργήστε όλες τις λειτουργίες που σχετίζονται με την εφαρμογή του ανελκυστήρα εκτός από τις ακόλουθες βασικές κοινές λειτουργίες της συσκευής HAL:
HAL_OutputDev_UiElevator_Init();
HAL_OutputDev_UiElevator_Deinit();
HAL_OutputDev_UiElevator_Start();
HAL_OutputDev_UiElevator_Stop();
HAL_OutputDev_UiElevator_InferComplete();
HAL_OutputDev_UiElevator_InputNotify();
Επιπλέον, κρατήστε τις δηλώσεις των παρακάτω δύο λειτουργιών:
APP_OutputDev_UiElevator_InferCompleteDecode();
APP_OutputDev_UiElevator_InputNotifyDecode(); - Καθαρίστε τη συνάρτηση HAL_OutputDev_UiElevator_InferComplete() για τη δημιουργία της εφαρμογής σας αργότερα.
Στη συνάρτηση, καταργήστε και τις δύο κλήσεις συνάρτησης _InferComplete_Vision() και _InferComplete_Voice() που χρησιμοποιούνται για το χειρισμό των αποτελεσμάτων από τους αλγόριθμους όρασης και φωνής για εφαρμογή ανελκυστήρα. - Καθαρίστε τη συνάρτηση HAL_OutputDev_UiElevator_InputNotify() και διατηρήστε τη βασική αρχιτεκτονική για περαιτέρω ανάπτυξη εφαρμογών.
Τέλος, η συνάρτηση έχει ως εξής:
- Καταργήστε όλες τις δηλώσεις μεταβλητών, συμπεριλαμβανομένου του enum και του πίνακα, εκτός από αυτές που χρησιμοποιούνται για τις κοινές υλοποιήσεις s_UiSurface και s_AsBuffer[].
- Αντικαταστήστε όλες τις συμβολοσειρές "elevator" με τη συμβολοσειρά της εφαρμογής σας "SliderProgress".
- Ενεργοποιήστε και διαμορφώστε και τις δύο συσκευές HAL
- Ανοίξτε το board_define.h file κάτω από sln_smart_tlhmi_slider_progress_cm4 > πίνακας.
Αντικαταστήστε όλες τις συμβολοσειρές "elevator" με τη συμβολοσειρά της εφαρμογής σας "SliderProgress" στο file.
Ενεργοποιεί και διαμορφώνει την οθόνη και τις συσκευές HAL εξόδου σύμφωνα με τους ορισμούς ENABLE_DISPLAY_DEV_LVGLSliderProgress και ENABLE_OUTPUT_DEV_UiSliderProgress. - Ανοίξτε το lvgl_support.c file κάτω από sln_smart_tlhmi_slider_progress_cm4 > πίνακας. Αντικαταστήστε όλες τις συμβολοσειρές "elevator" με τη συμβολοσειρά της εφαρμογής σας "SliderProgress" στο file.
Ενεργοποιεί την κάμερα προview σε GUI σε επίπεδο προγράμματος οδήγησης οθόνης.
- Ανοίξτε το board_define.h file κάτω από sln_smart_tlhmi_slider_progress_cm4 > πίνακας.
- Καταχωρίστε και τις δύο συσκευές HAL
Ανοίξτε το κύριο M4 sln_smart_tlhmi_cm4.cpp file κάτω από sln_smart_tlhmi_slider_progress_cm4 > πηγή.
Αντικαταστήστε όλες τις συμβολοσειρές "elevator" με τη συμβολοσειρά της εφαρμογής σας "SliderProgress" στο file.
Καταχωρεί την οθόνη και τη συσκευή εξόδου HAL για την εφαρμογή σας αντί για την εφαρμογή ανελκυστήρας.
Επομένως, η ενσωμάτωση ολοκληρώθηκε για την εκτέλεση της βασικής εφαρμογής LVGL GUI σε έξυπνο HMI.
Ανάλογα με περισσότερες απαιτήσεις για την εφαρμογή, μπορούν να προστεθούν περισσότερες υλοποιήσεις με βάση την ενσωματωμένη βασική εφαρμογή.
Επίδειξη
Η επίδειξη εφαρμογής "slider_progress" υλοποιείται μαζί με αυτήν τη σημείωση εφαρμογής.
Αφού αποσυμπιέσετε το πακέτο λογισμικού επίδειξης, βάλτε τα παρακάτω files και φάκελο στο έξυπνο λογισμικό HMI:
- Ο file hal_display_lvgl_sliderprpgress.c κάτω από [demo]\framework\hal\display\ στη διαδρομή [smart HMI]\framework\hal\display\
- Ο file hal_output_ui_slider_progress.c κάτω από [demo]\framework\hal\output\ στη διαδρομή [smart HMI]\framework\hal\output\
- Ο φάκελος "slider_progress" στη διαδρομή ρίζας του [smart HMI]\
Τα έργα μπορούν να ανοίξουν στο MCUXpresso IDE, όπως ακριβώς η εφαρμογή καφετιέρας/ασανσέρ που παρουσιάζεται στην έξυπνη πλατφόρμα HMI.
Μετά τον προγραμματισμό του ενσωματωμένου *.axf file στη διεύθυνση 0x30100000 και στον δυαδικό πόρο file στη διεύθυνση 0x30700000, η επίδειξη GUI του LVGL μπορεί να εκτελεστεί με επιτυχία στην έξυπνη πλακέτα ανάπτυξης HMI (δείτε την Εικόνα 3 για την εμφάνιση της οθόνης).
Σημείωμα: Εάν χρησιμοποιείτε την έκδοση 1.7.0 του MCUXpresso IDE, ενεργοποιήστε τη "Διαχείριση σεναρίου συνδέσμου" στο Setting > MCU C++ Linker > Managed Linker Script πριν δημιουργήσετε το έργο CM4.
Εικόνα 3. Επίδειξη οθόνης LVGL GUI σε έξυπνη πλακέτα ανάπτυξης HMI
Ιστορικό αναθεωρήσεων
Το ιστορικό αναθεωρήσεων συνοψίζει τις αναθεωρήσεις σε αυτό το έγγραφο.
Πίνακας 1. Ιστορικό αναθεωρήσεων
Αριθμός αναθεώρησης | Ημερομηνία | Ουσιαστικές αλλαγές |
1 | 16 Ιουνίου 2023 | Αρχική έκδοση |
Σημείωση σχετικά με τον πηγαίο κώδικα στο έγγραφο
ExampΟ κώδικας που εμφανίζεται σε αυτό το έγγραφο έχει τα ακόλουθα πνευματικά δικαιώματα και άδεια χρήσης BSD-3-Clause:
Πνευματικά δικαιώματα 2023 NXP Επιτρέπεται η αναδιανομή και η χρήση σε πηγαία και δυαδική μορφή, με ή χωρίς τροποποίηση, υπό τον όρο ότι πληρούνται οι ακόλουθες προϋποθέσεις:
- Οι αναδιανομές του πηγαίου κώδικα πρέπει να διατηρούν την παραπάνω σημείωση πνευματικών δικαιωμάτων, αυτήν τη λίστα όρων και την ακόλουθη δήλωση αποποίησης ευθύνης.
- Οι αναδιανομές σε δυαδική μορφή πρέπει να αναπαράγουν την παραπάνω σημείωση πνευματικών δικαιωμάτων, αυτή η λίστα όρων και η ακόλουθη δήλωση αποποίησης ευθύνης στην τεκμηρίωση και/ή σε άλλο υλικό πρέπει να παρέχονται μαζί με τη διανομή.
- Ούτε το όνομα του κατόχου των πνευματικών δικαιωμάτων ούτε τα ονόματα των συντελεστών του μπορούν να χρησιμοποιηθούν για να υποστηρίξουν ή να προωθήσουν προϊόντα που προέρχονται από αυτό το λογισμικό χωρίς ειδική προηγούμενη γραπτή άδεια.
ΑΥΤΟ ΤΟ ΛΟΓΙΣΜΙΚΟ ΠΑΡΕΧΕΤΑΙ ΑΠΟ ΤΟΥΣ ΚΑΤΟΧΟΥΣ ΠΝΕΥΜΑΤΙΚΩΝ ΔΙΚΑΙΩΜΑΤΩΝ ΚΑΙ ΣΥΝΤΕΛΕΣΤΕΣ «ΩΣ ΕΧΕΙ» ΚΑΙ ΟΠΟΙΑΔΗΠΟΤΕ ΡΗΤΗΣ Ή ΣΙΩΠΗΡΩΜΕΝΗ ΕΓΓΥΗΣΗ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΝΤΩΝ, ΑΛΛΑ ΔΕΝ ΠΕΡΙΟΡΙΖΟΝΤΑΙ ΣΕ, ΤΙΣ ΣΙΩΠΗΡΕΣ ΕΓΓΥΗΣΕΙΣ ΤΗΣ ΕΜΠΟΡΙΚΗΣ ΕΥΡΕΣΙΤΕΧΝΙΑΣ ΚΑΙ ΕΞΥΠΗΡΕΤΗΣΗΣ.
ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ Ο ΚΑΤΟΧΟΣ ΠΝΕΥΜΑΤΙΚΩΝ ΔΙΚΑΙΩΜΑΤΩΝ Ή ΟΙ ΣΥΝΤΕΛΕΣΤΕΣ ΔΕΝ ΕΙΝΑΙ ΕΥΘΥΝΟΣ ΓΙΑ ΟΠΟΙΑΔΗΠΟΤΕ ΑΜΕΣΗ, ΕΜΜΕΣΗ, ΣΥΜΠΤΩΜΑΤΙΚΗ, ΕΙΔΙΚΗ, ΠΑΡΑΔΕΙΓΜΑΤΙΚΗ Ή ΣΥΝΕΧΕΙΑ ΖΗΜΙΑ (ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ, ΑΛΛΑ ΟΧΙ ΠΕΡΙΣΣΟΤΕΡΑ, ΧΡΗΣΗΣ, ΔΕΔΟΜΕΝΩΝ Ή ΚΕΡΔΩΝ. Ή ΔΙΑΚΟΠΗ ΕΠΙΧΕΙΡΗΣΕΩΝ) ΩΣΤΟΣΟ ΠΟΥ ΠΡΟΚΛΗΘΗΚΕ ΚΑΙ ΣΕ ΟΠΟΙΑΔΗΠΟΤΕ ΘΕΩΡΙΑ ΕΥΘΥΝΗΣ, ΕΙΤΕ ΣΕ ΣΥΜΒΑΣΗ, ΣΕ ΑΥΣΤΗΡΗ ΕΥΘΥΝΗ, ΕΙΤΕ ΑΔΙΚΟΠΟΙΗΣΗ (ΠΕΡΙΛΑΜΒΑΝΕΤΑΙ ΑΜΕΛΕΙΑ Ή ΑΛΛΙΩΣ) ΠΟΥ ΠΡΟΚΥΠΤΕΙ ΟΠΟΙΟΝΔΗΠΟΤΕ ΤΡΟΠΟ ΣΤ Η ΔΥΝΑΤΟΤΗΤΑ ΤΕΤΟΙΟΥ
ΒΛΑΒΗ.
Νομικές πληροφορίες
Ορισμοί
Προσχέδιο: Μια πρόχειρη κατάσταση σε ένα έγγραφο υποδηλώνει ότι το περιεχόμενο εξακολουθεί να βρίσκεται υπό εσωτερική έκδοσηview και υπόκειται σε επίσημη έγκριση, η οποία μπορεί να οδηγήσει σε τροποποιήσεις ή προσθήκες.
Η NXP Semiconductors δεν παρέχει καμία δήλωση ή εγγύηση ως προς την ακρίβεια ή την πληρότητα των πληροφοριών που περιλαμβάνονται σε μια πρόχειρη έκδοση ενός εγγράφου και δεν φέρει καμία ευθύνη για τις συνέπειες της χρήσης τέτοιων πληροφοριών.
Αποποίηση ευθυνών
Περιορισμένη εγγύηση και ευθύνη: Οι πληροφορίες σε αυτό το έγγραφο πιστεύεται ότι είναι ακριβείς και αξιόπιστες.
Ωστόσο, η NXP Semiconductors δεν παρέχει καμία δήλωση ή εγγύηση, ρητή ή σιωπηρή, ως προς την ακρίβεια ή την πληρότητα αυτών των πληροφοριών και δεν φέρει καμία ευθύνη για τις συνέπειες της χρήσης αυτών των πληροφοριών.
Η NXP Semiconductors δεν φέρει καμία ευθύνη για το περιεχόμενο αυτού του εγγράφου εάν παρέχεται από πηγή πληροφοριών εκτός της NXP Semiconductors.
Σε καμία περίπτωση η NXP Semiconductors δεν ευθύνεται για έμμεσες, τυχαίες, τιμωρητικές, ειδικές ή επακόλουθες ζημίες (συμπεριλαμβανομένων – χωρίς περιορισμό – διαφυγόντων κερδών, χαμένων αποταμιεύσεων, διακοπής εργασιών, δαπανών που σχετίζονται με την αφαίρεση ή αντικατάσταση οποιωνδήποτε προϊόντων ή χρεώσεις εκ νέου επεξεργασίας) είτε ή όχι, τέτοιες ζημιές βασίζονται σε αδικοπραξία (συμπεριλαμβανομένης της αμέλειας), στην εγγύηση, στην παραβίαση της σύμβασης ή σε οποιαδήποτε άλλη νομική θεωρία.
Ανεξάρτητα από τυχόν ζημιές που μπορεί να υποστεί ο πελάτης για οποιονδήποτε λόγο, η συνολική και σωρευτική ευθύνη της NXP Semiconductors έναντι του πελάτη για τα προϊόντα που περιγράφονται στο παρόν περιορίζεται σύμφωνα με τους Όρους και τις προϋποθέσεις εμπορικής πώλησης των NXP Semiconductors.
Δικαίωμα για αλλαγές: Η NXP Semiconductors διατηρεί το δικαίωμα να κάνει αλλαγές στις πληροφορίες που δημοσιεύονται σε αυτό το έγγραφο, συμπεριλαμβανομένων χωρίς περιορισμό προδιαγραφών και περιγραφών προϊόντων, ανά πάσα στιγμή και χωρίς προειδοποίηση.
Το παρόν έγγραφο αντικαθιστά και αντικαθιστά όλες τις πληροφορίες που παρέχονται πριν από τη δημοσίευση του παρόντος.
Καταλληλότητα για χρήση: Τα προϊόντα NXP Semiconductors δεν έχουν σχεδιαστεί, εγκριθεί ή εγγυηθεί ότι είναι κατάλληλα για χρήση σε συστήματα υποστήριξης ζωής, κρίσιμα για τη ζωή ή κρίσιμα για την ασφάλεια συστήματα ή εξοπλισμό, ούτε σε εφαρμογές όπου η αστοχία ή δυσλειτουργία ενός προϊόντος NXP Semiconductors μπορεί εύλογα να αναμένεται να οδηγήσει σε προσωπικές τραυματισμό, θάνατο ή σοβαρή υλική ή περιβαλλοντική ζημιά.
Η NXP Semiconductors και οι προμηθευτές της δεν φέρουν καμία ευθύνη για τη συμπερίληψη και/ή τη χρήση των προϊόντων NXP Semiconductors σε τέτοιο εξοπλισμό ή εφαρμογές και επομένως η συμπερίληψη ή/και η χρήση γίνεται με ευθύνη του πελάτη.
Εφαρμογές: Οι εφαρμογές που περιγράφονται εδώ για οποιοδήποτε από αυτά τα προϊόντα είναι μόνο για επεξηγηματικούς σκοπούς.
Η NXP Semiconductors δεν παρέχει καμία δήλωση ή εγγύηση ότι τέτοιες εφαρμογές θα είναι κατάλληλες για την καθορισμένη χρήση χωρίς περαιτέρω δοκιμή ή τροποποίηση.
Οι πελάτες είναι υπεύθυνοι για το σχεδιασμό και τη λειτουργία των εφαρμογών και των προϊόντων τους που χρησιμοποιούν προϊόντα NXP Semiconductors και η NXP Semiconductors δεν φέρει καμία ευθύνη για οποιαδήποτε βοήθεια σχετικά με εφαρμογές ή σχεδιασμό προϊόντων πελατών.
Είναι αποκλειστική ευθύνη του πελάτη να καθορίσει εάν το προϊόν NXP Semiconductors είναι κατάλληλο και κατάλληλο για τις εφαρμογές του πελάτη και τα προγραμματισμένα προϊόντα, καθώς και για την προγραμματισμένη εφαρμογή και χρήση των πελατών τρίτου μέρους του πελάτη.
Οι πελάτες θα πρέπει να παρέχουν κατάλληλες διασφαλίσεις σχεδιασμού και λειτουργίας για την ελαχιστοποίηση των κινδύνων που σχετίζονται με τις εφαρμογές και τα προϊόντα τους.
Η NXP Semiconductors δεν αποδέχεται καμία ευθύνη που σχετίζεται με οποιαδήποτε προεπιλογή, ζημιά, κόστος ή πρόβλημα που βασίζεται σε οποιαδήποτε αδυναμία ή προεπιλογή στις εφαρμογές ή τα προϊόντα του πελάτη ή στην εφαρμογή ή χρήση από τρίτους πελάτες του πελάτη.
Ο Πελάτης είναι υπεύθυνος για τη διενέργεια όλων των απαραίτητων δοκιμών για τις εφαρμογές και τα προϊόντα του πελάτη χρησιμοποιώντας προϊόντα NXP Semiconductors, προκειμένου να αποφευχθεί η προεπιλογή των εφαρμογών και των προϊόντων ή της εφαρμογής ή χρήσης από τρίτους πελάτες του πελάτη. Η NXP δεν αποδέχεται καμία ευθύνη ως προς αυτό
Όροι και προϋποθέσεις εμπορικής πώλησης: Τα προϊόντα NXP Semiconductors πωλούνται σύμφωνα με τους γενικούς όρους και προϋποθέσεις εμπορικής πώλησης, όπως δημοσιεύονται στο http://www.nxp.com/profile/terms, εκτός εάν συμφωνηθεί διαφορετικά σε έγκυρη γραπτή ατομική συμφωνία.
Σε περίπτωση σύναψης ατομικής συμφωνίας ισχύουν μόνο οι όροι και οι προϋποθέσεις της αντίστοιχης συμφωνίας.
Η NXP Semiconductors δια του παρόντος αντιτίθεται ρητά στην εφαρμογή των γενικών όρων και προϋποθέσεων του πελάτη σχετικά με την αγορά προϊόντων NXP Semiconductors από τον πελάτη.
Έλεγχος εξαγωγής: Αυτό το έγγραφο καθώς και τα είδη που περιγράφονται στο παρόν ενδέχεται να υπόκεινται σε κανονισμούς ελέγχου εξαγωγών.
Η εξαγωγή ενδέχεται να απαιτεί προηγούμενη έγκριση από τις αρμόδιες αρχές.
Καταλληλότητα για χρήση σε μη πιστοποιημένα προϊόντα για αυτοκίνητα: Εκτός εάν αυτό το φύλλο δεδομένων αναφέρει ρητά ότι αυτό το συγκεκριμένο προϊόν NXP Semiconductors είναι πιστοποιημένο για αυτοκίνητα, το προϊόν δεν είναι κατάλληλο για χρήση σε αυτοκίνητα.
Δεν είναι ούτε πιστοποιημένο ούτε ελεγμένο σύμφωνα με τις δοκιμές αυτοκινήτων ή τις απαιτήσεις εφαρμογής. Η NXP Semiconductors δεν αποδέχεται καμία ευθύνη για συμπερίληψη και/ή χρήση προϊόντων που δεν διαθέτουν άδεια χρήσης αυτοκινήτων σε εξοπλισμό ή εφαρμογές αυτοκινήτων.
Σε περίπτωση που ο πελάτης χρησιμοποιεί το προϊόν για σχεδιασμό και χρήση σε εφαρμογές αυτοκινήτου σύμφωνα με προδιαγραφές και πρότυπα αυτοκινήτου, ο πελάτης (α) θα χρησιμοποιήσει το προϊόν χωρίς την εγγύηση της NXP Semiconductors για το προϊόν για τέτοιες εφαρμογές, χρήση και προδιαγραφές αυτοκινήτου και ( β) κάθε φορά που ο πελάτης χρησιμοποιεί το προϊόν για εφαρμογές αυτοκινήτου πέραν των προδιαγραφών της NXP Semiconductors, αυτή η χρήση γίνεται αποκλειστικά με ευθύνη του πελάτη και (γ) ο πελάτης αποζημιώνει πλήρως την NXP Semiconductors για οποιαδήποτε ευθύνη, ζημιά ή αποτυχημένες αξιώσεις προϊόντος που προκύπτουν από τον σχεδιασμό και τη χρήση του πελάτη το προϊόν για εφαρμογές αυτοκινήτων πέρα από την τυπική εγγύηση της NXP Semiconductors και τις προδιαγραφές προϊόντος της NXP Semiconductors.
Μεταφράσεις: Μια μη αγγλική (μεταφρασμένη) έκδοση ενός εγγράφου, συμπεριλαμβανομένων των νομικών πληροφοριών σε αυτό το έγγραφο, είναι μόνο για αναφορά.
Η αγγλική έκδοση θα υπερισχύει σε περίπτωση οποιασδήποτε διαφοράς μεταξύ της μεταφρασμένης και της αγγλικής έκδοσης.
Ασφάλεια: Ο Πελάτης κατανοεί ότι όλα τα προϊόντα NXP ενδέχεται να υπόκεινται σε μη αναγνωρισμένες ευπάθειες ή μπορεί να υποστηρίζουν καθιερωμένα πρότυπα ή προδιαγραφές ασφαλείας με γνωστούς περιορισμούς.
Ο Πελάτης είναι υπεύθυνος για το σχεδιασμό και τη λειτουργία των εφαρμογών και των προϊόντων του καθ' όλη τη διάρκεια του κύκλου ζωής τους, ώστε να μειωθεί η επίδραση αυτών των τρωτών σημείων στις εφαρμογές και τα προϊόντα του πελάτη.
Η ευθύνη του πελάτη επεκτείνεται επίσης σε άλλες ανοιχτές ή/και αποκλειστικές τεχνολογίες που υποστηρίζονται από προϊόντα NXP για χρήση σε εφαρμογές πελατών.
Η NXP δεν φέρει καμία ευθύνη για οποιαδήποτε ευπάθεια.
Ο πελάτης θα πρέπει να ελέγχει τακτικά τις ενημερώσεις ασφαλείας από το NXP και να παρακολουθεί κατάλληλα.
Ο πελάτης επιλέγει προϊόντα με χαρακτηριστικά ασφαλείας που πληρούν καλύτερα τους κανόνες, κανονισμούς και πρότυπα της προβλεπόμενης εφαρμογής και λαμβάνει τις τελικές αποφάσεις σχεδιασμού σχετικά με τα προϊόντα του και είναι αποκλειστικά υπεύθυνος για τη συμμόρφωση με όλες τις νομικές, κανονιστικές και σχετικές με την ασφάλεια απαιτήσεις σχετικά με τα προϊόντα του, ανεξάρτητα από οποιασδήποτε πληροφορίας ή υποστήριξης που μπορεί να παρέχεται από την NXP.
Το NXP διαθέτει μια Ομάδα Αντιμετώπισης Συμβάντων Ασφάλειας Προϊόντος (PSIRT) (προσβάσιμη στη διεύθυνση PSIRT@nxp.com) που διαχειρίζεται την έρευνα, την αναφορά και την κυκλοφορία λύσεων σε ευπάθειες ασφαλείας των προϊόντων NXP.
NXP BV: Η NXP BV δεν είναι εταιρεία εκμετάλλευσης και δεν διανέμει ούτε πουλά προϊόντα.
Εμπορικά σήματα
Ανακοίνωση: Όλες οι αναφερόμενες μάρκες, ονόματα προϊόντων, ονόματα υπηρεσιών και εμπορικά σήματα αποτελούν ιδιοκτησία των αντίστοιχων κατόχων τους.
NXP: Το λεκτικό σήμα και το λογότυπο είναι εμπορικά σήματα της NXP BV
i.MX: είναι εμπορικό σήμα της NXP BV
ΥΠΟΣΤΗΡΙΞΗ ΠΕΛΑΤΩΝ
Για περισσότερες πληροφορίες, επισκεφθείτε: http://www.nxp.com
Έγγραφα / Πόροι
![]() |
NXP AN13948 Ενσωμάτωση της εφαρμογής LVGL GUI στην πλατφόρμα Smart HMI [pdf] Εγχειρίδιο χρήστη AN13948 Ενσωμάτωση εφαρμογής LVGL GUI σε Smart HMI Platform, AN13948, Ενσωμάτωση εφαρμογής LVGL GUI σε Smart HMI Platform |