Μετάφραση άρθρου από blog post μηχανικός Τζορτζ Χίλιαρντ
Με δυνατότητα κλικ
Είμαι μηχανικός ενσωματωμένων συστημάτων. Στον ελεύθερο χρόνο μου, συχνά αναζητώ κάτι που μπορεί να χρησιμοποιηθεί στο σχεδιασμό μελλοντικών συστημάτων ή κάτι από τα ενδιαφέροντά μου.
Ένας τέτοιος τομέας είναι οι φτηνοί υπολογιστές που μπορούν να τρέξουν Linux, και όσο φθηνότερο τόσο το καλύτερο. Έτσι έσκαψα μια βαθιά τρύπα από ασαφείς επεξεργαστές.
Σκέφτηκα, «Αυτοί οι επεξεργαστές είναι τόσο φθηνοί που μπορούν πρακτικά να δοθούν δωρεάν». Και μετά από λίγο καιρό, μου ήρθε η ιδέα να φτιάξω μια γυμνή κάρτα για Linux σε μορφή επαγγελματικής κάρτας.
Μόλις το σκέφτηκα, αποφάσισα ότι θα ήταν πολύ ωραίο να κάνω. Έχω ήδη είδαηλεκτρονικόςεπαγγελματικές κάρτες να το, και είχαν διάφορες ενδιαφέρουσες δυνατότητες, όπως εξομοίωση καρτών flash, λαμπτήρες που αναβοσβήνουν ή ακόμα και ασύρματη μετάδοση δεδομένων. Ωστόσο, δεν έχω δει επαγγελματικές κάρτες με υποστήριξη Linux.
Έφτιαξα λοιπόν τον εαυτό μου.
Αυτή είναι η τελική έκδοση του προϊόντος. Ένας πλήρης ελάχιστος υπολογιστής ARM που τρέχει την προσαρμοσμένη έκδοση του Linux που έχει δημιουργηθεί με το Buildroot.
Διαθέτει θύρα USB στη γωνία. Εάν το συνδέσετε σε υπολογιστή, εκκινείται σε περίπου 6 δευτερόλεπτα και είναι ορατό ως κάρτα flash και μια εικονική σειριακή θύρα μέσω της οποίας μπορείτε να συνδεθείτε στο κέλυφος της κάρτας. Στη μονάδα flash υπάρχει ένα αρχείο README, ένα αντίγραφο του βιογραφικού μου και πολλές φωτογραφίες μου. Το κέλυφος έχει πολλά παιχνίδια, κλασικά Unix όπως το fortune and rogue, μια μικρή έκδοση του παιχνιδιού 2048 και έναν διερμηνέα MicroPython.
Όλα αυτά γίνονται χρησιμοποιώντας ένα πολύ μικρό τσιπ flash 8 MB. Ο bootloader χωράει σε 256 KB, ο πυρήνας καταλαμβάνει 1,6 MB και ολόκληρο το ριζικό σύστημα αρχείων καταλαμβάνει 2,4 MB. Επομένως, απομένει πολύς χώρος για την εικονική μονάδα flash. Υπάρχει επίσης ένας αρχικός κατάλογος που μπορεί να εγγραφεί σε περίπτωση που κάποιος κάνει οτιδήποτε θέλει να αποθηκεύσει. Όλα αυτά αποθηκεύονται επίσης σε ένα τσιπ flash.
Ολόκληρη η συσκευή κοστίζει λιγότερο από 3 $. Είναι αρκετά φθηνό για να το χαρίσεις. Εάν λάβατε μια τέτοια συσκευή από εμένα, σημαίνει ότι πιθανότατα προσπαθώ να σας εντυπωσιάσω.
Σχεδιασμός και κατασκευή
Σχεδίασα και συναρμολόγησα τα πάντα μόνος μου. Είναι η δουλειά μου και μου αρέσει, και μεγάλο μέρος της πρόκλησης ήταν να βρω αρκετά φθηνά ανταλλακτικά για το χόμπι.
Η επιλογή του επεξεργαστή ήταν η πιο σημαντική απόφαση που επηρέασε το κόστος και τη σκοπιμότητα του έργου. Μετά από εκτενή έρευνα, επέλεξα τον F1C100s, έναν σχετικά ελάχιστα γνωστό επεξεργαστή από την Allwinner που είναι βελτιστοποιημένος ως προς το κόστος (δηλαδή, φτηνός). Τόσο η RAM όσο και η CPU βρίσκονται στο ίδιο πακέτο. Αγόρασα επεξεργαστές στο Taobao. Όλα τα άλλα εξαρτήματα αγοράστηκαν από την LCSC.
Παρήγγειλα τις σανίδες από την JLC. Έκαναν 8 αντίγραφα για μένα για 10 $. Η ποιότητά τους είναι εντυπωσιακή, ειδικά για την τιμή? δεν είναι τόσο προσεγμένο όσο του OSHPark, αλλά εξακολουθεί να δείχνει καλό.
Έκανα την πρώτη παρτίδα μαύρο ματ. Έδειχναν όμορφα, αλλά λερώνονταν πολύ εύκολα.
Υπήρχαν μερικά προβλήματα με την πρώτη παρτίδα. Πρώτον, η υποδοχή USB δεν ήταν αρκετά μεγάλη για να χωρέσει με ασφάλεια σε οποιαδήποτε θύρα USB. Δεύτερον, τα κομμάτια του φλας έγιναν λανθασμένα, αλλά το ξεπέρασα λυγίζοντας τις επαφές.
Αφού έλεγξα ότι όλα λειτουργούσαν, παρήγγειλα μια νέα παρτίδα σανίδων. Μπορείτε να δείτε μια φωτογραφία ενός από αυτά στην αρχή του άρθρου.
Λόγω του μικρού μεγέθους όλων αυτών των μικρών εξαρτημάτων, αποφάσισα να καταφύγω στη συγκόλληση με επαναροή χρησιμοποιώντας φτηνή σόμπα. Έχω πρόσβαση σε κόφτη λέιζερ, γι' αυτό το χρησιμοποίησα για να κόψω ένα στένσιλ συγκόλλησης από το φιλμ του πλαστικοποιητή. Το στένσιλ βγήκε αρκετά καλό. Οι οπές διαμέτρου 0,2 mm για τις επαφές του επεξεργαστή απαιτούσαν ιδιαίτερη προσοχή για τη διασφάλιση της υψηλής ποιότητας κατασκευής - ήταν κρίσιμο να εστιάσετε σωστά το λέιζερ και να επιλέξετε την ισχύ του.
Άλλες σανίδες λειτουργούν καλά για να συγκρατούν τη σανίδα κατά την εφαρμογή της πάστας.
Άπλωσα πάστα συγκόλλησης και τοποθέτησα τα εξαρτήματα με το χέρι. Βεβαιώθηκα ότι ο μόλυβδος δεν χρησιμοποιήθηκε πουθενά στη διαδικασία - όλες οι πλακέτες, τα εξαρτήματα και η πάστα πληρούν το πρότυπο RoHS - για να μη με βασανίζει η συνείδησή μου όταν τα μοιράζω στους ανθρώπους.
Έκανα ένα μικρό λάθος με αυτήν την παρτίδα, αλλά η πάστα συγκόλλησης συγχωρεί τα λάθη και όλα πήγαν καλά
Κάθε στοιχείο χρειάστηκε περίπου 10 δευτερόλεπτα για να τοποθετηθεί, έτσι προσπάθησα να κρατήσω τον αριθμό των εξαρτημάτων στο ελάχιστο. Περισσότερες λεπτομέρειες σχετικά με το σχεδιασμό του χάρτη μπορείτε να διαβάσετε σε άλλο αναλυτικό άρθρο μου.
Κατάλογος υλικών και κόστος
Έμεινα σε έναν αυστηρό προϋπολογισμό. Και η επαγγελματική κάρτα αποδείχθηκε όπως έπρεπε - δεν με πειράζει να τη δώσω! Φυσικά, δεν θα το δώσω σε όλους, καθώς χρειάζεται χρόνος για να δημιουργηθεί κάθε αντίγραφο και ο χρόνος μου δεν λαμβάνεται υπόψη στο κόστος της επαγγελματικής κάρτας (είναι κάπως δωρεάν).
Στοιχείο
Τιμή
F1C100s
$1.42
PCB
$0.80
Flash 8MB
$0.17
Όλα τα άλλα εξαρτήματα
$0.49
Σε συνολικά
$2.88
Φυσικά, υπάρχουν και δαπάνες που είναι δύσκολο να υπολογιστούν, όπως η παράδοση (καθώς κατανέμεται μεταξύ εξαρτημάτων που προορίζονται για πολλά έργα). Ωστόσο, για μια πλακέτα που υποστηρίζει Linux, είναι σίγουρα αρκετά φθηνή. Αυτή η ανάλυση δίνει επίσης μια καλή ιδέα για το πόσο κοστίζει στις εταιρείες να κατασκευάζουν συσκευές στο χαμηλότερο τμήμα τιμών: μπορείτε να είστε σίγουροι ότι κοστίζει στις εταιρείες ακόμη λιγότερο από ό,τι κοστίζει εμένα!
Δυνατότητες
Τι να πω? Η κάρτα εκκινεί ένα πολύ απογυμνωμένο Linux σε 6 δευτερόλεπτα. Λόγω του παράγοντα μορφής και του κόστους, η κάρτα δεν διαθέτει I/O, υποστήριξη δικτύου ή σημαντικό χώρο αποθήκευσης για την εκτέλεση μεγάλων προγραμμάτων. Παρόλα αυτά, κατάφερα να στριμώξω ένα σωρό ενδιαφέροντα πράγματα στην εικόνα του υλικολογισμικού.
USB
Υπήρχαν πολλά ωραία πράγματα που θα μπορούσαν να γίνουν με USB, αλλά επέλεξα την απλούστερη επιλογή, έτσι ώστε οι άνθρωποι να είναι πιο πιθανό να λειτουργήσουν εάν αποφάσιζαν να δοκιμάσουν την επαγγελματική μου κάρτα. Το Linux επιτρέπει στην κάρτα να συμπεριφέρεται σαν "συσκευή" με υποστήριξη Πλαίσιο gadget. Πήρα μερικά από τα προγράμματα οδήγησης από προηγούμενα έργα που περιλάμβαναν αυτόν τον επεξεργαστή, επομένως έχω πρόσβαση σε όλες τις λειτουργίες του πλαισίου gadget USB. Αποφάσισα να προσομοιώσω μια προ-δημιουργημένη μονάδα flash και να δώσω πρόσβαση στο κέλυφος μέσω μιας εικονικής σειριακής θύρας.
Shell
Αφού συνδεθείτε ως root, μπορείτε να εκτελέσετε τα ακόλουθα προγράμματα στη σειριακή κονσόλα:
Rogue: ένα κλασικό Unix dungeon crawling παιχνίδι περιπέτειας.
2048: ένα απλό παιχνίδι του 2048 σε λειτουργία κονσόλας.
τύχη: παραγωγή διαφόρων προσχητικών ρήσεων. Αποφάσισα να μην συμπεριλάβω ολόκληρη τη βάση δεδομένων παραπομπών εδώ για να αφήσω χώρο για άλλα χαρακτηριστικά.
Κατά τη μεταγλώττιση, τα εργαλεία δημιουργίας δημιουργούν μια μικρή εικόνα FAT32 και την προσθέτουν ως ένα από τα διαμερίσματα του UBI. Το υποσύστημα Linux Gadget παρουσιάζει τον υπολογιστή του ως συσκευή αποθήκευσης.
Εάν ενδιαφέρεστε να δείτε τι εμφανίζεται στη μονάδα flash, ο ευκολότερος τρόπος για να το κάνετε αυτό είναι διαβάζοντας πηγές. Υπάρχουν επίσης αρκετές φωτογραφίες και το βιογραφικό μου.
Πόροι
Πηγές
Το δέντρο μου Buildroot είναι δημοσιευμένο στο GitHub - τριάντα τριάντα/businesscard-linux. Υπάρχει κωδικός για τη δημιουργία εικόνας NOR flash, ο οποίος εγκαθίσταται χρησιμοποιώντας τη λειτουργία λήψης USB του επεξεργαστή. Έχει επίσης όλους τους ορισμούς πακέτων για παιχνίδια και άλλα προγράμματα που έβαλα στο Buildroot αφού τα κατάφερα όλα. Εάν ενδιαφέρεστε να χρησιμοποιήσετε το F1C100 στο έργο σας, αυτό θα ήταν ένα εξαιρετικό σημείο εκκίνησης (μη διστάσετε Ρώτα με ερωτήσεις).
χρησιμοποίησα όμορφα εκτελεσμένο έργο Linux v4.9 για F1C100s από την Icenowy, ελαφρώς επανασχεδιασμένο. Η κάρτα μου τρέχει σχεδόν τυπική έκδοση 5.2. Είναι στο GitHub - τριάντα τριάντα/linux.
Νομίζω ότι έχω την καλύτερη θύρα U-Boot για τα F1C100 στον κόσμο σήμερα, και επίσης βασίζεται εν μέρει στη δουλειά του Icenowy (παραδόξως, η σωστή λειτουργία του U-Boot ήταν αρκετά απογοητευτική εργασία). Μπορείτε επίσης να το αποκτήσετε στο GitHub - τριάντα τριάντα/u-boot.
Τεκμηρίωση για F1C100
Βρήκα αρκετά αραιή τεκμηρίωση για το F1C100 και το δημοσιεύω εδώ:
Εγχειρίδιο αναφοράς Allwinner F1C600 – καταχωρήστε ορισμούς για το F1C600, το οποίο είναι στην πραγματικότητα το ίδιο F1C100, αλλά μετονομάστηκε με δηλωμένη υποστήριξη Linux (ha!).
Έχω δανειστεί ενεργά πληροφορίες από το διάγραμμα από Το Lichee Nano της Sipeed – την πλακέτα ανάπτυξης που χρησιμοποίησα για τη διαμόρφωση του λογισμικού.
Έμαθα πολλά κατά την ανάπτυξη αυτού του έργου - ήταν το πρώτο μου έργο που χρησιμοποιούσα έναν φούρνο συγκόλλησης με επαναροή. Έμαθα επίσης πώς να βρίσκω πόρους για στοιχεία με κακή τεκμηρίωση.
Χρησιμοποίησα την υπάρχουσα εμπειρία μου με το ενσωματωμένο Linux και την εμπειρία ανάπτυξης πλακέτας. Το έργο δεν είναι χωρίς ελαττώματα, αλλά δείχνει καλά όλες τις ικανότητές μου.
Για όσους ενδιαφέρονται για τις λεπτομέρειες της εργασίας με ενσωματωμένο Linux, προτείνω να διαβάσουν τη σειρά άρθρων μου σχετικά με αυτό: Mastering Embedded Linux. Εκεί μιλάω αναλυτικά για το πώς να δημιουργήσω λογισμικό και υλικό από την αρχή για μικροσκοπικά και φθηνά συστήματα Linux, παρόμοια με την τηλεκάρτα μου.