Μονάδες
1. Εισαγωγή στην Τεχνητή Νοημοσύνη στη Μηχανική Ηλεκτρονικών και Επικοινωνιών: Όρια, Επικύρωση, Υπευθυνότητα και Δεοντολογία 2. Τεχνητή νοημοσύνη στη σχεδίαση κυκλωμάτων και υποστήριξη διάταξης PCB 3. Επεξεργασία σήματος: Φίλτρα, δειγματοληψία και ανάλυση συχνότητας 4. Διαμόρφωση, ψηφιακή επικοινωνία και ανάκτηση σφαλμάτων 5. Ανάλυση προϋπολογισμού RF, κεραίας και σύνδεσης 6. Τεχνητή νοημοσύνη σε ενσωματωμένα συστήματα και ανάπτυξη υλικολογισμικού 7. Πρωτόκολλα επικοινωνίας και στοίβα δικτύου 8. Τεχνητή Νοημοσύνη στην Απόδοση και Βελτιστοποίηση Δικτύων 9. Τεχνητή Νοημοσύνη σε EMC/EMI, Δοκιμή και Μέτρηση 10. Τεχνητή Νοημοσύνη στην Προγνωστική Συντήρηση και Υγεία Εξοπλισμού 11. Επαλήθευση Τυποποιημένης και Ρυθμιστικής Έρευνας 12. Ανάλυση δεδομένων σήματος και τηλεπικοινωνιών και σύνορα τεχνητής νοημοσύνης με Python
Μονάδα 6 / 12

Τεχνητή νοημοσύνη σε ενσωματωμένα συστήματα και ανάπτυξη υλικολογισμικού

Κέρδη:

  • Δυνατότητα επιτάχυνσης του σκελετού του υλικολογισμικού του μικροελεγκτή, του προγράμματος οδήγησης και της κατάστασης των σχεδίων του μηχανήματος με AI
  • Δυνατότητα ελέγχου διακοπής, χρονισμού, λογικής παρακολούθησης και χαμηλής ισχύος με υποστήριξη AI
  • Δυνατότητα επαλήθευσης κώδικα υλικολογισμικού που δημιουργείται από AI μέσω στατικής ανάλυσης, δοκιμών σε υλικό και απαιτήσεων ασφαλείας

Ένα ενσωματωμένο σύστημα είναι μια ηλεκτρονική συσκευή χτισμένη γύρω από έναν μικροελεγκτή (ένας μικρός υπολογιστής που φιλοξενεί τον επεξεργαστή, τη μνήμη και τα περιφερειακά σε ένα μόνο τσιπ) που έχει σχεδιαστεί για να κάνει μια συγκεκριμένη εργασία: έναν θερμοστάτη, ένα μόντεμ, έναν κόμβο αισθητήρα, έναν οδηγό κινητήρα. Το υλικολογισμικό είναι το λογισμικό που εκτελεί απευθείας το υλικό αυτής της συσκευής. Σε αυτήν την ενότητα θα δείτε πώς να χρησιμοποιείτε το AI ως επιταχυντή στην ανάπτυξη υλικολογισμικού (εγγραφή προγράμματος οδήγησης, μηχανή κατάστασης, λογική διακοπής και χρονισμού, διαχείριση χαμηλής κατανάλωσης ενέργειας). Το AI είναι πραγματικά ισχυρό στην κωδικοποίηση. Αλλά στον ενσωματωμένο κόσμο, ο κώδικας είναι συνυφασμένος με το υλικό, τον πραγματικό χρόνο και συχνά την ασφάλεια. Έτσι, κάθε γραμμή που παράγει η τεχνητή νοημοσύνη πρέπει να περνάει από στατική ανάλυση, έλεγχο μητρώου/φύλλων δεδομένων και πραγματικές δοκιμές σε υλικό.

Όπου είναι ισχυρό, πού είναι επικίνδυνο στο υλικολογισμικό AI

Η τεχνητή νοημοσύνη είναι πολύ ισχυρή στο "σκελετό" και το "die" μέρος του υλικολογισμικού: η δομή ενός προγράμματος οδήγησης I2C/SPI, το πλαίσιο μιας μηχανής κατάστασης (η λογική που καθορίζει τις καταστάσεις και τις μεταβάσεις της συσκευής), μια εφαρμογή buffer δακτυλίου, έναν αναλυτή εντολών, έναν δοκιμαστικό σκελετό. Μπορεί να διαβάσει τον πίνακα καταχωρήσεων σε ένα σύνθετο φύλλο δεδομένων και να δημιουργήσει κώδικα προετοιμασίας. Μπορεί να εξηγήσει ένα σφάλμα, να ερμηνεύσει μια προειδοποίηση μεταγλωττιστή.

Εκεί που είναι επικίνδυνο είναι η ουσία του ενσωματωμένου συστήματος:

  • Καταχωρίστε διευθύνσεις και πεδία bit: Η τεχνητή νοημοσύνη μπορεί να θυμάται λάθος τον χάρτη μητρώου ενός τσιπ. Κάθε διεύθυνση και bit πρέπει να επαληθεύονται από το φύλλο δεδομένων.
  • Χρόνος και πραγματικός χρόνος: Πόσα μικροδευτερόλεπτα διαρκεί μια λειτουργία, πόσο συχνά έρχεται μια διακοπή, εξαρτάται από το υλικό. Το AI προβλέπει, εσύ μετράς.
  • Συγχρονισμός: Εάν οι μεταβλητές που μοιράζονται μεταξύ της ρουτίνας υπηρεσίας διακοπής (ISR) και του κύριου βρόχου δεν προστατεύονται από πτητική και ατομική πρόσβαση, προκύπτουν αθόρυβα, μη επαναλαμβανόμενα σφάλματα.
  • Όρια πόρων: Υπερχείλιση στοίβας, διαρροή μνήμης, χρονικό όριο παρακολούθησης σημαίνει συντριβή στο ενσωματωμένο.

Διακοπή, συγχρονισμός και παρακολούθηση

Μια διακοπή είναι όταν συμβαίνει ένα συμβάν (τα δεδομένα έφθασαν, ο χρονοδιακόπτης έληξε), ο επεξεργαστής εγκαταλείπει την κύρια εργασία και μεταβαίνει σε μια ρουτίνα σέρβις (ISR: Διακοπή υπηρεσίας ρουτίνας). Τα ISR είναι τα πιο ευαίσθητα κομμάτια κώδικα στο ενσωματωμένο σύστημα. Βασικοί κανόνες: Το ISR πρέπει να είναι σύντομο (η μεγάλη εργασία αφήνεται στον κύριο βρόχο), δεν πρέπει να υπάρχουν λειτουργίες αποκλεισμού (αναμονή, εκτύπωση) σε αυτό, οι κοινόχρηστες μεταβλητές πρέπει να προστατεύονται.

Το Watchdog είναι ένας μηχανισμός ασφαλείας που επανεκκινεί αυτόματα τη συσκευή εάν το λογισμικό διακοπεί. Το υλικολογισμικό το "τροφοδοτεί" τακτικά, αν όχι, γίνεται επαναφορά του συστήματος. Η τεχνητή νοημοσύνη σχεδιάζει αυτές τις δομές, αλλά η διάρκεια του φύλακα, οι προτεραιότητες διακοπής και ο προϋπολογισμός προγραμματισμού πρέπει να επικυρωθούν έναντι του πραγματικού φορτίου στο σύστημά σας.

Συμβουλή: Όταν εκτυπώνετε ένα ISR στο AI, δώστε του ρητά οδηγίες να "διατηρεί το ISR σύντομο, χωρίς αποκλεισμό, να επισημαίνει κοινόχρηστες μεταβλητές με πτητική και ατομική πρόσβαση, να αναθέτει τη μεγάλη εργασία στον κύριο βρόχο με μια σημαία". Στη συνέχεια, ελέγξτε γραμμή προς γραμμή στον κώδικα που παράγει ότι αυτοί οι κανόνες εφαρμόζονται πραγματικά.

Χαμηλή ισχύς και ασφάλεια

Η διαχείριση χαμηλής ενέργειας είναι κρίσιμης σημασίας σε συσκευές που τροφοδοτούνται με μπαταρία: θέση του επεξεργαστή σε κατάσταση ύπνου, απενεργοποίηση περιφερειακών, αφύπνιση με ένα συμβάν. Το AI σκιαγραφεί τις μεταβάσεις της κατάστασης ύπνου και τη λογική αφύπνισης, αλλά η πραγματική κατανάλωση ρεύματος είναι γνωστή μόνο με μέτρηση (μετρητής ρεύματος σε επίπεδο μικροαμπέρ). Το AI που λέει "τραβάει ~2 μΑ σε αυτήν τη λειτουργία" είναι μια εικασία.

Από την άποψη της ασφάλειας, οι ενσωματωμένες συσκευές δικτυώνονται όλο και περισσότερο και οι ευπάθειες υλικολογισμικού (υπερχείλιση buffer, είσοδος χωρίς έλεγχο ταυτότητας, αδύναμη κρυπτογραφία, ανοιχτή διεπαφή εντοπισμού σφαλμάτων) αποτελούν σοβαρούς κινδύνους. Η τεχνητή νοημοσύνη μπορεί να σας υπενθυμίζει αρχές ασφαλούς κωδικοποίησης, αλλά η ασφάλεια του παραγόμενου κώδικα επαληθεύεται από εργαλεία στατικής ανάλυσης, αναθεώρηση κώδικα και δοκιμές ασφαλείας όταν είναι απαραίτητο. Σε κρίσιμα για την ασφάλεια συστήματα (ιατρικά, αυτοκίνητα, βιομηχανικά) η παραγωγή τεχνητής νοημοσύνης δεν πρέπει ποτέ να αντικαθιστά τις διαδικασίες που απαιτούνται από την έγκριση αρμόδιου μηχανικού και το σχετικό πρότυπο ασφάλειας (π.χ. IEC 61508, ISO 26262).

τρεις μίνι θήκες

Περίπτωση 1 — Μη προστατευμένη κοινόχρηστη μεταβλητή. Ένας μηχανικός ζητά έναν κωδικό λήψης UART από το AI. Ο κώδικας αυξάνει έναν μετρητή στο ISR και ο κύριος βρόχος διαβάζει αυτόν τον μετρητή. αλλά ο μετρητής δεν είναι πτητικός και η ανάγνωση πολλών byte δεν είναι ατομική. Η συσκευή λειτουργεί τις περισσότερες φορές, αλλά περιστασιακά διαβάζει εσφαλμένα τον αριθμό δεδομένων και το σφάλμα δεν μπορεί να επαναληφθεί. Στατική ανάλυση και έλεγχος κώδικα αλιευμάτων λείπει πτητικό? Το σφάλμα εξαφανίζεται όταν ο μετρητής προστατεύεται. Μάθημα: τα σφάλματα ταυτόχρονης χρήσης είναι συχνά και ύπουλα στον κώδικα AI. Είναι απαραίτητο να διαβάσετε και να επαληθεύσετε.

Περίπτωση 2 — Λάθος bit εγγραφής. Ένας ασκούμενος ανεβάζει τον κωδικό αρχικοποίησης ADC που δημιουργείται από το AI. Το ADC διαβάζει μη αναμενόμενες τιμές. Συγκρίνοντάς το με το φύλλο δεδομένων, φαίνεται ότι το AI έχει ορίσει ένα bit διαμόρφωσης σε λάθος θέση (χάρτης για διαφορετική παραλλαγή του τσιπ). Μόλις διορθωθεί το bit, το ADC λειτουργεί σωστά. Μάθημα: επαληθεύστε κάθε ορθογραφία του μητρώου σε σχέση με τη σωστή παραλλαγή του φύλλου δεδομένων.

Περίπτωση 3 — Σωστή χρήση. Ένας μηχανικός ζητά από το AI έναν σκελετό κατάστασης μηχανής για ένα σύνθετο πρωτόκολλο αισθητήρα. περιγράφει καταστάσεις, μεταβάσεις και κλάδους χρονικού ορίου. Η τεχνητή νοημοσύνη παράγει ένα καθαρό, ευανάγνωστο πλαίσιο. Ο μηχανικός παίρνει αυτό το πλαίσιο, επαληθεύει κάθε πρόσβαση καταχωρητή με το φύλλο δεδομένων, μετρά τους χρονισμούς με έναν παλμογράφο και το δοκιμάζει σε υλικό. Η ανάπτυξη ολοκληρώνεται σε λίγες ώρες αντί σε λίγες μέρες. Μάθημα: Η τεχνητή νοημοσύνη επιταχύνει τον σκελετό. Ο μηχανικός κάνει την επαλήθευση.

Αντιγράψιμα πρότυπα προτροπών

DRIVER SKELETON TEMPLATE"Γράψτε τον σκελετό ενός προγράμματος οδήγησης [I2C/SPI/UART] για [τσιπ/περιφερειακό]: συναρτήσεις προετοιμασίας, ανάγνωσης, εγγραφής, διαχείρισης σφαλμάτων. Αφήστε τις διευθύνσεις μητρώου και τα πεδία bit στο PLACEHOLDER (π.χ. REG_XXX) και σημειώστε "συμπλήρωση του χρόνου και επαλήθευση των δεδομένων από το χρόνο και επαλήθευση" κάθε συνάρτηση προϋποθέτει με μια γραμμή σχολίου."

ΠΡΟΤΥΠΟ ΑΣΦΑΛΕΙΑΣ ISR"Γράψτε ένα πρόχειρο ρουτίνας υπηρεσίας διακοπής (ISR) για το ακόλουθο συμβάν: [συμβάν]. Κανόνες: Διατηρήστε το ISR σύντομο, μην μπλοκάρετε, επισημάνετε τις κοινόχρηστες μεταβλητές με ζωηρή και ατομική πρόσβαση, αναθέστε τη μεγάλη εργασία στον κύριο βρόχο με μια σημαία. Στο τέλος του κώδικα, αυτοί οι κανόνες μπορούν να προσδιορίσουν αναλυτικά πού ισχύει το καθένα."

ΠΡΟΤΥΠΟ STATE MACHINE"Γράψτε έναν σκελετό μηχανής κατάστασης για το ακόλουθο πρωτόκολλο/διαδικασία: [περιγράψτε καταστάσεις, συμβάντα, μεταβάσεις και χρονικά όρια]. Καθορίστε τις ενέργειες εισόδου/εξόδου και τον κλάδο σφάλματος/χρονικού ορίου για κάθε κατάσταση. Αφήστε τις συγκεκριμένες τιμές του υλικού (καταχώριση, διάρκεια) ως σύμβολα θέσης και σημειώστε ότι πρέπει να επαληθευτούν."

ΠΡΟΤΥΠΟ ΕΞΕΤΑΣΗ ΚΩΔΙΚΟΥ "Εξετάστε τον ακόλουθο κώδικα υλικολογισμικού από ενσωματωμένη προοπτική και επισημάνετε τους κινδύνους: μη προστατευμένη κοινόχρηστη μεταβλητή (πτητική/ατομική), λειτουργία μεγάλης διάρκειας/μπλοκαρίσματος στο ISR, κίνδυνος υπερχείλισης στοίβας, αναμονή χωρίς χρονικό όριο, καταγραφή σφαλμάτων, τροφοδοσία παρακολούθησης. Προτείνετε πώς να δοκιμάζω/επαληθεύω για κάθε κωδικό.

Αδύναμη προτροπή / Ισχυρή προτροπή

ΑΔΥΝΑΤΗ ΠΡΟΤΑΣΗ: "Γράψε μου ένα πρόγραμμα οδήγησης UART."

STRONG PROMPT: "Γράψτε ένα πλαίσιο προγράμματος οδήγησης λήψης UART βάσει διακοπής για [μικροελεγκτής]. Χρησιμοποιήστε ένα buffer δακτυλίου. Κρατήστε το ISR σύντομο και απλώς γράψτε στο buffer, επεξεργασία στον κύριο βρό συγχρονισμός».

Η αδύναμη γραμμή εντολών παράγει κώδικα που είναι τυφλός υλικού και συγχρονισμού. Η ισχυρή προτροπή επιβάλλει ενσωματωμένους κανόνες και προτροπές για τη λίστα επαλήθευσης.

Επίπεδα επαλήθευσης υλικολογισμικού

στρώμα

τι πιάνει

Ο ρόλος του AI

Έλεγχος φύλλου δεδομένων

Λάθος καταχωρητής/bit

Δημιουργεί σύμβολο κράτησης θέσης και σημείωση ελέγχου

Στατική ανάλυση (linter)

πτητικά, σφάλματα τύπου, ορίων

Κατάλογος κανόνων και επεξήγηση

Προειδοποιήσεις μεταγλωττιστή

Σιωπηρή μετατροπή, αχρησιμοποίητη τιμή

Προειδοποιητικό σχόλιο

Δοκιμές σε υλικό

Συγχρονισμός, πραγματική συμπεριφορά

Πρόταση δοκιμαστικού σεναρίου

Παλμογράφος/αναλυτής

Ακρίβεια σήματος και πρωτοκόλλου

Σημείο μέτρησης και αναμενόμενο κύμα

Προσοχή: Το ότι ένα υλικολογισμικό «μεταγλωττίζεται» και «λειτουργεί τις περισσότερες φορές» δεν σημαίνει ότι είναι σωστό. Σφάλματα ταυτόχρονης χρήσης και χρονισμού συμβαίνουν μόνο υπό ορισμένες συνθήκες. Γι' αυτό η στατική ανάλυση και οι πραγματικές δοκιμές σε υλικό είναι απαραίτητες.

Συνήθη λάθη

  • Δεν προστατεύονται οι κοινόχρηστες μεταβλητές. Τα δεδομένα μεταξύ του ISR και του κύριου βρόχου πρέπει να είναι πτητικά και ατομικά.
  • Μη επαλήθευση της διεύθυνσης/bit καταχωρητή με το φύλλο δεδομένων. Το AI μπορεί να αντιστοιχίσει τη λάθος παραλλαγή.
  • Διατήρηση του ISR για μεγάλο χρονικό διάστημα ή αποκλεισμό εντός αυτού. Το σύστημα δεν μπορεί να ανταποκριθεί, οι διακοπές χάνονται.
  • Υποθέτοντας χρονισμό χωρίς μέτρηση. Ο πραγματικός χρόνος εξαρτάται από το υλικό. επαληθεύεται με παλμογράφο.
  • Αφήνοντας τον κρίσιμο για την ασφάλεια κώδικα για έγκριση AI. Ένας ικανός μηχανικός και η σχετική τυπική διαδικασία είναι απαραίτητα.

Συνοπτικά

Σε αυτή τη μονάδα χρησιμοποιήσατε το AI ως ισχυρό επιταχυντή για τη δημιουργία σκελετού υλικολογισμικού, προγράμματος οδήγησης, μηχανής κατάστασης και σκίτσο ISR. Αλλά στον ενσωματωμένο κόσμο, ο κώδικας είναι συνυφασμένος με το υλικό, τον πραγματικό χρόνο και την ασφάλεια: οι τιμές καταχωρητή/bit επαληθεύονται από το φύλλο δεδομένων, η ταυτόχρονη επαλήθευση από στατική ανάλυση, ο χρονισμός επαληθεύεται από τον παλμογράφο, η συμπεριφορά επαληθεύεται από πραγματικές δοκιμές στο υλικό. Το AI παραδίδει τον σκελετό σε λίγα λεπτά. Ο μηχανικός επαληθεύει ότι το υλικολογισμικό λειτουργεί σωστά, με ασφάλεια και εγκαίρως. Στα κρίσιμα για την ασφάλεια συστήματα, η έξοδος AI δεν αντικαθιστά τις διαδικασίες του σχετικού προτύπου ασφαλείας και την έγκριση αρμόδιου μηχανικού.

Εργασία εφαρμογής

Επιλέξτε μια περιφερειακή συσκευή (π.χ. έναν αισθητήρα I2C). Με το πρότυπο "driver skeleton", ζητήστε από το AI έναν σκελετό οδηγού που αφήνει εγγραφές σε placeholders. Στη συνέχεια, δημιουργήστε ένα σκίτσο ISR για τη διακοπή που είναι έτοιμη για δεδομένα από αυτόν τον αισθητήρα με το πρότυπο "ISR Security". Τέλος, σαρώστε τον κώδικα που παράγει με το πρότυπο "Επισκόπηση κώδικα" για ενσωματωμένους κινδύνους και γράψτε τουλάχιστον τρία βήματα επαλήθευσης/δοκιμών.

λίστα ελέγχου

  • [ ] Επιβεβαίωσα κάθε διεύθυνση καταχωρητή και bit από τη σωστή παραλλαγή φύλλου δεδομένων.
  • [ ] Έκανα τις κοινόχρηστες μεταβλητές μεταξύ του ISR και του κύριου βρόχου πτητικές και ατομικές.
  • [ ] Κράτησα το ISR σύντομο, δεν έβαλα μπλοκάρισμα, παρέδωσα τη μεγάλη εργασία στον κύριο βρόχο.
  • [ ] Σχεδίαζα να δοκιμάσω τον χρονισμό και την πραγματική συμπεριφορά στο υλικό και με έναν παλμογράφο.
  • [ ] Σάρωσα τον κώδικα με στατική ανάλυση και προειδοποιήσεις μεταγλωττιστή.
  • [ ] Άφησα τα κρίσιμα για την ασφάλεια εξαρτήματα στην έγκριση ενός αρμόδιου μηχανικού και στη σχετική τυπική διαδικασία.