- 1. Ανάπτυξη των απαιτήσεων προϊόντων
- 2. Σχεδιασμός συστήματος και ανάπτυξη αλγορίθμου
- 3. Κωδικοποίηση για ενσωματωμένο υλικολογισμικό
- Δοκιμή ενσωματωμένου υλικολογισμικού
Η ανάπτυξη λογισμικού είναι γενικά δύσκολη, αλλά για ένα ενσωματωμένο σύστημα, βρίσκεται σε ένα εντελώς νέο επίπεδο δυσκολίας. Οι προγραμματιστές υλικολογισμικού πρέπει να έχουν καλές γνώσεις σχετικά με την ανάπτυξη υλικού και να κατανοήσουν τις εσωτερικές λειτουργίες ενός ενσωματωμένου επεξεργαστή. Για το σημερινό άρθρο, θα μοιραστώ εργαλεία και συμβουλές που θα μπορούσαν να χρησιμοποιηθούν για την επίτευξη υψηλού επιπέδου αποτελεσματικότητας και την εξάλειψη ορισμένων από τα πράγματα που καθιστούν την ανάπτυξη υλικολογισμικού κουραστική.
Η ενσωματωμένη ανάπτυξη λογισμικού περνά από την παρόμοια διαδικασία ανάπτυξης με την «συνηθισμένη» ανάπτυξη λογισμικού. Ανεξάρτητα από το μοντέλο ανάπτυξης / διαχείρισης που υιοθετήθηκε, το Embedded Software Development γενικά περιλαμβάνει τα παρακάτω βήματα:
- Ανάπτυξη της απαίτησης προϊόντος
- Σχεδιασμός συστήματος και ανάπτυξη αλγορίθμου
- Κωδικοποίηση
- Δοκιμές
Θα εξετάσουμε μερικές από τις δυσκολίες που έρχονται με αυτά τα στάδια και μερικά από τα εργαλεία που θα μπορούσαν να αυξήσουν την αποδοτικότητα και την παραγωγικότητα.
1. Ανάπτυξη των απαιτήσεων προϊόντων
Οι προδιαγραφές του προϊόντος γίνονται συχνά λαμβάνοντας υπόψη τους σχεδιαστές του πίνακα. Συνήθως περιέχει λίγες πληροφορίες που θα μπορούσαν να βοηθήσουν στην ανάπτυξη υλικολογισμικού, επομένως, ο ενσωματωμένος προγραμματιστής λογισμικού καταλήγει σε ένα ελαττωματικό έγγραφο 250 σελίδων (μέσος όρος) το οποίο δεν μπορεί να χρησιμοποιηθεί για αναφορές και αν δεν εξεταστεί προσεκτικά θα μπορούσε εύκολα να οδηγήσει σε παραβίαση του σχεδιασμού που, με τη σειρά τους, οδηγεί σε παράταση του χρονικού πλαισίου του έργου, εάν όχι σε γενική αποτυχία του έργου. Τα έγγραφα σπάνια περιέχουν πληροφορίες σχετικά με τα μητρώα ή τα πεδία bit τουςμεταξύ άλλων και αυτό κοστίζει προγραμματιστές υλικολογισμικού αρκετές ώρες εργασίας καθώς ψάχνουν μέσω του εγγράφου για να προσδιορίσουν πράγματα όπως ποιος καταχωρητής ανήκει σε ποια ομάδα και ποιο πεδίο bit ανήκει σε ποια εγγραφή. Ακολουθούν μερικές συμβουλές που θα μπορούσαν να ληφθούν υπόψη για να διασφαλιστεί η ανάπτυξη πιο χρήσιμων εγγράφων προδιαγραφών έργου.
Χρήση περιγραφών μητρώου
Όπως συζητήθηκε παραπάνω, οι προγραμματιστές υλικολογισμικού πρέπει να κατανοήσουν τις περιπλοκές όλων των καταχωρητών, των αναμνήσεων κ.λπ. όλων των στοιχείων ελέγχου (CPU, MCU κ.λπ.) σε ένα έργο για να είναι σε θέση να ελέγχουν αποτελεσματικά όλα τα μέρη του συστήματος. Για να το εφαρμόσουν αυτό, οι προγραμματιστές υλικολογισμικού μπορούν να διασφαλίσουν ότι το έγγραφο προδιαγραφών φέρει την κατάλληλη περιγραφή των καταχωρητών μαζί με τους χάρτες μνήμης. Σε όλους τους καταχωρητές στο στοιχείο ελέγχου θα μπορούσε να εκχωρηθεί ένα διακριτικό όνομα που τους καθιστά εύκολο να αναγνωριστούν σε ολόκληρο το έγγραφο και θα μπορούσαν όλοι να είναι hot-link έτσι ώστε να οδηγούν σε μια λίστα μέσα στο έγγραφο που αναφέρει το όνομα, την τοποθεσία, το μπλοκ και τη διεύθυνση του κάθε μητρώο.
Περιγραφές εργασιών
Ένας άλλος τρόπος με τον οποίο τα έγγραφα προδιαγραφών μπορούν να καταστούν χρήσιμα στους ενσωματωμένους προγραμματιστές λογισμικού είναι να περιγράψουν τι πρέπει να κάνει κάθε μπλοκ και πώς πρέπει να το κάνει. Επίσης σε αυτό το στάδιο, θα πρέπει να υπάρχουν σχέδια για χειρισμό σφαλμάτων σε κάθε μπλοκ Ουσιαστικά αυτό μοιάζει να λέει ο προγραμματιστής υλικολογισμικού. «Όταν φτάσω εδώ, πρέπει να το κάνω αυτό, αυτό και αυτό, διασφαλίζοντας ότι αυτό, αυτό και αυτό, δεν συμβαίνει». Αυτό βοηθά στην καθοδήγηση της εργασίας του προγραμματιστή και βοηθά στην αξιολόγηση του έργου ακόμη και πριν ξεκινήσει ο σχεδιασμός για να εντοπίσει πιθανά σφάλματα και σφάλματα, εξοικονομώντας πολύτιμο χρόνο και χρήμα.
Υπάρχουν και άλλοι παράγοντες, όπως η δομή του εγγράφου, η χρήση ευανάγνωστων γραμματοσειρών (κάτι που οι προγραμματιστές μπορούν να συνεργαστούν ακόμη και όταν είναι κουρασμένοι), γραφήματα και εικόνες όπου είναι δυνατόν, που θα μπορούσαν όλοι να αυξήσουν την αποτελεσματικότητα της ομάδας υλικολογισμικού μετά από αυτό το στάδιο.
2. Σχεδιασμός συστήματος και ανάπτυξη αλγορίθμου
Αυτό το στάδιο περιλαμβάνει την ανάπτυξη των ψευδοκώδικα, διαγράμματα ροής, μηχανές κατάστασης και όλα όσα σχετίζονται με τη σχεδίαση αυτού του υλικολογισμικού. Για αυτό το στάδιο, αρκετά εργαλεία μπορούν να χρησιμοποιηθούν για να βοηθήσουν στην οργάνωση σκέψεων, στην εξερεύνηση παλαιού λογισμικού / προηγουμένως γραπτού λογισμικού γύρω από το έργο και στην ανάπτυξη του δικού σας διαγράμματος ροής, μηχανής κατάστασης κ.λπ. Μερικά από αυτά τα εργαλεία συζητούνται παρακάτω.
PIMs
Σε αυτό το στάδιο ανάπτυξης του προϊόντος, οι προγραμματιστές τείνουν να γράφουν πολλά καθώς συλλέγουν πόρους στο έργο από συνδέσμους ιστού σε τύπους κ.λπ. Ένας από τους καλύτερους τρόπους για να παρακολουθείτε αυτές τις πληροφορίες, ώστε να είναι χρήσιμες αργότερα είναι μέσω της χρήσης PIM εργαλεία (διαχείριση πληροφοριών προϊόντος). Υπάρχουν αρκετά PIMs εκεί έξω, αλλά θα αναφέρω μερικά με μερικά εξαιρετικά χαρακτηριστικά.
1. Evernote
Το Evernote σάς βοηθά να κρατάτε σημειώσεις που είναι διαθέσιμες σε οποιαδήποτε πλατφόρμα, ώστε να μπορείτε να ελέγξετε τη σημείωση που κάνατε στον υπολογιστή σας ενώ βρίσκεστε στο σπίτι του λεωφορείου. Οι σημειώσεις είναι καλά οργανωμένες και μπορούν να αναζητηθούν εντελώς, ώστε να βρίσκετε πάντα αυτό που χρειάζεστε.
2. TrunkNote
Το Trunk note είναι μια εφαρμογή λήψης σημειώσεων τύπου Wiki. Φέρνει όλη τη οργανωτική δύναμη των wiki στη λήψη σημειώσεων. Είναι μια εφαρμογή που βασίζεται σε κινητό τηλέφωνο, αλλά μπορεί εύκολα να συγχρονιστεί με έναν υπολογιστή μέσω WIFI.
Άλλα είδη PIMs όπως το Tiddlywiki κ.λπ. Καθένα από αυτά διαθέτει δυνατότητες που μπορεί να το κάνουν πιο ελκυστικό για συγκεκριμένα άτομα και μπορεί να λάβει κάποια δειγματοληψία προτού επιτύχετε τελικά ένα.
Κατανόηση του παλαιού κώδικα
Μια άλλη ομάδα εργαλείων που είναι πολύ χρήσιμα κατά το στάδιο του σχεδιασμού είναι εργαλεία για την κατανόηση των παλαιών κωδικών. Σε περιπτώσεις όπου το προϊόν που σχεδιάζεται είναι μια βελτιωμένη έκδοση ενός προηγούμενου προϊόντος, ο προγραμματιστής μπορεί να φανεί χρήσιμο να ελέγξει την εργασία που έχει ήδη γίνει για να πάρει κάποιες ιδέες και ίσως κομμάτια κώδικα για αυτό το νέο έργο. Αυτό μπορεί να είναι αρκετά μακρύς δρόμος, ειδικά αν δεν ήσασταν μέλος της ομάδας που δημιούργησε το προηγούμενο λογισμικό. Υπάρχει αρκετός αριθμός λογισμικού που βοηθά στην κατασκευή δέντρων, στη δημιουργία τεκμηρίωσης και διαγραμμάτων ροής από ήδη γραπτό κώδικα.
1. Δοξυγόνο
Το Doxygen είναι ένα αρκετά ισχυρό εργαλείο που βοηθά στη δημιουργία τεκμηρίωσης από τους πηγαίους κωδικούς. Σχεδιάστηκε κυρίως για να λειτουργεί με το C ++, αλλά επίσης λειτουργεί με C, Python και με κάποιες άλλες γλώσσες. Έχει τη δυνατότητα να εξαγάγει τη δομή κώδικα οποιουδήποτε κώδικα, παρέχοντας αυτόματα γραφήματα εξάρτησης και διαγράμματα κληρονομιάς που βοηθούν στην οπτικοποίηση του κώδικα.
2. Graphviz
Σύμφωνα με τον ιστότοπό τους, το graphviz βοηθά στην παρουσίαση δομικών πληροφοριών ως διαγράμματα αφηρημένων γραφημάτων και δικτύων. Μπορεί να χρησιμοποιηθεί παράλληλα με το Doxygen για την καλύτερη κατανόηση των γραφικών που παράγει.
3. Σρεκόρντ
Το Srecord είναι ένα ισχυρό εργαλείο για το χειρισμό εικόνων υλικολογισμικού και τη μετατροπή μεταξύ διαφορετικών μορφών αρχείων. Μπορεί να χρησιμοποιηθεί για να υπολογίσει και να κάνει CRC και Checksums σε μπλοκ byte, να διορθώσει τα αρχεία σφάλματος που δημιουργήθηκαν λόγω αλυσίδων εργαλείων με λάθη και να φιλτράρει ή να μετακινεί τμήματα αρχείων μεταξύ άλλων. Περισσότερες πληροφορίες σχετικά με τη χρήση του μπορείτε να βρείτε στη σελίδα SourceForge.
Κάποια άλλα εργαλεία που εμπίπτουν σε αυτήν την κατηγορία είναι μεταξύ άλλων τα CrystalRev και Hexplorer .
Ανάπτυξη αλγορίθμων
Όλη η έρευνα και η λήψη σημειώσεων συγκεντρώνουν την ανάπτυξη αλγορίθμων που ξεκινούν σε ψευδοκώδικες και διαγράμματα ροής για το έργο. Υπάρχουν πολλά εργαλεία για την ανάπτυξη διαγραμμάτων ροής και ενώ τα περισσότερα από αυτά δεν είναι αποκλειστικά για την ανάπτυξη υλικολογισμικού, παρέχουν χρήσιμες και σημαντικές δυνατότητες που απλώς ολοκληρώνουν τη δουλειά και βοηθούν επίσης στη διατήρηση των γραφημάτων καθ 'όλη τη διάρκεια του κύκλου ανάπτυξης προϊόντων. Παρακάτω είναι μερικά από τα καλύτερα εργαλεία εκεί έξω για το διάγραμμα ροής.
1. QFSM
Το QFSM είναι ένα γραφικό εργαλείο για το σχεδιασμό και την προσομοίωση μηχανών πεπερασμένης κατάστασης. Η ικανότητά του να προσομοιώνει τα σχέδια το καθιστά πολύ καλύτερο από τα περισσότερα άλλα λογισμικά αυτής της ομάδας. Είναι ιδιαίτερα χρήσιμο όταν σχεδιάζετε μηχανήματα κατάστασης για FPGA και παρόμοιο υλικό-στόχο.
2. Διάγραμμα διαυγών
Το Lucid chart είναι αναμφισβήτητα το καλύτερο και πιο ευέλικτο λογισμικό διαγράμματος ροής εκεί έξω. Είναι διαδικτυακό και διαθέτει ομαδικές δυνατότητες που σας επιτρέπουν να εργάζεστε μεταξύ πολλών συσκευών και να συνεργάζεστε σε πραγματικό χρόνο με συμπαίκτες.
3. Microsoft Visio
Το Visio είναι ένα από τα καλύτερα εργαλεία γραφικών προς το παρόν. Διαθέτει μια σειρά αντικειμένων από διαφορετικά πεδία που διευκολύνουν την περιγραφή οτιδήποτε Ωστόσο, δεν συνοδεύεται από δυνατότητες που ενισχύουν τη συνεργασία μεταξύ ομάδων και μπορούν να χρησιμοποιηθούν μόνο σε μια μηχανή παραθύρων στην οποία είναι εγκατεστημένη.
4. Παρουσιάσεις Google
Ένα από τα βασικά πράγματα στην ανάπτυξη προϊόντων στο σημερινό κόσμο είναι η χρήση εργαλείων που επιτρέπουν στις ομάδες να συνεργάζονται αποτελεσματικά από όπου κι αν βρίσκονται και αυτό είναι ένα πράγμα που οι διαφάνειες της Google φέρνουν στο πλοίο. Μπορεί να χρησιμοποιηθεί για την ανάπτυξη κάθε είδους γραφημάτων από διαγράμματα ροής λογισμικού σε οργανωτικά διαγράμματα και χάρτες μυαλού. Είναι βασισμένο σε σύννεφο και λειτουργεί σε σχεδόν όλα τα δημοφιλή προγράμματα περιήγησης.
Υπάρχουν πολλά άλλα εργαλεία για τη δημιουργία διαγραμμάτων ροής και γενικής ανάπτυξης αλγορίθμων, ως συνήθως, το καθένα με τα δικά του υπέρ και μειονεκτήματα.
3. Κωδικοποίηση για ενσωματωμένο υλικολογισμικό
Όλα όσα έχουν αναφερθεί μέχρι αυτό το σημείο οδηγούν εδώ. Ο κόσμος των SDK και IDE, η επιλογή εργαλείων σε αυτό το στάδιο εξαρτάται από τη συσκευή προορισμού και τις δυνατότητες που πρέπει να ενσωματωθούν στη συσκευή, για αυτόν τον λόγο, θα εξαιρέσω δημοφιλή SDK και IDE όπως το MPLAB κ.λπ. από τη συζήτηση και απλώς κολλήσω σε εργαλεία που είναι πιο συμπληρωματικά στη φύση.
1. QT (Ανάπτυξη GUI)
Οι οθόνες (διαδραστικές ή όχι) είναι τα πιο δημοφιλή μέσα για την παροχή σχολίων στους χρήστες αυτές τις μέρες και το SDK του QT είναι ένα από τα καλύτερα εκεί έξω και πιθανώς δεν είναι ξένο για κανέναν στον ενσωματωμένο κύκλο. Παρέχει δυνατότητες "drag and drop" που διευκολύνουν την ανάπτυξη σύνθετων εφαρμογών με βάση το GUI για ενσωματωμένες συσκευές, ανεξάρτητα από την πλατφόρμα προορισμού ή τη γλώσσα προγραμματισμού που χρησιμοποιείται για τη συνολική ανάπτυξη του έργου. Βασικά εξαλείφει το άγχος που σχετίζεται με τη χρήση κώδικα για τη δημιουργία διεπαφών χρήστη.
2. (Γρήγορο πρωτότυπο)
Ένα από τα μεγαλύτερα εμπόδια στην ανάπτυξη ενσωματωμένου λογισμικού είναι το γεγονός ότι το υλικό συνήθως δεν είναι διαθέσιμο για να δοκιμάσετε πράγματα εν κινήσει ενώ το λογισμικό αναπτύσσεται. Συχνά, όταν είναι διαθέσιμο, οι προγραμματιστές υλικολογισμικού θα πρέπει να περιμένουν όλο το χρόνο που χρειάστηκε για να είναι έτοιμο το υλικό να κάνει λίγο ή τίποτα. Αυτό αυξάνει τον χρόνο παράδοσης και δεν δημιουργεί χώρο για το είδος συγχρονισμού μεταξύ των μηχανικών υλικού και των προγραμματιστών υλικολογισμικού που θα είχαν αυξήσει την ποιότητα του προϊόντος. Για να βοηθήσουν στην επίλυση αυτού του προβλήματος, τα παιδιά στο VaST δημιούργησαν μια πλατφόρμα εικονικών πρωτοτύπων σε επίπεδο ηλεκτρονικών συστημάτων που θα μπορούσε να χρησιμοποιηθεί για τη δημιουργία ενός πρωτότυπου εικονικού υλικού στο οποίο μπορεί να εκτελεστεί ενσωματωμένο λογισμικό για τον προσδιορισμό της απόδοσης του συστήματος πριν το υλικό είναι έτοιμο.
3. Δοξυγόνο (Τεκμηρίωση)
Ένα από τα πιο σημαντικά μέρη της σύνταξης οποιουδήποτε κώδικα είναι η τεκμηρίωση και ένα από τα πιο δημοφιλή εργαλεία για αυτό είναι το Doxygen. Εκτός από τη χρήση του για την κατανόηση παλαιού λογισμικού, το Doxygen έχει τη δυνατότητα να εξαγάγει αυτόματα σχόλια από έναν κώδικα και να δημιουργήσει τεκμηρίωση που τον περιλαμβάνει. Οι δομές του οξυγόνου περιλαμβάνουν αρχεία γραφικά και δημιουργούν αναφορές για κάθε συνάρτηση, μεταβλητή και μακροεντολή που χρησιμοποιούνται στον κώδικά σας. Τα διαγράμματα ροής και τα διαγράμματα ροής δεδομένων μπορούν επίσης να ενσωματωθούν στην τεκμηρίωση συνδυάζοντας το Doxygen με το graphviz.
4. GIT (Συστήματα Ελέγχου Έκδοσης)
Είναι δύσκολο να πιστέψουμε ότι οποιοσδήποτε αναπτύσσει λογισμικό οποιουδήποτε τύπου χωρίς κάποιο είδος συστήματος ελέγχου εκδόσεων αυτές τις μέρες, αλλά σε περίπτωση που το κάνετε, είναι μια πολύ κακή ιδέα που θα μπορούσε να οδηγήσει σε λάθη που θα σας κοστίσουν χρόνο και χρήμα. Το Git ξεχωρίζει μεταξύ όλων των εργαλείων ελέγχου εκδόσεων εκεί έξω για διάφορους λόγους. Είναι ανοιχτού κώδικα, γρήγορο, αποτελεσματικό και κυρίως τοπικό. Εκτός από το Git, αξίζει να αναφερθούν και εργαλεία όπως η ανατροπή.
Δοκιμή ενσωματωμένου υλικολογισμικού
Ο έλεγχος είναι ένα σημαντικό μέρος της διαδικασίας ανάπτυξης για οτιδήποτε. Οι εταιρείες χάνουν χιλιάδες δολάρια όταν γίνεται ανάκληση των συσκευών λόγω σφαλμάτων υλικολογισμικού, οπότε αποτελεί μέρος της ανάπτυξης που πρέπει να ληφθεί πολύ σοβαρά υπόψη. Συχνά γίνεται, χέρι-χέρι, με κωδικοποίηση και το πρώτο σετ εργαλείων για τον έλεγχο κώδικα, είναι πιθανώς οι εντοπιστές εντοπισμού σφαλμάτων στο IDE ή το SDK που χρησιμοποιούνται για το έργο. Η δοκιμή έρχεται σε διαφορετικές μορφές και πραγματοποιείται σε διαφορετικά στάδια, ως τέτοια, περιλαμβάνει διάφορα είδη εργαλείων. Τα εργαλεία δοκιμών σχηματίζουν περικοπές ανάπτυξης υλικολογισμικού στην επικύρωση σχεδιασμού έως στατικά εργαλεία ανάλυσης και δοκιμής χρόνου εκτέλεσης. Παρακάτω είναι μερικά εργαλεία που βρίσκω πραγματικά χρήσιμα.
1. Crystal REV
Το Crystal revs είναι ένα εργαλείο για τη μελέτη κώδικα. Μπορεί να χρησιμοποιηθεί για τη δημιουργία διαγράμματος ροής από τον κώδικα C / C ++ που το καθιστά ένα εξαιρετικό εργαλείο για την αναθεώρηση του δικού σας κώδικα και για να δείτε αν το προκαταρκτικό σχέδιο είναι αυτό που εφαρμόστηκε. Με το κρύσταλλο rev, θα μπορείτε να δείτε γρήγορα τη διαφορά μεταξύ του σχεδιασμού και της υλοποίησης. Η ικανότητά του να δημιουργεί διαγράμματα ροής, δεδομένα και ροή κλήσεων από κωδικούς το καθιστά επίσης ένα εργαλείο, χρήσιμο για την ανάλυση κώδικα παλαιού τύπου.
2. PC- Lint
Το PC-lint είναι ένα από τα παλαιότερα εργαλεία δοκιμής υλικολογισμικού. Είναι σε θέση να αναλύει λογισμικό για τον εντοπισμό σφαλμάτων, τα θέματα ευπάθειας ασφαλείας και να διασφαλίζει ότι ο κώδικας γράφτηκε σύμφωνα με τα βιομηχανικά πρότυπα. Παρόμοια εργαλεία περιλαμβάνουν μεταξύ άλλων το Polyspace και το LRDA, το Eggplant και το Tessy.
3. Wireshark
Αυτό είναι χρήσιμο κατά την κατασκευή συσκευών δικτύου. Είναι ουσιαστικά ένα πακέτο sniffer και θα μπορούσε να βοηθήσει στην προβολή των δεδομένων που μεταδίδει η συσκευή σας. Αυτό θα μπορούσε να βοηθήσει στην ασφάλεια της συσκευής.
4. Πρόγραμμα οδήγησης εικονικής σειριακής θύρας
Το λογισμικό VSPD by eltima είναι ένα εργαλείο που πρόσφατα εισήχθη από έναν φίλο. Είναι πολύ βολικό όταν εργάζεστε σε προγράμματα οδήγησης συσκευών και σε άλλες εξελίξεις που σχετίζονται με τη θύρα. Η εικονική σειριακή θύρα com σας δίνει τη δυνατότητα να ελέγχετε τη συμπεριφορά των θυρών com χωρίς τη συσκευή προορισμού. Θα μπορούσατε να δημιουργήσετε έναν απεριόριστο αριθμό θυρών που μπορεί να μιμηθεί όλες τις ρυθμίσεις των πραγματικών θυρών com. Το λογισμικό έρχεται επίσης με δυνατότητες όπως Serial port split, συγχώνευση θύρων Com, χρήση συνδέσεων θύρας bundle μεταξύ άλλων δροσερών χαρακτηριστικών.
Αυτό είναι για αυτό το άρθρο, ευχαριστώ που αφιερώσατε χρόνο για να διαβάσετε. Αν και είναι αδύνατο να απαριθμήσετε όλα τα εργαλεία εκεί έξω, ελπίζω να βρείτε μερικά από αυτά τα εργαλεία χρήσιμα.