FPGA SDK για OpenCL
Οδηγός χρήσης
UG-OCL009
2017.05.08
Τελευταία ενημέρωση για την Intel® Quartus® Prime Design Suite: 17.0
Συνεισφέρω
Αποστολή σχολίων
Οδηγός μεταφοράς πλατφόρμας αναφοράς Intel® FPGA SDK για OpenCL™ Intel® Cyclone®V SoC Development Kit Reference Platform Porting
Ο οδηγός μεταφοράς πλατφόρμας αναφοράς V SoC Development Kit περιγράφει τη σχεδίαση υλικού και λογισμικού της πλατφόρμας αναφοράς Intel Cyclone V SoC Development Kit (c5soc) για χρήση με το Intel Software Development Kit (SDK) για OpenCL Το Intel ® FPGA SDK για OpenCL ™ Intel Cyclone ® . Πριν ξεκινήσετε, η Intel συνιστά ανεπιφύλακτα να εξοικειωθείτε με τα περιεχόμενα των παρακάτω εγγράφων:
- Οδηγός εκκίνησης Intel FPGA SDK για OpenCLIntel Cyclone V SoC
- Οδηγός χρήστη Intel FPGA SDK για OpenCL Custom Platform Toolkit
- Εγχειρίδιο συσκευής Cyclone V, τόμος 3: Τεχνικό εγχειρίδιο αναφοράς συστήματος σκληρού επεξεργαστή Επιπλέον, ανατρέξτε στη σελίδα Cyclone V SoC Development Kit and SoC Embedded Design Suite του Altera website για περισσότερες πληροφορίες. 1 2
Προσοχή: Η Intel υποθέτει ότι κατανοείτε σε βάθος τον Οδηγό χρήστη του Intel FPGA SDK για το OpenCL Custom Platform Toolkit. Ο Οδηγός μεταφοράς πλατφόρμας αναφοράς κιτ ανάπτυξης SoC Cyclone V δεν περιγράφει τη χρήση του κιτ εργαλείων προσαρμοσμένης πλατφόρμας του SDK για την υλοποίηση μιας προσαρμοσμένης πλατφόρμας για το κιτ ανάπτυξης SoC Cyclone V. Περιγράφει μόνο τις διαφορές μεταξύ της υποστήριξης SDK στο κιτ ανάπτυξης SoC Cyclone V και ενός γενικού SDK Intel FPGA για προσαρμοσμένη πλατφόρμα OpenCL.
Σχετικοί Σύνδεσμοι
- Οδηγός εκκίνησης Intel FPGA SDK για OpenCL Cyclone V SoC
- Οδηγός χρήστη Intel FPGA SDK για OpenCL Custom Platform Toolkit
- Εγχειρίδιο συσκευής Cyclone V, Τόμος 3: Τεχνικό Εγχειρίδιο Αναφοράς συστήματος σκληρού επεξεργαστή
- Cyclone V SoC Development Kit and SoC Embedded Design Suite στο Altera webτοποθεσία
- Το OpenCL και το λογότυπο OpenCL είναι εμπορικά σήματα Apple Inc. που χρησιμοποιούνται με άδεια του Khronos Group™.
- Το Intel FPGA SDK για OpenCL βασίζεται σε μια δημοσιευμένη Προδιαγραφή Khronos και έχει περάσει τη Διαδικασία δοκιμής συμμόρφωσης Khronos. Η τρέχουσα κατάσταση συμμόρφωσης βρίσκεται στη διεύθυνση www.khronos.org/conformance.
Intel Corporation. Με την επιφύλαξη παντός δικαιώματος. Οι λέξεις και τα λογότυπα Intel, το λογότυπο της Intel, τα Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus και Stratix είναι εμπορικά σήματα της Intel Corporation ή των θυγατρικών της στις ΗΠΑ ή/και σε άλλες χώρες. Η Intel εγγυάται την απόδοση των προϊόντων FPGA και ημιαγωγών της σύμφωνα με τις τρέχουσες προδιαγραφές σύμφωνα με την τυπική εγγύηση της Intel, αλλά διατηρεί το δικαίωμα να κάνει αλλαγές σε οποιαδήποτε προϊόντα και υπηρεσίες ανά πάσα στιγμή χωρίς προειδοποίηση. Η Intel δεν αναλαμβάνει καμία ευθύνη ή ευθύνη που απορρέει από την εφαρμογή ή τη χρήση οποιασδήποτε πληροφορίας, προϊόντος ή υπηρεσίας που περιγράφεται στο παρόν, εκτός εάν συμφωνηθεί ρητά εγγράφως από την Intel. Συνιστάται στους πελάτες της Intel να λαμβάνουν την πιο πρόσφατη έκδοση των προδιαγραφών της συσκευής προτού βασιστούν σε οποιεσδήποτε δημοσιευμένες πληροφορίες και προτού υποβάλουν παραγγελίες για προϊόντα ή υπηρεσίες.
*Άλλα ονόματα και επωνυμίες μπορούν να διεκδικηθούν ως ιδιοκτησία τρίτων.
1.1.1 Παραλλαγές πλακέτας πλατφόρμας αναφοράς κιτ ανάπτυξης SoC Cyclone V
Το Intel FPGA SDK για OpenCL Cyclone V SoC Development Kit Reference Platform περιλαμβάνει δύο παραλλαγές πλακέτας.
- πλακέτα c5soc
Αυτή η προεπιλεγμένη πλακέτα παρέχει πρόσβαση σε δύο τράπεζες μνήμης DDR. Το HPS DDR είναι προσβάσιμο τόσο από το FPGA όσο και από την CPU. Το FPGA DDR είναι προσβάσιμο μόνο από το FPGA. - πίνακας c5soc_sharedonly
Αυτή η παραλλαγή πλακέτας περιέχει μόνο συνδεσιμότητα HPS DDR. Το FPGA DDR δεν είναι προσβάσιμο. Αυτή η παραλλαγή πλακέτας είναι πιο αποδοτική στην περιοχή επειδή απαιτείται λιγότερο υλικό για την υποστήριξη μιας τράπεζας μνήμης DDR. Η πλακέτα c5soc_sharedonly είναι επίσης μια καλή πλατφόρμα πρωτοτύπων για μια πλακέτα τελικής παραγωγής με μια ενιαία τράπεζα μνήμης DDR.
Για να στοχεύσετε αυτήν την παραλλαγή πλακέτας κατά τη μεταγλώττιση του πυρήνα του OpenCL, συμπεριλάβετε την επιλογή -board c5soc_sharedonly στην εντολή aoc.
Για περισσότερες πληροφορίες σχετικά με τον πίνακα επιλογή της εντολής aoc, ανατρέξτε στον Οδηγό προγραμματισμού Intel FPGA SDK για OpenCL.
Σχετικοί Σύνδεσμοι
Μεταγλώττιση πυρήνα για συγκεκριμένο πίνακα FPGA (–πίνακας )
1.1.2 Περιεχόμενο της πλατφόρμας αναφοράς κιτ ανάπτυξης SoC Cyclone V
Η πλατφόρμα αναφοράς Cyclone V SoC Development Kit αποτελείται από τα ακόλουθα files και κατάλογοι:
File ή Κατάλογος | Περιγραφή |
board_env.xml | Επεκτατική γλώσσα σήμανσης (XML) file που περιγράφει το c5soc στο Intel FPGA SDK για OpenCL. |
linux_sd_card_image.tgz | Συμπιεσμένη εικόνα κάρτας SD flash file που περιέχει όλα όσα χρειάζεται ένας χρήστης SDK για να χρησιμοποιήσει το Cyclone V SoC Development Kit με το SDK. |
βραχίονας32 | Κατάλογος που περιέχει τα ακόλουθα: |
1.1.3 Σχετικά χαρακτηριστικά του κιτ ανάπτυξης Cyclone V SoC
Η ακόλουθη λίστα επισημαίνει τα στοιχεία και τις δυνατότητες του Cyclone V SoC Development Kit που σχετίζονται με το Intel FPGA SDK για OpenCL:
- CPU διπλού πυρήνα ARM Cortex-A9 με Linux 32-bit.
- Δίαυλος Advanced Extensible Interface (AXI) μεταξύ του HPS και του υφάσματος πυρήνα FPGA.
- Δύο σκληρυμένοι ελεγκτές μνήμης DDR, καθένας από τους οποίους συνδέεται σε μια SDRAM DDR1 3 gigabyte (GB).
— Ένας ελεγκτής DDR είναι προσβάσιμος μόνο στον πυρήνα FPGA (δηλαδή, FPGA DDR).
— Ο άλλος ελεγκτής DDR είναι προσβάσιμος τόσο στο HPS όσο και στο FPGA (δηλαδή, στο HPS DDR). Αυτός ο κοινόχρηστος ελεγκτής επιτρέπει την ελεύθερη κοινή χρήση μνήμης μεταξύ της CPU και του πυρήνα FPGA. - Η CPU μπορεί να επαναδιαμορφώσει το ύφασμα πυρήνα FPGA.
1.1.3.1 Στόχοι και αποφάσεις σχεδίασης πλατφόρμας αναφοράς κιτ ανάπτυξης SoC Cyclone V Η Intel βασίζει την εφαρμογή της πλατφόρμας αναφοράς κιτ ανάπτυξης SoC Cyclone V σε διάφορους σχεδιαστικούς στόχους και αποφάσεις. Η Intel συνιστά να λαμβάνετε υπόψη αυτούς τους στόχους και τις αποφάσεις όταν μεταφέρετε αυτήν την Πλατφόρμα Αναφοράς στην πλακέτα SoC FPGA.
Παρακάτω είναι οι στόχοι σχεδιασμού c5soc:
- Παρέχετε το υψηλότερο δυνατό εύρος ζώνης μεταξύ των πυρήνων στο FPGA και στα συστήματα μνήμης DDR.
- Βεβαιωθείτε ότι οι υπολογισμοί στο FPGA (δηλαδή, οι πυρήνες OpenCL) δεν παρεμβαίνουν σε άλλες εργασίες της CPU που μπορεί να περιλαμβάνουν περιφερειακά σέρβις.
- Αφήστε όσο το δυνατόν περισσότερους πόρους FPGA για υπολογισμούς πυρήνα αντί για στοιχεία διεπαφής.
Ακολουθούν οι αποφάσεις σχεδιασμού υψηλού επιπέδου που είναι οι άμεσες συνέπειες των σχεδιαστικών στόχων της Intel:
- Η πλατφόρμα αναφοράς χρησιμοποιεί μόνο ελεγκτές σκληρής μνήμης DDR με την ευρύτερη δυνατή διαμόρφωση (256 bit).
- Το FPGA επικοινωνεί απευθείας με τον ελεγκτή μνήμης HPS DDR, χωρίς να εμπλέκεται ο δίαυλος AXI και ο διακόπτης L3 μέσα στο HPS. Η άμεση επικοινωνία παρέχει το καλύτερο δυνατό εύρος ζώνης στο DDR και εμποδίζει τους υπολογισμούς FPGA να παρεμβαίνουν στις επικοινωνίες μεταξύ της CPU και της περιφέρειάς της.
- Η άμεση πρόσβαση στη μνήμη scatter-gather (SG-DMA) δεν αποτελεί μέρος της λογικής διεπαφής FPGA. Αντί να μεταφέρετε μεγάλες ποσότητες δεδομένων μεταξύ συστημάτων μνήμης DDR, αποθηκεύστε τα δεδομένα στο κοινόχρηστο HPS DDR. Η άμεση πρόσβαση στη μνήμη CPU από το FPGA είναι πιο αποτελεσματική από το DMA. Εξοικονομεί πόρους υλικού (δηλαδή, περιοχή FPGA) και απλοποιεί το πρόγραμμα οδήγησης του πυρήνα του Linux.
Προειδοποίηση: Η μεταφορά μνήμης μεταξύ του κοινόχρηστου συστήματος HPS DDR και του συστήματος DDR που είναι προσβάσιμο μόνο στο FPGA είναι πολύ αργή. Αν το επιλέξετε
μεταφέρετε μνήμη με αυτόν τον τρόπο, χρησιμοποιήστε την μόνο για πολύ μικρές ποσότητες δεδομένων. - Ο κεντρικός υπολογιστής και η συσκευή εκτελούν μεταφορά δεδομένων χωρίς DMA μεταξύ τους μέσω της γέφυρας HPS-to-FPGA (H2F), χρησιμοποιώντας μόνο μία θύρα 32 bit. Ο λόγος είναι ότι, χωρίς DMA, ο πυρήνας του Linux μπορεί να εκδώσει μόνο ένα αίτημα ανάγνωσης ή εγγραφής 32-bit, επομένως δεν είναι απαραίτητο να υπάρχει ευρύτερη σύνδεση.
- Ο κεντρικός υπολογιστής στέλνει σήματα ελέγχου στη συσκευή μέσω μιας ελαφριάς γέφυρας H2F (LH2F).
Επειδή τα σήματα ελέγχου από τον κεντρικό υπολογιστή προς τη συσκευή είναι σήματα χαμηλού εύρους ζώνης, μια γέφυρα LH2F είναι ιδανική για την εργασία.
1.2 Μεταφορά της πλατφόρμας αναφοράς στον πίνακα FPGA του SoC σας
Για να μεταφέρετε την πλατφόρμα αναφοράς του κιτ ανάπτυξης SoC Cyclone V στην πλακέτα SoC FPGA, εκτελέστε τις ακόλουθες εργασίες:
- Επιλέξτε τη μία μνήμη DDR ή την έκδοση με τις δύο μνήμες DDR της πλατφόρμας αναφοράς c5soc ως σημείο εκκίνησης του σχεδιασμού σας.
- Ενημερώστε τις τοποθεσίες καρφιτσών στο ALTERAOCLSDKROOT/board/c5soc/ /top.qsf file, όπου το ALTERAOCLSDKROOT είναι η διαδρομή προς τη θέση του Intel FPGA SDK για εγκατάσταση OpenCL και είναι το όνομα καταλόγου της παραλλαγής του πίνακα. Ο κατάλογος c5soc_sharedonly είναι για την παραλλαγή πλακέτας με ένα σύστημα μνήμης DDR. Ο κατάλογος c5soc είναι για την παραλλαγή της πλακέτας με δύο συστήματα μνήμης DDR.
- Ενημερώστε τις ρυθμίσεις DDR για τα μπλοκ HPS και/ή FPGA SDRAM στο ALTERAOCLSDKROOT/board/c5soc/ /system.qsys file.
4. Όλα τα προτιμώμενα σχέδια πλακέτας Intel FPGA SDK για OpenCL πρέπει να επιτυγχάνουν εγγυημένο κλείσιμο χρονισμού. Ως εκ τούτου, η τοποθέτηση του σχεδίου πρέπει να είναι καθαρή. Για να μεταφέρετε το διαμέρισμα της πλακέτας c5soc (acl_iface_partition.qxp) στην πλακέτα SoC FPGA, εκτελέστε τις ακόλουθες εργασίες:
Για λεπτομερείς οδηγίες σχετικά με την τροποποίηση και τη διατήρηση του διαμερίσματος πλακέτας, ανατρέξτε στο Quartus
Prime Incremental Compilation for Hierarchical and Team-Based Design, κεφάλαιο του Εγχειριδίου Quartus Prime Standard Edition.
ένα. Καταργήστε το acl_iface_partition.qxp από τον κατάλογο ALTERAOCLSDKROOT/board/c5soc/c5soc.
σι. Ενεργοποιήστε την περιοχή acl_iface_region LogicLock™ αλλάζοντας την εντολή Tcl set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region σε set_global_assignment -name LL_ENABLED ON -section_id acl_iface_region
ντο. Μεταγλωττίστε έναν πυρήνα OpenCL για την πλακέτα σας.
ρε. Εάν είναι απαραίτητο, προσαρμόστε το μέγεθος και τη θέση της περιοχής LogicLock.
μι. Όταν είστε ικανοποιημένοι ότι η τοποθέτηση του σχεδίου σας είναι καθαρή, εξάγετε αυτό το διαμέρισμα ως το acl_iface_partition.qxp Quartus Prime Exported Partition File.
Όπως περιγράφεται στην ενότητα Καθιέρωση εγγυημένης ροής χρόνου του Οδηγού χρήσης του AIntel FPGA SDK for OpenCL Custom Platform Toolkit, εισάγοντας αυτό το .qxp file στο σχεδιασμό ανώτατου επιπέδου, πληροίτε την απαίτηση παροχής σχεδίου πλακέτας με εγγυημένη ροή κλεισίματος χρονισμού.
Για παράγοντες που ενδέχεται να επηρεάσουν την ποιότητα των αποτελεσμάτων (QoR) του εξαγόμενου διαμερίσματός σας, ανατρέξτε στο Γενικό κριτήριο για την ποιότητα των αποτελεσμάτων για την ενότητα Εξαγόμενο διαμέρισμα πλακέτας στον Οδηγό χρήστη του Intel FPGA SDK για το OpenCL Custom Platform Toolkit.
φά. Απενεργοποιήστε την περιοχή acl_iface_region LogicLock επαναφέροντας την εντολή στο βήμα 2 πίσω στο set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region. - Εάν η πλακέτα SoC FPGA χρησιμοποιεί διαφορετικές ακίδες και περιφέρειες του μπλοκ HPS, δημιουργήστε εκ νέου το πρόγραμμα προφόρτωσης και την πηγή δέντρου συσκευής (DTS) file. Εάν αλλάξετε τις ρυθμίσεις του ελεγκτή μνήμης HPS DDR, δημιουργήστε ξανά το πρόγραμμα προφόρτωσης.
- Δημιουργήστε την εικόνα της κάρτας flash SD.
- Δημιουργήστε την προσαρμοσμένη πλατφόρμα σας, η οποία περιλαμβάνει την εικόνα της κάρτας flash SD.
- Εξετάστε το ενδεχόμενο να δημιουργήσετε μια έκδοση περιβάλλοντος χρόνου εκτέλεσης της προσαρμοσμένης πλατφόρμας σας για χρήση με το Intel FPGA Runtime Environment (RTE) για OpenCL. Η έκδοση RTE της προσαρμοσμένης πλατφόρμας σας δεν περιλαμβάνει καταλόγους υλικού και την εικόνα της κάρτας flash SD. Αυτή η προσαρμοσμένη πλατφόρμα φορτώνεται στο σύστημα SoC FPGA για να επιτρέψει την εκτέλεση των κεντρικών εφαρμογών. Αντίθετα, η έκδοση SDK της προσαρμοσμένης πλατφόρμας είναι απαραίτητη για το SDK για τη μεταγλώττιση πυρήνων OpenCL.
Συμβουλή: Μπορείτε να χρησιμοποιήσετε την έκδοση SDK της προσαρμοσμένης πλατφόρμας σας για το RTE. Για να αποθηκεύσετε
space, αφαιρέστε την εικόνα της κάρτας flash SD από την έκδοση RTE της προσαρμοσμένης πλατφόρμας σας. - Δοκιμάστε την προσαρμοσμένη πλατφόρμα σας.
Ανατρέξτε στην ενότητα Δοκιμή της σχεδίασης υλικού του Intel FPGA SDK for OpenCL Custom Platform Toolkit για περισσότερες πληροφορίες.
Σχετικοί Σύνδεσμοι
- Δοκιμή σχεδίασης υλικού
- Quartus Prime Incremental Compilation για ιεραρχικό και ομαδικό σχεδιασμό
- Καθιέρωση εγγυημένης ροής χρόνου
- Γενικά Θέματα Ποιότητας Αποτελεσμάτων για το Εξαγόμενο Διαμέρισμα Πίνακας
1.2.1 Ενημέρωση μιας πλατφόρμας μεταφερόμενης αναφοράς
Στην τρέχουσα έκδοση της πλατφόρμας αναφοράς Cyclone V SoC Development Kit, το μπλοκ HPS βρίσκεται μέσα στο διαμέρισμα που ορίζει όλη τη λογική εκτός πυρήνα. Ωστόσο, δεν μπορείτε να εξαγάγετε το HPS ως μέρος του .qxp file. Για να ενημερώσετε μια υπάρχουσα προσαρμοσμένη πλατφόρμα που τροποποιήσατε από μια προηγούμενη έκδοση του c5soc, εφαρμόστε τη ροή διατήρησης QXP, ενημερώστε την εικόνα της κάρτας flash SD για να αποκτήσετε το πιο πρόσφατο περιβάλλον χρόνου εκτέλεσης και ενημερώστε το board_spec.xml file για να ενεργοποιήσετε την αυτόματη μετεγκατάσταση.
Το Altera® SDK για OpenCL έκδοση 14.1 και πέρα ανιχνεύει το board_spec.xml file για πληροφορίες πλακέτας και υλοποιεί αυτόματες ενημερώσεις. Επειδή τροποποιείτε το
σχεδιάστε εφαρμόζοντας τη ροή διατήρησης QXP, πρέπει να ενημερώσετε το board_spec.xml file στη μορφή του στην τρέχουσα έκδοση. Ενημέρωση του file επιτρέπει στο SDK να κάνει διάκριση μεταξύ μη διατηρημένων προσαρμοσμένων πλατφορμών και των τρεχουσών προσαρμοσμένων πλατφορμών που βασίζονται σε QXP. Ανατρέξτε στον Οδηγό χρήστη Προσαρμοσμένης πλατφόρμας Automigration για Forward Compatibility στο Intel FPGA SDK for OpenCL Custom Platform Toolkit για περισσότερες πληροφορίες.
- Για να εφαρμόσετε τη ροή διατήρησης QXP σε μια σχεδίαση υλικού Cyclone V SoC FPGA που έχει μεταφερθεί από μια προηγούμενη έκδοση του c5soc, εκτελέστε τα ακόλουθα βήματα για να δημιουργήσετε ένα υποδιαμέρισμα για να εξαιρέσετε το HPS από το .qxp file:
ένα. Πριν δημιουργήσετε ένα διαμέρισμα γύρω από τη λογική μη πυρήνα, δημιουργήστε ένα διαμέρισμα γύρω από το HPS στις Ρυθμίσεις .qsf Quartus Prime File.
Για π.χample:
# Διαχωρίστε με μη αυτόματο τρόπο το στιγμιότυπο που μοντελοποιεί το set_instance_assignment -name PARTITION_HIERARCHY, το οποίο είναι αφιερωμένο στο HPS, σε "system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_18261:hpsacl_iface_hps_0:hpsacl_iface_hps_0:hpsacl_0_0_____________| system_acl_iface_hps_0_hps_io_border:border" -section_id "system_acl_iface_hps_XNUMX_hps_io_border:border"
# Ορίστε το διαμέρισμα να είναι τύπος HPS_PARTITION για σωστή επεξεργασία από το υπόλοιπο Quartus
set_global_assignment -name PARTITION_TYPE HPS_PARTITION -section_id "system_acl_iface_hps_0_hps_io_border:border"
quartus_cdb top -c top
–incremental_compilation_export=acl_iface_partition.qxp
–incremental_compilation_export_partition_name=acl_iface_partition
–incremental_compilation_export_post_synth=on
–incremental_compilation_export_post_fit=on
–incremental_compilation_export_routing=on
–incremental_compilation_export_flatten=off
Αφού εξαιρέσετε το HPS από το διαμέρισμα, μπορείτε να εισαγάγετε το .qxp file και συντάξτε το σχέδιό σας. - Ενημερώστε την εικόνα της κάρτας flash SD με την τρέχουσα έκδοση του Intel FPGA RTE για OpenCL εκτελώντας τις ακόλουθες εργασίες:
ένα. Τοποθετήστε το file πίνακας κατανομής (fat32) και σε επέκταση file κατατμήσεις συστήματος (ext3) στην υπάρχουσα εικόνα ως συσκευές επαναφοράς. Για λεπτομερείς οδηγίες, ανατρέξτε στο Βήμα 2 στη Δημιουργία εικόνας κάρτας SD Flash.
σι. Στον κατάλογο /home/root/opencl_arm32_rte, καταργήστε το files από την προηγούμενη έκδοση του RTE.
ντο. Κατεβάστε και αποσυσκευάστε την τρέχουσα έκδοση του RTE στον κατάλογο /home/root/opencl_arm32_rte.
ρε. Στο /driver/version.h file της προσαρμοσμένης πλατφόρμας σας, ενημερώστε την ανάθεση ACL_DRIVER_VERSION σε . (για π.χample, 16.1.x, όπου 16.1 είναι η έκδοση SDK και x είναι η έκδοση προγράμματος οδήγησης που ορίζετε).
μι. Ανακατασκευάστε το πρόγραμμα οδήγησης.
φά. Διαγράψτε τους φακέλους υλικού της προσαρμοσμένης πλατφόρμας σας. Αντιγράψτε την προσαρμοσμένη πλατφόρμα, μαζί με το ενημερωμένο πρόγραμμα οδήγησης, στον κατάλογο /home/root/opencl_arm_rte/board.
σολ. Αντιγράψτε το Altera.icd file από τον κατάλογο /home/root/opencl_arm32_rte και προσθέστε τον στον κατάλογο /etc/OpenCL/vendors.
η. Αποπροσαρτήστε και δοκιμάστε τη νέα εικόνα. Για λεπτομερείς οδηγίες, ανατρέξτε στα Βήματα 8 έως 11 στη Δημιουργία εικόνας κάρτας SD Flash.
Σχετικοί Σύνδεσμοι
- Δημιουργία εικόνας κάρτας SD Flash στη σελίδα 14
Έχετε επίσης την επιλογή να δημιουργήσετε μια νέα εικόνα κάρτας SD flash. - Προσαρμοσμένη αυτόματη μετεγκατάσταση πλατφόρμας για συμβατότητα προς τα εμπρός
1.3 Υποστήριξη λογισμικού για κοινόχρηστη μνήμη
Η κοινή φυσική μνήμη μεταξύ FPGA και CPU είναι η προτιμώμενη μνήμη για πυρήνες OpenCL που εκτελούνται σε SoC FPGA. Επειδή το FPGA έχει πρόσβαση σε κοινόχρηστη φυσική μνήμη, σε αντίθεση με την κοινόχρηστη εικονική μνήμη, δεν έχει πρόσβαση στους πίνακες σελίδων της CPU που αντιστοιχίζουν τις εικονικές διευθύνσεις χρήστη σε διευθύνσεις φυσικών σελίδων.
Όσον αφορά το υλικό, οι πυρήνες OpenCL έχουν πρόσβαση σε κοινή φυσική μνήμη μέσω απευθείας σύνδεσης με τον ελεγκτή σκληρής μνήμης HPS DDR. Όσον αφορά το λογισμικό, η υποστήριξη για κοινή φυσική μνήμη περιλαμβάνει τα ακόλουθα ζητήματα:
- Τυπικές εφαρμογές λογισμικού για την εκχώρηση μνήμης στη CPU (π.χample, η συνάρτηση malloc()) δεν μπορεί να εκχωρήσει μια περιοχή μνήμης που μπορεί να χρησιμοποιήσει το FPGA.
Η μνήμη που εκχωρεί η συνάρτηση malloc() είναι συνεχόμενη στον χώρο διευθύνσεων εικονικής μνήμης, αλλά τυχόν υποκείμενες φυσικές σελίδες είναι απίθανο να είναι συνεχόμενες φυσικά. Ως εκ τούτου, ο κεντρικός υπολογιστής πρέπει να μπορεί να εκχωρεί φυσικά συνεχόμενες περιοχές μνήμης. Ωστόσο, αυτή η δυνατότητα δεν υπάρχει σε εφαρμογές χώρου χρήστη στο Linux. Επομένως, το πρόγραμμα οδήγησης πυρήνα Linux πρέπει να εκτελέσει την εκχώρηση. - Το πρόγραμμα οδήγησης πυρήνα OpenCL SoC FPGA Linux περιλαμβάνει τη λειτουργία mmap() για την εκχώρηση κοινής φυσικής μνήμης και την αντιστοίχιση της στον χώρο χρήστη. Η συνάρτηση mmap() χρησιμοποιεί την τυπική κλήση του πυρήνα Linux dma_alloc_coherent() για να ζητήσει φυσικά συνεχόμενες περιοχές μνήμης για κοινή χρήση με μια συσκευή.
- Στον προεπιλεγμένο πυρήνα Linux, η dma_alloc_coherent() δεν εκχωρεί φυσική συνεχόμενη μνήμη με μέγεθος μεγαλύτερο από 0.5 megabyte (MB). Για να επιτρέψετε στη dma_alloc_coherent() να εκχωρεί μεγάλες ποσότητες φυσικής συνεχούς μνήμης, ενεργοποιήστε τη δυνατότητα κατανεμητή συνεχούς μνήμης (CMA) του πυρήνα Linux και στη συνέχεια μεταγλωττίστε ξανά τον πυρήνα του Linux.
Για την πλατφόρμα αναφοράς Cyclone V SoC Development Kit, η CMA διαχειρίζεται 512 MB από 1 GB φυσικής μνήμης. Μπορείτε να αυξήσετε ή να μειώσετε αυτήν την τιμή, ανάλογα με την ποσότητα της κοινόχρηστης μνήμης που απαιτεί η εφαρμογή. Η κλήση dma_alloc_coherent() ενδέχεται να μην είναι σε θέση να εκχωρήσει τα πλήρη 512 MB φυσικής συνεχούς μνήμης. Ωστόσο, μπορεί να αποκτήσει συνήθως 450 MB μνήμης. - Η CPU μπορεί να αποθηκεύσει προσωρινά τη μνήμη που εκχωρεί η κλήση dma_alloc_coherent(). Συγκεκριμένα, οι λειτουργίες εγγραφής από την εφαρμογή κεντρικού υπολογιστή δεν είναι ορατές στους πυρήνες OpenCL. Η συνάρτηση mmap() στο πρόγραμμα οδήγησης πυρήνα του OpenCL SoC FPGA Linux περιέχει επίσης κλήσεις προς τη συνάρτηση pgprot_noncached() ή remap_pf_range() για να απενεργοποιήσετε ρητά την προσωρινή αποθήκευση για αυτήν την περιοχή της μνήμης.
- Αφού η συνάρτηση dma_alloc_coherent() εκχωρήσει τη φυσική συνεχόμενη μνήμη, η συνάρτηση mmap() επιστρέφει την εικονική διεύθυνση στην αρχή του εύρους, που είναι το εύρος διευθύνσεων της μνήμης που εκχωρείτε. Η εφαρμογή κεντρικού υπολογιστή απαιτεί αυτήν την εικονική διεύθυνση για πρόσβαση στη μνήμη. Από την άλλη πλευρά, οι πυρήνες OpenCL απαιτούν φυσικές διευθύνσεις. Το πρόγραμμα οδήγησης πυρήνα Linux παρακολουθεί την αντιστοίχιση διευθύνσεων εικονικής σε φυσική. Μπορείτε να αντιστοιχίσετε τις φυσικές διευθύνσεις που επιστρέφει το mmap() σε πραγματικές φυσικές διευθύνσεις προσθέτοντας ένα ερώτημα στο πρόγραμμα οδήγησης.
Η κλήση aocl_mmd_shared_mem_alloc() MMD διεπαφής προγραμματισμού εφαρμογής (API) ενσωματώνει τα ακόλουθα ερωτήματα:
ένα. Η συνάρτηση mmap() που εκχωρεί μνήμη και επιστρέφει την εικονική διεύθυνση.
σι. Το επιπλέον ερώτημα που αντιστοιχίζει την επιστρεφόμενη εικονική διεύθυνση στη φυσική διεύθυνση.
Η κλήση aocl_mmd_shared_mem_alloc() MMD API επιστρέφει δύο διευθύνσεις
—η πραγματική διεύθυνση που επιστρέφεται είναι η εικονική διεύθυνση και η φυσική διεύθυνση πηγαίνει στο device_ptr_out.
Σημείωμα: Το πρόγραμμα οδήγησης μπορεί να αντιστοιχίσει μόνο τις εικονικές διευθύνσεις που επιστρέφει η συνάρτηση mmap() σε φυσικές διευθύνσεις. Εάν ζητήσετε τη φυσική διεύθυνση οποιουδήποτε άλλου εικονικού δείκτη, το πρόγραμμα οδήγησης επιστρέφει μια τιμή NULL.
Προειδοποίηση: Το Intel FPGA SDK για βιβλιοθήκες χρόνου εκτέλεσης OpenCL υποθέτει ότι η κοινόχρηστη μνήμη είναι η πρώτη μνήμη που αναφέρεται στο board_spec.xml file. Με άλλα λόγια, η φυσική διεύθυνση που λαμβάνει το πρόγραμμα οδήγησης πυρήνα Linux γίνεται η διεύθυνση Avalon® που ο πυρήνας OpenCL μεταβιβάζει στο HPS SDRAM.
Όσον αφορά τη βιβλιοθήκη χρόνου εκτέλεσης, χρησιμοποιήστε την κλήση clCreateBuffer() για να εκχωρήσετε την κοινόχρηστη μνήμη ως buffer συσκευής με τον ακόλουθο τρόπο:
- Για την παραλλαγή πλακέτας δύο DDR με κοινόχρηστη και μη κοινόχρηστη μνήμη, η clCreateBuffer() εκχωρεί κοινόχρηστη μνήμη εάν καθορίσετε τη σημαία CL_MEM_USE_HOST_PTR. Η χρήση άλλων σημαιών αναγκάζει την clCreateBuffer() να εκχωρήσει buffer στη μη κοινόχρηστη μνήμη.
- Για την παραλλαγή πλακέτας ενός DDR με μόνο κοινόχρηστη μνήμη, η clCreateBuffer() εκχωρεί κοινόχρηστη μνήμη ανεξάρτητα από τη σημαία που καθορίζετε.
Επί του παρόντος, η υποστήριξη Linux 32-bit σε CPU ARM διέπει την έκταση της υποστήριξης κοινής μνήμης στις βιβλιοθήκες χρόνου εκτέλεσης SDK. Με άλλα λόγια, οι βιβλιοθήκες χρόνου εκτέλεσης μεταγλωττίζονται σε άλλα περιβάλλοντα (π.χample, x86_64 Linux ή 64-bit Windows) δεν υποστηρίζουν κοινόχρηστη μνήμη.
Το C5soc δεν εφάρμοσε ετερογενή μνήμη για τη διάκριση μεταξύ κοινόχρηστης και μη κοινόχρηστης μνήμης για τους ακόλουθους λόγους:
1. Ιστορικό—Η υποστήριξη ετερογενούς μνήμης δεν ήταν διαθέσιμη όταν δημιουργήθηκε αρχικά η υποστήριξη κοινής μνήμης.
2. Ομοιόμορφη διεπαφή—Επειδή το OpenCL είναι ένα ανοιχτό πρότυπο, η Intel διατηρεί τη συνέπεια μεταξύ ετερογενών προμηθευτών πλατφόρμας υπολογιστών. Ως εκ τούτου, η ίδια διεπαφή με τις αρχιτεκτονικές άλλων προμηθευτών πλακέτας χρησιμοποιείται για την κατανομή και τη χρήση κοινής μνήμης.
1.4 Αναδιαμόρφωση FPGA
Για τα SoC FPGA, η CPU μπορεί να διαμορφώσει εκ νέου τον πυρήνα FPGA χωρίς να διακόψει τη λειτουργία της CPU. Το μπλοκ υλικού FPGA Manager που καλύπτει το HPS και το FPGA πυρήνα εκτελεί την αναδιαμόρφωση. Ο πυρήνας Linux περιλαμβάνει ένα πρόγραμμα οδήγησης που επιτρέπει την εύκολη πρόσβαση στο FPGA Manager.
- Να view την κατάσταση του πυρήνα FPGA, επικαλέστε την εντολή κατάστασης cat /sys/class/fpga/fpga0/.
Το βοηθητικό πρόγραμμα Intel FPGA SDK για OpenCL που διατίθεται με την πλατφόρμα αναφοράς Cyclone V SoC Development Kit χρησιμοποιεί αυτή τη διεπαφή για τον προγραμματισμό του FPGA. Κατά τον επαναπρογραμματισμό ενός πυρήνα FPGA με μια εκτελούμενη CPU, το βοηθητικό πρόγραμμα προγράμματος εκτελεί όλες τις ακόλουθες εργασίες:
1. Πριν από τον επαναπρογραμματισμό, απενεργοποιήστε όλες τις γέφυρες επικοινωνίας μεταξύ του FPGA και του HPS, και οι δύο γέφυρες H2F και LH2F.
Ενεργοποιήστε ξανά αυτές τις γέφυρες μετά την ολοκλήρωση του επαναπρογραμματισμού.
Προσοχή: Το σύστημα OpenCL δεν χρησιμοποιεί τη γέφυρα FPGA-to-HPS (F2H). Ανατρέξτε στην ενότητα Διεπαφές HPS-FPGA στο Εγχειρίδιο Συσκευής Cyclone V, Τόμος 3: Τεχνικό Εγχειρίδιο Αναφοράς συστήματος σκληρού επεξεργαστή για περισσότερες πληροφορίες.
2. Βεβαιωθείτε ότι η σύνδεση μεταξύ του FPGA και του ελεγκτή HPS DDR είναι απενεργοποιημένη κατά τον επαναπρογραμματισμό.
3. Βεβαιωθείτε ότι οι διακοπές FPGA στο FPGA είναι απενεργοποιημένες κατά τον επαναπρογραμματισμό.
Επίσης, ειδοποιήστε το πρόγραμμα οδήγησης να απορρίψει τυχόν διακοπές από το FPGA κατά τον επαναπρογραμματισμό.
Συμβουλευτείτε τον πηγαίο κώδικα του βοηθητικού προγράμματος προγράμματος για λεπτομέρειες σχετικά με την πραγματική υλοποίηση.
Προειδοποίηση: Μην αλλάζετε τη διαμόρφωση του ελεγκτή HPS DDR όταν λειτουργεί η CPU.
Κάτι τέτοιο μπορεί να προκαλέσει ένα μοιραίο σφάλμα συστήματος, επειδή ενδέχεται να αλλάξετε τη διαμόρφωση του ελεγκτή DDR όταν υπάρχουν εκκρεμείς συναλλαγές μνήμης από την CPU. Αυτό σημαίνει ότι όταν εκτελείται η CPU, δεν μπορείτε να επαναπρογραμματίσετε τον πυρήνα FPGA με μια εικόνα που χρησιμοποιεί HPS DDR σε διαφορετική διαμόρφωση.
Θυμηθείτε ότι το σύστημα OpenCL και η σχεδίαση αναφοράς Golden Hardware που διατίθεται με το Intel SoC FPGA Embedded Design Suite (EDS), θέτει το HPS DDR σε μια λειτουργία 256-bit.
Τα μέρη του συστήματος CPU, όπως το πρόγραμμα πρόβλεψης διακλάδωσης ή ο προ-συλλεκτικός πίνακας σελίδων, ενδέχεται να εκδίδουν εντολές DDR ακόμη και όταν φαίνεται ότι δεν εκτελείται τίποτα στη CPU.
Επομένως, ο χρόνος εκκίνησης είναι ο μόνος ασφαλής χρόνος για να ρυθμίσετε τη διαμόρφωση του ελεγκτή HPS DDR.
Αυτό σημαίνει επίσης ότι το U-boot πρέπει να έχει ένα ακατέργαστο δυαδικό file (.rbf) εικόνα για φόρτωση στη μνήμη. Διαφορετικά, ενδέχεται να ενεργοποιείτε το HPS DDR με αχρησιμοποίητες θύρες στο FPGA και, στη συνέχεια, να αλλάζετε ενδεχομένως τις διαμορφώσεις των θυρών στη συνέχεια. Για αυτόν τον λόγο, το πρόγραμμα οδήγησης πυρήνα OpenCL Linux δεν περιλαμβάνει πλέον τη λογική που απαιτείται για τη ρύθμιση των παραμέτρων του ελεγκτή HPS DDR.
Το SW3 dual in-line πακέτο (DIP) ενεργοποιεί το Cylone V SoC Development Kit ελέγχει την αναμενόμενη μορφή της εικόνας .rbf (δηλαδή, εάν η file είναι συμπιεσμένο και/ή κρυπτογραφημένο). Το C5soc και το Golden Hardware Reference Design που διατίθεται με το SoC EDS, περιλαμβάνουν συμπιεσμένες αλλά μη κρυπτογραφημένες εικόνες .rbf. Οι ρυθμίσεις του διακόπτη DIP SW3 που περιγράφονται στον Οδηγό εκκίνησης του Intel FPGA SDK για OpenCL Cyclone V SoC ταιριάζουν με αυτήν τη διαμόρφωση εικόνας .rbf.
Σχετικοί Σύνδεσμοι
- Διεπαφές HPS-FPGA
- Διαμόρφωση των διακοπτών SW3
1.4.1 Στοιχεία αρχιτεκτονικής συστήματος FPGA
Η υποστήριξη για την πλατφόρμα αναφοράς του κιτ ανάπτυξης SoC Cyclone V βασίζεται στην πλατφόρμα αναφοράς Stratix® V (s5_ref), διαθέσιμη με το Intel FPGA SDK για OpenCL.
Η συνολική οργάνωση του συστήματος c5soc Qsys και του προγράμματος οδήγησης πυρήνα είναι πολύ παρόμοια με εκείνα του s5_ref.
Τα ακόλουθα στοιχεία πυρήνα FPGA είναι τα ίδια τόσο στο c5soc όσο και στο s5_ref:
- αποκλεισμός VERSION_ID
- Μηχανισμός ανάπαυσης
- Διαιρέτης τράπεζας μνήμης
- Διασύνδεση snoop προσωρινής μνήμης
- Ρολόι πυρήνα
- Μπλοκ πρόσβασης μητρώου ελέγχου (CRA).
1.5 Δημιουργία εικόνας κάρτας SD Flash
Επειδή το Cyclone V SoC FPGA είναι ένα πλήρες σύστημα σε ένα τσιπ, είστε υπεύθυνοι για την παροχή του πλήρους ορισμού του συστήματος. Η Intel συνιστά να το παραδώσετε με τη μορφή εικόνας κάρτας SD flash. Ο χρήστης Intel FPGA SDK για OpenCL μπορεί απλώς να γράψει την εικόνα στην κάρτα flash micro SD και η πλακέτα SoC FPGA είναι έτοιμη για χρήση.
Τροποποίηση υπάρχουσας εικόνας κάρτας SD Flash στη σελίδα 13
Η Intel συνιστά να τροποποιήσετε απλώς την εικόνα που είναι διαθέσιμη με την πλατφόρμα αναφοράς Cyclone V SoC Development Kit. Έχετε επίσης την επιλογή να δημιουργήσετε μια νέα εικόνα κάρτας SD flash.
Δημιουργία εικόνας κάρτας SD Flash στη σελίδα 14
Έχετε επίσης την επιλογή να δημιουργήσετε μια νέα εικόνα κάρτας SD flash.
1.5.1 Τροποποίηση υπάρχουσας εικόνας κάρτας SD Flash
Η Intel συνιστά να τροποποιήσετε απλώς την εικόνα που είναι διαθέσιμη με το Cyclone V SoC
Πλατφόρμα αναφοράς κιτ ανάπτυξης. Έχετε επίσης την επιλογή να δημιουργήσετε μια νέα εικόνα κάρτας SD flash.
Η εικόνα c5soc linux_sd_card_image.tgz file είναι διαθέσιμο στον κατάλογο ALTERAOCLSDKROOT/board/c5soc, όπου το ALTERAOCLSDKROOT δείχνει τη διαδρομή του Intel FPGA SDK για τον κατάλογο εγκατάστασης του OpenCL.
Προσοχή: Για να τροποποιήσετε την εικόνα της κάρτας flash SD, πρέπει να έχετε δικαιώματα root ή sudo.
- Για να αποσυμπιέσετε το $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, εκτελέστε την εντολή tar xvfzlinux_sd_card_image.tgz.
- Μεταγλώττιση του hello_world OpenCL exampσχεδιάστε χρησιμοποιώντας την υποστήριξη της προσαρμοσμένης πλατφόρμας σας. Μετονομάστε το .rbf file που δημιουργεί το Intel FPGA SDK για OpenCL Offline Compiler ως opencl.rbf και τοποθετήστε το στο διαμέρισμα fat32 μέσα στην εικόνα της κάρτας SD flash.
Μπορείτε να κατεβάσετε το hello_world example design από το OpenCL Design Examples σελίδα στο Altera webτοποθεσία. - Τοποθετήστε το .rbf file στο διαμέρισμα fat32 της εικόνας της κάρτας flash.
Προσοχή: Το διαμέρισμα fat32 πρέπει να περιέχει και το zImage file και το .rbf file. Χωρίς .rbf file, θα προκύψει ένα μοιραίο σφάλμα κατά την εισαγωγή του προγράμματος οδήγησης. - Αφού δημιουργήσετε την εικόνα της κάρτας SD, γράψτε την σε μια κάρτα micro SD επικαλώντας την ακόλουθη εντολή: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
- Για να ελέγξετε την εικόνα της κάρτας SD flash, εκτελέστε τις ακόλουθες εργασίες:
ένα. Τοποθετήστε την κάρτα flash micro SD στην πλακέτα SoC FPGA.
σι. Ενεργοποιήστε τον πίνακα.
ντο. Επικαλέστε την εντολή aocl diagnost utility.
1.5.2 Δημιουργία εικόνας κάρτας SD Flash
Έχετε επίσης την επιλογή να δημιουργήσετε μια νέα εικόνα κάρτας SD flash. Γενικές οδηγίες για τη δημιουργία μιας νέας εικόνας κάρτας SD flash και την αναδόμηση μιας υπάρχουσας εικόνας κάρτας flash SD είναι διαθέσιμες στη σελίδα GSRD v14.0.2 – SD Card του RocketBoards.org webτοποθεσία.
Τα παρακάτω βήματα περιγράφουν τη διαδικασία για τη δημιουργία της εικόνας linux_sd_card_image.tgz από την εικόνα της κάρτας flash SD Golden System Reference Design (GSRD):
Σημείωμα:
Για να δημιουργήσετε την εικόνα από την εικόνα c5soc, εκτελέστε όλες τις ισχύουσες εργασίες που περιγράφονται σε αυτήν τη διαδικασία.
- Κατεβάστε και αποσυσκευάστε την εικόνα της κάρτας flash SD GSRD έκδοση 14.0 από το Rocketboards.org.
- Τοποθετήστε το file πίνακας κατανομής (fat32) και σε επέκταση file κατατμήσεις συστήματος (ext3) σε αυτήν την εικόνα ως συσκευές επαναφοράς. Για να προσαρτήσετε ένα διαμέρισμα, ακολουθήστε τα παρακάτω βήματα:
ένα. Προσδιορίστε την αρχή byte του διαμερίσματος εντός της εικόνας καλώντας το /sbin/fdisk -lu image_file εντολή.
Για π.χample, ο αριθμός διαμερίσματος 1 τύπου W95 FAT έχει μετατόπιση μπλοκ 2121728. Με 512 byte ανά μπλοκ, η μετατόπιση byte είναι 512 byte x 2121728 = 1086324736 byte.
σι. Προσδιορίστε μια συσκευή ελεύθερου βρόχου (π.χample, /dev/loop0) πληκτρολογώντας την εντολή losetup -f.
ντο. Υποθέτοντας ότι το /dev/loop0 είναι η συσκευή ελεύθερου βρόχου, αντιστοιχίστε την εικόνα της κάρτας flash σας στη συσκευή μπλοκ βρόχου καλώντας το losetup /dev/loop0 image_file -0 1086324736 εντολή.
ρε. Προσαρτήστε τη συσκευή βρόχου καλώντας την εντολή mount /dev/loop0 /media/disk1.
Μέσα στην εικόνα file, το /media/disk1 είναι πλέον ένα προσαρτημένο διαμέρισμα fat32.
μι. Επαναλάβετε τα βήματα a έως d για το διαμέρισμα ext3. - Κάντε λήψη της έκδοσης Cyclone V SoC FPGA του πακέτου Intel FPGA Runtime Environment για OpenCL από το Κέντρο λήψης στο Altera webτοποθεσία.
ένα. Κάντε κλικ στο κουμπί Λήψη δίπλα στην έκδοση λογισμικού Quartus Prime.
σι. Καθορίστε την έκδοση κυκλοφορίας, το λειτουργικό σύστημα και τη μέθοδο λήψης.
ντο. Κάντε κλικ στην καρτέλα Πρόσθετο λογισμικό και επιλέξτε λήψη του Intel FPGA
Περιβάλλον χρόνου εκτέλεσης για OpenCL Linux Cyclone V SoC TGZ.
ρε. Αφού κατεβάσετε το aocl-rte- .arm32.tgz file, αποσυσκευάστε το σε
έναν κατάλογο που σας ανήκει. - Τοποθετήστε το αποσυσκευασμένο aocl-rte- Κατάλογος .arm32 στον κατάλογο /home/root/opencl_arm32_rte στο διαμέρισμα ext3 της εικόνας file.
- Διαγράψτε τους φακέλους υλικού της Προσαρμοσμένης Πλατφόρμας και, στη συνέχεια, τοποθετήστε την Προσαρμοσμένη Πλατφόρμα στον υποκατάλογο του πίνακα του /home/root/ opencl_arm32_rte.
- Δημιουργήστε το init_opencl.sh file στον κατάλογο /home/root με το ακόλουθο περιεχόμενο: εξαγωγή ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte εξαγωγή AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ εξαγωγή PATH=$ALTERAOCLSDKROOT/bin:$PATH εξαγωγή LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
Ο χρήστης SDK εκτελεί την εντολή source ./init_opencl.sh για να φορτώσει τις μεταβλητές περιβάλλοντος και το πρόγραμμα οδήγησης πυρήνα OpenCL Linux. - Εάν χρειάζεται να ενημερώσετε το πρόγραμμα προφόρτωσης, το DTS files, ή τον πυρήνα Linux, χρειάζεστε τον μεταγλωττιστή arm-linux-gnueabihf-gcc από το SoC EDS. Ακολουθήστε τις οδηγίες που περιγράφονται στον Οδηγό χρήστη Intel SoC FPGA Embedded Design Suite για να αποκτήσετε το λογισμικό, να το μεταγλωττίσετε ξανά και να ενημερώσετε το σχετικό files στο τοποθετημένο διαμέρισμα fat32.
Προσοχή: Το πιο πιθανό είναι να χρειαστεί να ενημερώσετε το πρόγραμμα προφόρτωσης εάν η προσαρμοσμένη πλατφόρμα σας έχει διαφορετικές χρήσεις pin από αυτές του c5soc.
Θυμηθείτε: Εάν κάνετε εκ νέου μεταγλώττιση του πυρήνα του Linux, κάντε εκ νέου μεταγλώττιση του προγράμματος οδήγησης του πυρήνα του Linux με την ίδια πηγή πυρήνα Linux fileμικρό. Εάν υπάρχει αναντιστοιχία μεταξύ του προγράμματος οδήγησης πυρήνα Linux και του πυρήνα Linux, το πρόγραμμα οδήγησης δεν θα φορτώσει. Επίσης, πρέπει να ενεργοποιήσετε το CMA.
Ανατρέξτε στην ενότητα Εκ νέου μεταγλώττιση του πυρήνα Linux για περισσότερες πληροφορίες. - Μεταγλώττιση του hello_world OpenCL exampσχεδιάστε χρησιμοποιώντας την υποστήριξη της προσαρμοσμένης πλατφόρμας σας. Μετονομάστε το .rbf file που δημιουργεί το Intel FPGA SDK για OpenCL Offline Compiler ως opencl.rbf και τοποθετήστε το στο διαμέρισμα fat32 μέσα στην εικόνα της κάρτας SD flash.
Μπορείτε να κατεβάσετε το hello_world example design από το OpenCL Design Examples σελίδα στο Altera webτοποθεσία.
9. Αφού αποθηκεύσετε όλα τα απαραίτητα files στην εικόνα της κάρτας flash, επικαλέστε τις ακόλουθες εντολές:
ένα. συγχρονισμός
σι. αποπροσάρτηση /media/disk1
ντο. αποπροσάρτηση όπου είναι το όνομα καταλόγου που χρησιμοποιείτε για την προσάρτηση του διαμερίσματος ext3 σε 3 στη σελίδα 3 (π.χample, /media/disk2).
ρε. losttup -d /dev/loop0
μι. losetup -d /dev/loop1 - Συμπιέστε την εικόνα της κάρτας flash SD επικαλώντας την ακόλουθη εντολή: tar cvfz .tgz linux_sd_card_image
- Παραδώστε το .tgz file μέσα στον ριζικό κατάλογο της προσαρμοσμένης πλατφόρμας σας.
- Για να ελέγξετε την εικόνα της κάρτας SD flash, εκτελέστε τις ακόλουθες εργασίες:
ένα. Γράψτε την προκύπτουσα μη συμπιεσμένη εικόνα σε μια κάρτα flash micro SD.
σι. Τοποθετήστε την κάρτα flash micro SD στην πλακέτα SoC FPGA.
ντο. Ενεργοποιήστε τον πίνακα.
ρε. Επικαλέστε την εντολή aocl diagnost utility.
Σχετικοί Σύνδεσμοι
- Οδηγός χρήστη Intel SoC FPGA Embedded Design Suite
- OpenCL Design Examples σελίδα στο Altera webτοποθεσία
- Εκ νέου μεταγλώττιση του πυρήνα Linux στη σελίδα 16
Για να ενεργοποιήσετε το CMA, πρέπει πρώτα να μεταγλωττίσετε ξανά τον πυρήνα του Linux. - Ερώτηση για το όνομα της συσκευής της πλακέτας FPGA (διάγνωση)
1.6 Μεταγλώττιση του πυρήνα Linux για Cyclone V SoC FPGA
Πριν εκτελέσετε εφαρμογές OpenCL στην πλακέτα Cyclone V SoC FPGA, πρέπει να μεταγλωττίσετε την πηγή του πυρήνα Linux και να μεταγλωττίσετε και να εγκαταστήσετε το πρόγραμμα οδήγησης πυρήνα OpenCL Linux.
- Εκ νέου μεταγλώττιση του πυρήνα Linux στη σελίδα 16
Για να ενεργοποιήσετε το CMA, πρέπει πρώτα να μεταγλωττίσετε ξανά τον πυρήνα του Linux. - Μεταγλώττιση και εγκατάσταση του προγράμματος οδήγησης πυρήνα OpenCL Linux στη σελίδα 17 Μεταγλώττιση του προγράμματος οδήγησης πυρήνα OpenCL Linux έναντι της μεταγλωττισμένης πηγής πυρήνα.
1.6.1 Εκ νέου μεταγλώττιση του πυρήνα Linux
Για να ενεργοποιήσετε το CMA, πρέπει πρώτα να μεταγλωττίσετε ξανά τον πυρήνα του Linux.
- Κάντε κλικ στο σύνδεσμο GSRD v14.0 – Compiling Linux στη σελίδα Πόροι του RocketBoards.org webτοποθεσία για πρόσβαση σε οδηγίες σχετικά με τη λήψη και την αναδόμηση του πηγαίου κώδικα του πυρήνα Linux.
Για χρήση με το™ Intel FPGA SDK για OpenCL, καθορίστε το socfpga-3.13-rel14.0 ως . - Σημείωση: Η διαδικασία δόμησης δημιουργεί το arch/arm/configs/socfpga_defconfig file. Αυτό file καθορίζει τις ρυθμίσεις για την προεπιλεγμένη διαμόρφωση socfpga.
Προσθέστε τις ακόλουθες γραμμές στο κάτω μέρος του τόξου/arm/configs/socfpga_defconfig file.
CONFIG_MEMORY_ISOLATION=y
CONFIG_CMA=y
CONFIG_DMA_CMA=y
CONFIG_CMA_DEBUG=y
CONFIG_CMA_SIZE_MBYTES=512
CONFIG_CMA_SIZE_SEL_MBYTES=y
CONFIG_CMA_ALIGNMENT=8
CONFIG_CMA_AREAS=7
Η τιμή διαμόρφωσης CONFIG_CMA_SIZE_MBYTES θέτει το ανώτατο όριο του συνολικού αριθμού φυσικής συνεχούς διαθέσιμης μνήμης. Μπορείτε να αυξήσετε αυτήν την τιμή εάν χρειάζεστε περισσότερη μνήμη. - Προσοχή: Η συνολική ποσότητα φυσικής μνήμης που είναι διαθέσιμη στον επεξεργαστή ARM στην πλακέτα SoC FPGA είναι 1 GB. Η Intel δεν συνιστά να ρυθμίσετε το CMA manager κοντά στο 1 GB.
- Εκτελέστε την εντολή make mrproper για να καθαρίσετε την τρέχουσα διαμόρφωση.
- Εκτελέστε την εντολή make ARCH=arm socfpga_deconfig.
ARCH=arm υποδηλώνει ότι θέλετε να διαμορφώσετε την αρχιτεκτονική ARM.
Το socfpga_defconfig υποδεικνύει ότι θέλετε να χρησιμοποιήσετε την προεπιλεγμένη διαμόρφωση socfpga. - Εκτελέστε την εντολή εξαγωγής CROSS_COMPILE=arm-linux-gnueabihf-.
Αυτή η εντολή ορίζει τη μεταβλητή περιβάλλοντος CROSS_COMPILE για να καθορίσει το πρόθεμα της επιθυμητής αλυσίδας εργαλείων. - Εκτελέστε την εντολή make ARCH=arm zImage. Η εικόνα που προκύπτει είναι διαθέσιμη στο arch/arm/boot/zImage file.
- Τοποθετήστε το zImage file στο διαμέρισμα fat32 της εικόνας της κάρτας flash. Για λεπτομερείς οδηγίες, ανατρέξτε στο Εγχειρίδιο χρήστη GSRD για το Cyclone V SoC FPGA στο Rocketboards.org.
- Σημείωση: Για να εισαγάγετε σωστά το πρόγραμμα οδήγησης πυρήνα OpenCL Linux, πρώτα φορτώστε ένα SDKgenerated.rbf file στο FPGA.
Για να δημιουργήσετε το .rbf file, μεταγλωττίστε ένα σχέδιο SDK π.χampμε την πλατφόρμα αναφοράς Cyclone V SoC Development Kit ως στοχευμένη προσαρμοσμένη πλατφόρμα.
9. Τοποθετήστε το .rbf file στο διαμέρισμα fat32 της εικόνας της κάρτας flash.
Προσοχή: Το διαμέρισμα fat32 πρέπει να περιέχει και το zImage file και το .rbf file. Χωρίς .rbf file, θα προκύψει ένα μοιραίο σφάλμα κατά την εισαγωγή του προγράμματος οδήγησης. - Τοποθετήστε την προγραμματισμένη κάρτα micro SD, η οποία περιέχει την εικόνα της κάρτας SD που τροποποιήσατε ή δημιουργήσατε νωρίτερα, στο Cyclone V SoC Development Kit και, στη συνέχεια, ενεργοποιήστε την πλακέτα SoC FPGA.
- Επαληθεύστε την έκδοση του εγκατεστημένου πυρήνα Linux εκτελώντας την εντολή uname -r.
- Για να επαληθεύσετε ότι ενεργοποιήσατε με επιτυχία το CMA στον πυρήνα, με ενεργοποιημένη την πλακέτα SoC FPGA, εκτελέστε την εντολή grep init_cma /proc/kallsyms.
Το CMA είναι ενεργοποιημένο εάν η έξοδος δεν είναι κενή. - Για να χρησιμοποιήσετε τον εκ νέου μεταγλωττισμένο πυρήνα Linux με το SDK, μεταγλωττίστε και εγκαταστήστε το πρόγραμμα οδήγησης πυρήνα Linux.
Σχετικοί Σύνδεσμοι
- Εγχειρίδια Χρήστη Golden System Reference Design (GSRD).
- Δημιουργία εικόνας κάρτας SD Flash στη σελίδα 13
Επειδή το Cyclone V SoC FPGA είναι ένα πλήρες σύστημα σε ένα τσιπ, είστε υπεύθυνοι για την παροχή του πλήρους ορισμού του συστήματος.
1.6.2 Μεταγλώττιση και εγκατάσταση του προγράμματος οδήγησης πυρήνα OpenCL Linux
Μεταγλώττιση του προγράμματος οδήγησης πυρήνα OpenCL Linux έναντι της μεταγλωττισμένης πηγής πυρήνα.
Η πηγή προγράμματος οδήγησης είναι διαθέσιμη στην έκδοση Cyclone V SoC FPGA του Intel FPGA Runtime Environment για OpenCL. Επιπλέον, βεβαιωθείτε ότι έχετε φορτώσει ένα Intel FPGA SDK για .rbf που δημιουργείται από OpenCL file στο FPGA για να αποτρέψετε τη λανθασμένη εγκατάσταση της μονάδας πυρήνα Linux.
- Κάντε λήψη της έκδοσης Cyclone V SoC FPGA του πακέτου Intel FPGA Runtime Environment για OpenCL από το Κέντρο λήψης στο Altera webτοποθεσία.
ένα. Κάντε κλικ στο κουμπί Λήψη δίπλα στην έκδοση λογισμικού Quartus Prime.
σι. Καθορίστε την έκδοση κυκλοφορίας, το λειτουργικό σύστημα και τη μέθοδο λήψης.
ντο. Κάντε κλικ στην καρτέλα Πρόσθετο λογισμικό και επιλέξτε λήψη του Intel FPGA
Περιβάλλον χρόνου εκτέλεσης για OpenCL Linux Cyclone V SoC TGZ.
ρε. Αφού κατεβάσετε το aocl-rte- .arm32.tgz file, αποσυσκευάστε το σε
έναν κατάλογο που σας ανήκει.
Η πηγή του προγράμματος οδήγησης βρίσκεται στο aocl-rte- Κατάλογος προγραμμάτων οδήγησης .arm32/board/c5soc/. - Για να μεταγλωττίσετε εκ νέου το πρόγραμμα οδήγησης πυρήνα OpenCL Linux, ορίστε την τιμή KDIR στο Make του προγράμματος οδήγησηςfile στον κατάλογο που περιέχει την πηγή του πυρήνα του Linux files.
- Εκτελέστε την εντολή εξαγωγής CROSS_COMPILE=arm-linux-gnueabihf- για να υποδείξετε το πρόθεμα της αλυσίδας εργαλείων σας.
- Εκτελέστε την εντολή make clean.
- Εκτελέστε την εντολή make για να δημιουργήσετε το aclsoc_drv.ko file.
- Μεταφέρετε τον κατάλογο opencl_arm32_rte στην πλακέτα Cyclone V SoC FPGA.
Εκτέλεση του scp -r root@your-ipaddress: εντολή τοποθετεί το περιβάλλον χρόνου εκτέλεσης στον κατάλογο/home/root. - Εκτελέστε το σενάριο init_opencl.sh που δημιουργήσατε όταν δημιουργήσατε το SD cardimage.
- Επικαλέστε την εντολή aocl diagnost utility. Το βοηθητικό πρόγραμμα διάγνωσης θα επιστρέψει ένα θετικό αποτέλεσμα μετά την επιτυχή εκτέλεση του init_opencl.sh.
1.7 Γνωστά ζητήματα
Επί του παρόντος, υπάρχουν ορισμένοι περιορισμοί στη χρήση του Intel FPGA SDK για OpenCL με την πλατφόρμα αναφοράς Cyclone V SoC Development Kit.
- Δεν μπορείτε να παρακάμψετε τα ονόματα προμηθευτή και πλακέτας που αναφέρονται από τις συμβολοσειρές CL_DEVICE_VENDOR και CL_DEVICE_NAME της κλήσης clGetDeviceInfo().
- Εάν ο κεντρικός υπολογιστής εκχωρήσει σταθερή μνήμη σε κοινόχρηστο σύστημα DDR (δηλαδή, HPS DDR) και τροποποιήσει τη σταθερή μνήμη μετά την εκτέλεση του πυρήνα, τα δεδομένα στη μνήμη ενδέχεται να είναι ξεπερασμένα. Αυτό το ζήτημα προκύπτει επειδή ο πυρήνας FPGA δεν μπορεί να παρακολουθεί συναλλαγές DDR από CPU σε HPS.
Για να αποτρέψετε την πρόσβαση σε μεταγενέστερα δεδομένα σε επακόλουθες εκτελέσεις πυρήνα, εφαρμόστε μία από τις ακόλουθες λύσεις:
• Μην τροποποιείτε τη σταθερή μνήμη μετά την αρχικοποίησή της.
• Εάν χρειάζεστε πολλά σύνολα __σταθερών δεδομένων, δημιουργήστε πολλαπλά buffer σταθερής μνήμης.
• Εάν διατίθεται, εκχωρήστε σταθερή μνήμη στο FPGA DDR στην πλακέτα επιτάχυνσης. - Το βοηθητικό πρόγραμμα SDK στο ARM υποστηρίζει μόνο τις εντολές του βοηθητικού προγράμματος και διάγνωσης.
Οι εντολές του βοηθητικού προγράμματος flash, εγκατάστασης και απεγκατάστασης δεν ισχύουν για το Cyclone V SoC Development Kit για τους ακόλουθους λόγους:
ένα. Το βοηθητικό πρόγραμμα εγκατάστασης πρέπει να μεταγλωττίσει το πρόγραμμα οδήγησης πυρήνα Linux aclsoc_drv και να το ενεργοποιήσει στο SoC FPGA. Η μηχανή ανάπτυξης πρέπει να εκτελέσει τη μεταγλώττιση. Ωστόσο, περιέχει ήδη πηγές πυρήνα Linux για το SoC FPGA. Οι πηγές πυρήνα Linux για τη μηχανή ανάπτυξης είναι διαφορετικές από αυτές για το SoC FPGA. Η τοποθεσία των πηγών πυρήνα Linux για το SoC FPGA είναι πιθανώς άγνωστη στον χρήστη του SDK. Ομοίως, το βοηθητικό πρόγραμμα απεγκατάστασης δεν είναι επίσης διαθέσιμο στο Cyclone V SoC Development Kit.
Επίσης, η παράδοση aclsoc_drv στην πλακέτα SoC είναι πρόκληση, επειδή η προεπιλεγμένη διανομή του Cyclone V SoC Development Kit δεν περιέχει πυρήνα Linux files ή τον μεταγλωττιστή GNU Compiler Collection (GCC).
σι. Το βοηθητικό πρόγραμμα flash απαιτεί την τοποθέτηση ενός .rbf file ενός σχεδίου OpenCL στο διαμέρισμα FAT32 της κάρτας flash micro SD. Προς το παρόν, αυτό το διαμέρισμα δεν προσαρτάται όταν ο χρήστης του SDK ενεργοποιεί την πλακέτα. Επομένως, ο καλύτερος τρόπος για να ενημερώσετε το διαμέρισμα είναι να χρησιμοποιήσετε μια συσκευή ανάγνωσης καρτών flash και τη μηχανή ανάπτυξης. - Κατά την εναλλαγή μεταξύ του εκτελέσιμου μεταγλωττιστή εκτός σύνδεσης του Intel FPGA SDK για OpenCL files (.aocx) που αντιστοιχούν σε διαφορετικές παραλλαγές πλακέτας (δηλαδή, c5soc και c5soc_sharedonly), πρέπει να χρησιμοποιήσετε το βοηθητικό πρόγραμμα προγράμματος του SDK για να φορτώσετε το .aocx file για τη νέα παραλλαγή του πίνακα για πρώτη φορά. Εάν απλώς εκτελέσετε την εφαρμογή κεντρικού υπολογιστή χρησιμοποιώντας μια νέα παραλλαγή πλακέτας αλλά το FPGA περιέχει την εικόνα από μια άλλη παραλλαγή πλακέτας, ενδέχεται να προκύψει μοιραίο σφάλμα.
- Το .qxp file δεν περιλαμβάνει τις εκχωρήσεις διαμερισμάτων διεπαφής επειδή το λογισμικό Quartus Prime ικανοποιεί με συνέπεια τις απαιτήσεις χρονισμού αυτού του διαμερίσματος.
- Όταν ενεργοποιείτε την πλακέτα, η διεύθυνση ελέγχου πρόσβασης μέσων (MAC) της ορίζεται σε έναν τυχαίο αριθμό. Εάν η πολιτική LAN δεν επιτρέπει αυτήν τη συμπεριφορά, ορίστε τη διεύθυνση MAC εκτελώντας τις ακόλουθες εργασίες:
ένα. Κατά την ενεργοποίηση του U-Boot, πατήστε οποιοδήποτε πλήκτρο για να εισέλθετε στη γραμμή εντολών του U-Boot.
σι. Πληκτρολογήστε setenv ethaddr 00:07:ed:00:00:03 στη γραμμή εντολών.
Μπορείτε να επιλέξετε οποιαδήποτε διεύθυνση MAC.
ντο. Πληκτρολογήστε την εντολή saveenv.
ρε. Επανεκκινήστε την πλακέτα.
1.8 Ιστορικό αναθεώρησης εγγράφου
Πίνακας 1.
Ιστορικό αναθεώρησης εγγράφου του Intel FPGA SDK για OpenCL Cyclone V SoC
Οδηγός μεταφοράς πλατφόρμας αναφοράς κιτ ανάπτυξης
Ημερομηνία | Εκδοχή | Αλλαγές |
Μάιος-17 | 2017.05.08 | •Αποδέσμευση συντήρησης. |
Οκτώβριος 2016 | 2016.10.31 | •Μετονομάστηκε το Altera SDK για OpenCL σε Intel FPGA SDK για OpenCL. •Μετονομάστηκε ο Altera Offline Compiler σε Intel FPGA SDK για OpenCL Offline Compiler. |
Μάιος-16 | 2016.05.02 | •Τροποποιημένες οδηγίες για την κατασκευή και την τροποποίηση εικόνας κάρτας SD flash. •Τροποποιημένες οδηγίες για την εκ νέου μεταγλώττιση του πυρήνα Linux και του προγράμματος οδήγησης πυρήνα Linux OpenCL. |
Νοεμβρίου-15 | 2015.11.02 | •Απελευθέρωση συντήρησης και αλλαγή των παρουσιών του Quartus II σε Quartus Prime. |
Μάιος-15 | 15.0.0 | •Στην Αναδιαμόρφωση FPGA, καταργήθηκε η οδηγία για τον επαναπρογραμματισμό του πυρήνα FPGA με ένα . εικόνα rbf με επίκληση της γάτας fileόνομα>. rbf > εντολή /dev/ fpga0 γιατί αυτή η μέθοδος δεν συνιστάται. |
Δεκέμβριος-14 | 14.1.0 | •Μετονομάστηκε το έγγραφο σε Altera Cyclone V SoC Development Kit Reference Platform Porting Guide. •Ενημερώθηκε το βοηθητικό πρόγραμμα επαναπρογραμματισμού στο πρόγραμμα aoclfileόνομα>.aocx utility εντολή. •Ενημερώθηκε το διαγνωστικό βοηθητικό πρόγραμμα στη διάγνωση aocl και aocl diagnost εντολή βοηθητικού προγράμματος. •Ενημερώθηκε η διαδικασία στην ενότητα Μεταφορά της πλατφόρμας αναφοράς στην πλακέτα σας SoC για να περιλαμβάνει οδηγίες σχετικά με τη μεταφορά και την τροποποίηση του διαμερίσματος της πλακέτας c5soc για τη δημιουργία ενός διαμερίσματος καθαρού χρονισμού για την εγγυημένη ροή κλεισίματος χρονισμού. •Έγινε εισαγωγή του θέματος Ενημέρωση πλατφόρμας μεταφερόμενης αναφοράς για να περιγράψει τις διαδικασίες για τις ακόλουθες εργασίες: 1.Εξαιρείται το μπλοκ συστήματος σκληρού επεξεργαστή (HPS) στο διαμέρισμα της πλακέτας 2.Ενημέρωση της εικόνας της κάρτας flash SD •Ενημερώθηκε η ενότητα Δημιουργία εικόνας κάρτας SD Flash. Συνιστάται η χρήση της έκδοσης 14.0 της εικόνας Golden System Reference Design (GSRD) ως σημείο εκκίνησης αντί της εικόνας που διατίθεται με το SoC Embedded Design Suite (EDS). •Ενημερώθηκε η ενότητα Επαναμεταγλώττιση του πυρήνα του Linux και του προγράμματος οδήγησης πυρήνα του OpenCL Linux: 1.Προστέθηκε εντολή για να ορίσετε τη μεταβλητή CROSS COMPILE. 2.Άλλαξε την εντολή που εκτελείτε για να επαληθεύσετε ότι το CMA έχει ενεργοποιηθεί με επιτυχία. |
Ιουλίου-14 | 14.0.0 | •Αρχική έκδοση. |
Έγγραφα / Πόροι
![]() |
Intel FPGA SDK για OpenCL [pdf] Οδηγός χρήστη FPGA SDK για OpenCL, FPGA SDK, SDK για OpenCL, SDK |