Πελάτες από automotive και βιομηχανία εμπιστεύονται την embedded εμπειρία μου από την ίδρυση της SCHMITT CONSULTING. Δύο έργα απεικονίζουν τον τρόπο εργασίας μου.
Ως ανεξάρτητος embedded σύμβουλος αναπτύσσω για πελάτες που χρειάζονται λογισμικό κοντά στο υλικό, συμπεριφορά πραγματικού χρόνου ή συνδυασμό και των δύο.
Για λόγους εμπιστευτικότητας δεν μπορούν όλα τα έργα να παρουσιαστούν δημόσια. Τα ακόλουθα δύο παραδείγματα περιγράφουν έργα των οποίων τα βασικά δεδομένα μπορώ να αναφέρω.
Για τη Stihl στο Waiblingen ανέπτυξα εκ νέου εντελώς το λογισμικό για τον έλεγχο του κινητήρα ενός αλυσοπρίονου. Σημείο εκκίνησης ήταν μια εργασία ανάλυσης: το υπάρχον λογισμικό ελέγχου προερχόταν από Ιάπωνα προμηθευτή και ήταν γραμμένο σε assembler. Η Stihl ήθελε να κατανοήσει λεπτομερώς τι έκανε αυτό το λογισμικό. Ανέλυσα τον κώδικα assembler και τεκμηρίωσα τις λειτουργίες έτσι ώστε οι προγραμματιστές της Stihl να μπορούν να ακολουθήσουν τη λογική πλήρως.
Σε αυτή τη βάση έλαβα την ανάθεση για ανανέωση ανάπτυξης — αυτή τη φορά σε C, με στόχο να παραδώσω περισσότερη λειτουργικότητα από το αρχικό λογισμικό. Οι οριακοί όροι ήταν αυστηροί: η αγορά αλυσοπρίονων είναι εξαιρετικά ανταγωνιστική σε τιμή, οπότε ήταν διαθέσιμος μόνο πολύ μικρός, φθηνός μικροελεγκτής. Η μνήμη ήταν τόσο περιορισμένη ώστε ένα λειτουργικό σύστημα πραγματικού χρόνου ήταν αποκλεισμένο. Το λογισμικό έπρεπε να τρέχει bare-metal και ταυτόχρονα να επεξεργάζεται παράλληλα αξιόπιστα realtime σήματα από το υλικό.
Καθ' όλη την ανάπτυξη είχα στο γραφείο μου μόνο μια πλακέτα με το υλικό και τον κώδικά μου — χωρίς δοκιμαστικό περιβάλλον, χωρίς κινητήρα. Η πρώτη πρακτική δοκιμή έγινε στον δοκιμαστικό πάγκο της Stihl στο Waiblingen. Μετά από μήνες ανάλυσης και ανάπτυξης δεν θα ήταν ασυνήθιστο εάν ο κινητήρας δεν ξεκινούσε αμέσως. Ξεκίνησε αμέσως και βασικά λειτουργούσε καλά. Το υπόλοιπο ήταν λεπτή ρύθμιση των σημείων ανάφλεξης, βελτιστοποιημένη επαναληπτικά στον δοκιμαστικό πάγκο — διαδικασία που αλλιώς καλύπτεται από προσαρμοστικό λογισμικό μάθησης, αλλά εδώ έπρεπε να εκτελεστεί χειροκίνητα για λόγους μνήμης.
Στο τέλος παρέδωσα στη Stihl λογισμικό ελέγχου που έκανε περισσότερα από την προηγούμενη ιαπωνική έκδοση, έτρεχε στον ίδιο φθηνό μικροελεγκτή και παραδόθηκε με πλήρη τεκμηρίωση. Το εμπορικό πλαίσιο αξίζει αναφοράς: στις τελικές διαπραγματεύσεις στο τμήμα προμηθειών της Stihl η προηγουμένως συμφωνημένη τιμή δεν μειώθηκε. Ο αγοραστής απλώς έκανε σαφές ότι κάθε ευρώ έπρεπε να είναι αιτιολογήσιμο — αλλά η μείωση τιμής δεν ήταν στόχος. Αυτή η εμπειρία — πελάτης που πληρώνει αιτιολογήσιμες τιμές για αιτιολογήσιμη ποιότητα — είναι σπάνια στην αγορά και διαμορφώνει μέχρι σήμερα την κατανόησή μου για καλή συνεργασία.
Το έργο διεκπεραιώθηκε ως σύμβαση σταθερής τιμής. Η ανάπτυξη πραγματοποιήθηκε εξ ολοκλήρου εκτός των εγκαταστάσεων της Stihl· ο συντονισμός με το άτομο επικοινωνίας της Stihl γινόταν μόνο σε θεμελιώδεις αποφάσεις.
Για την Audi στο Ingolstadt η αρχική μου ανάθεση ήταν η δημιουργία λογισμικού προσομοίωσης διαύλου MOST για το σύστημα infotainment — προσομοίωση realtime που επέτρεπε τη δοκιμή μονάδων ελέγχου έναντι εικονικού διαύλου MOST.
Επιτόπου αποδείχθηκε ότι η Audi είχε παράλληλα ένα δεύτερο πρόβλημα: μια υπάρχουσα πλακέτα προσομοίωσης CAN, που είχε παραδοθεί από εξωτερικό προμηθευτή, δεν λειτουργούσε αξιόπιστα σε ορισμένες συνθήκες λειτουργίας — απλώς σταματούσε να στέλνει δεδομένα σε καθοριστικές στιγμές. Επειδή η εργασία μου με το MOST μου είχε δώσει λεπτομερή γνώση της συνεργασίας των διαύλων CAN και MOST, το άτομο επικοινωνίας της Audi με ρώτησε αν μπορούσα να ξαναφτιάξω αυτή την προσομοίωση CAN αυτόνομα.
Συμφώνησα με την παρατήρηση ότι το πρώτο βήμα θα ήταν ένα λειτουργικό πρωτότυπο — όχι όμορφο, αλλά λειτουργικό. Σε λιγότερο από πέντε εργάσιμες ημέρες στο γραφείο μου βρισκόταν μια ηλεκτρονική πλακέτα δικού μου σχεδιασμού με ATmega128, συνοδευόμενη από λογισμικό προσομοίωσης γραμμένο από εμένα. Το πρωτότυπο ήταν χειροκίνητα κολλημένο, αλλά λειτουργούσε — και σε συνθήκες λειτουργίας στις οποίες η πλακέτα του προηγούμενου προμηθευτή αποτύγχανε.
Η Audi στη συνέχεια ρώτησε αν μπορούσα να κατασκευάσω και να παραδώσω τεμάχια — αλλά σε βιομηχανική ποιότητα, εξ ολοκλήρου μηχανικά κατασκευασμένα, όχι χειροκίνητα. Σχεδίασα τη διάταξη για σειριακή πλακέτα και συνεργάστηκα με κατασκευαστή PCB από το περιβάλλον της Audi που ανέλαβε τη μηχανική κατασκευή. Αφού ένα συμβάν στη μηχανική δοκιμή του κατασκευαστή λύθηκε, η πλακέτα παρέδιδε αξιόπιστα αποτελέσματα — ακριβώς εκεί όπου η αρχική πλακέτα του προμηθευτή αποτύγχανε.
Αυτό το έργο δείχνει μια περίπτωση όπου η ανάθεση μεγάλωνε μέσω συγκεκριμένης τεχνικής ουσίας: στην αρχική εργασία λογισμικού προστέθηκε ίδια ανάπτυξη υλικού με μαζική παραγωγή — επειδή γνώριζα την αρχιτεκτονική διαύλου αρκετά βαθιά ώστε να προτείνω κατόπιν αιτήματος μια λειτουργική οδό λύσης.
Δίπλα στα έργα που περιγράφηκαν λεπτομερώς, εργάστηκα για άλλους πελάτες σε automotive, βιομηχανία και ιατρική. Πιο συγκεκριμένες αναφορές για εργασίες συγκρίσιμες με το περιβάλλον σας συζητούνται ευχαρίστως σε αρχική συζήτηση — υπό εμπιστευτικότητα εφόσον το επιθυμείτε.
Τρία χαρακτηριστικά διατρέχουν τα δύο έργα και μεγάλο μέρος της δραστηριότητάς μου: