Η επαγγελματική μου κάρτα χρησιμοποιεί Linux

Μετάφραση άρθρου από blog post μηχανικός Τζορτζ Χίλιαρντ

Η επαγγελματική μου κάρτα χρησιμοποιεί Linux
Με δυνατότητα κλικ

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

Ένας τέτοιος τομέας είναι οι φτηνοί υπολογιστές που μπορούν να τρέξουν Linux, και όσο φθηνότερο τόσο το καλύτερο. Έτσι έσκαψα μια βαθιά τρύπα από ασαφείς επεξεργαστές.

Σκέφτηκα, «Αυτοί οι επεξεργαστές είναι τόσο φθηνοί που μπορούν πρακτικά να δοθούν δωρεάν». Και μετά από λίγο καιρό, μου ήρθε η ιδέα να φτιάξω μια γυμνή κάρτα για Linux σε μορφή επαγγελματικής κάρτας.

Μόλις το σκέφτηκα, αποφάσισα ότι θα ήταν πολύ ωραίο να κάνω. Έχω ήδη είδα ηλεκτρονικός επαγγελματικές κάρτες να το, και είχαν διάφορες ενδιαφέρουσες δυνατότητες, όπως εξομοίωση καρτών flash, λαμπτήρες που αναβοσβήνουν ή ακόμα και ασύρματη μετάδοση δεδομένων. Ωστόσο, δεν έχω δει επαγγελματικές κάρτες με υποστήριξη Linux.

Έφτιαξα λοιπόν τον εαυτό μου.

Αυτή είναι η τελική έκδοση του προϊόντος. Ένας πλήρης ελάχιστος υπολογιστής ARM που τρέχει την προσαρμοσμένη έκδοση του Linux που έχει δημιουργηθεί με το Buildroot.

Η επαγγελματική μου κάρτα χρησιμοποιεί Linux

Διαθέτει θύρα 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, αλλά εξακολουθεί να δείχνει καλό.

Έκανα την πρώτη παρτίδα μαύρο ματ. Έδειχναν όμορφα, αλλά λερώνονταν πολύ εύκολα.

Η επαγγελματική μου κάρτα χρησιμοποιεί Linux

Υπήρχαν μερικά προβλήματα με την πρώτη παρτίδα. Πρώτον, η υποδοχή USB δεν ήταν αρκετά μεγάλη για να χωρέσει με ασφάλεια σε οποιαδήποτε θύρα USB. Δεύτερον, τα κομμάτια του φλας έγιναν λανθασμένα, αλλά το ξεπέρασα λυγίζοντας τις επαφές.

Η επαγγελματική μου κάρτα χρησιμοποιεί Linux

Αφού έλεγξα ότι όλα λειτουργούσαν, παρήγγειλα μια νέα παρτίδα σανίδων. Μπορείτε να δείτε μια φωτογραφία ενός από αυτά στην αρχή του άρθρου.

Λόγω του μικρού μεγέθους όλων αυτών των μικρών εξαρτημάτων, αποφάσισα να καταφύγω στη συγκόλληση με επαναροή χρησιμοποιώντας φτηνή σόμπα. Έχω πρόσβαση σε κόφτη λέιζερ, γι' αυτό το χρησιμοποίησα για να κόψω ένα στένσιλ συγκόλλησης από το φιλμ του πλαστικοποιητή. Το στένσιλ βγήκε αρκετά καλό. Οι οπές διαμέτρου 0,2 mm για τις επαφές του επεξεργαστή απαιτούσαν ιδιαίτερη προσοχή για τη διασφάλιση της υψηλής ποιότητας κατασκευής - ήταν κρίσιμο να εστιάσετε σωστά το λέιζερ και να επιλέξετε την ισχύ του.

Η επαγγελματική μου κάρτα χρησιμοποιεί Linux
Άλλες σανίδες λειτουργούν καλά για να συγκρατούν τη σανίδα κατά την εφαρμογή της πάστας.

Άπλωσα πάστα συγκόλλησης και τοποθέτησα τα εξαρτήματα με το χέρι. Βεβαιώθηκα ότι ο μόλυβδος δεν χρησιμοποιήθηκε πουθενά στη διαδικασία - όλες οι πλακέτες, τα εξαρτήματα και η πάστα πληρούν το πρότυπο RoHS - για να μη με βασανίζει η συνείδησή μου όταν τα μοιράζω στους ανθρώπους.

Η επαγγελματική μου κάρτα χρησιμοποιεί Linux
Έκανα ένα μικρό λάθος με αυτήν την παρτίδα, αλλά η πάστα συγκόλλησης συγχωρεί τα λάθη και όλα πήγαν καλά

Κάθε στοιχείο χρειάστηκε περίπου 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 σε λειτουργία κονσόλας.
  • τύχη: παραγωγή διαφόρων προσχητικών ρήσεων. Αποφάσισα να μην συμπεριλάβω ολόκληρη τη βάση δεδομένων παραπομπών εδώ για να αφήσω χώρο για άλλα χαρακτηριστικά.
  • μικροπύθωνας: Ένας πολύ μικρός διερμηνέας Python.

Προσομοίωση μονάδας flash

Κατά τη μεταγλώττιση, τα εργαλεία δημιουργίας δημιουργούν μια μικρή εικόνα 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 F1C100s – γενικές πληροφορίες και pinout.
  • Εγχειρίδιο αναφοράς Allwinner F1C600 – καταχωρήστε ορισμούς για το F1C600, το οποίο είναι στην πραγματικότητα το ίδιο F1C100, αλλά μετονομάστηκε με δηλωμένη υποστήριξη Linux (ha!).
  • Έχω δανειστεί ενεργά πληροφορίες από το διάγραμμα από Το Lichee Nano της Sipeed – την πλακέτα ανάπτυξης που χρησιμοποίησα για τη διαμόρφωση του λογισμικού.

Το ανεβάζω για όσους ενδιαφέρονται. το διάγραμμα του έργου μου.

Η επαγγελματική μου κάρτα χρησιμοποιεί Linux

Συμπέρασμα

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

Χρησιμοποίησα την υπάρχουσα εμπειρία μου με το ενσωματωμένο Linux και την εμπειρία ανάπτυξης πλακέτας. Το έργο δεν είναι χωρίς ελαττώματα, αλλά δείχνει καλά όλες τις ικανότητές μου.

Για όσους ενδιαφέρονται για τις λεπτομέρειες της εργασίας με ενσωματωμένο Linux, προτείνω να διαβάσουν τη σειρά άρθρων μου σχετικά με αυτό: Mastering Embedded Linux. Εκεί μιλάω αναλυτικά για το πώς να δημιουργήσω λογισμικό και υλικό από την αρχή για μικροσκοπικά και φθηνά συστήματα Linux, παρόμοια με την τηλεκάρτα μου.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο