Πίνακας περιεχομένων:

Αναβοσβήνει προσαρμοσμένο υλικολογισμικό σε φακό BLF A6: 5 βήματα
Αναβοσβήνει προσαρμοσμένο υλικολογισμικό σε φακό BLF A6: 5 βήματα

Βίντεο: Αναβοσβήνει προσαρμοσμένο υλικολογισμικό σε φακό BLF A6: 5 βήματα

Βίντεο: Αναβοσβήνει προσαρμοσμένο υλικολογισμικό σε φακό BLF A6: 5 βήματα
Βίντεο: Всё про прошивку Xiaomi 2024, Ιούλιος
Anonim
Αναβοσβήνει προσαρμοσμένο υλικολογισμικό σε φακό BLF A6
Αναβοσβήνει προσαρμοσμένο υλικολογισμικό σε φακό BLF A6

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

Προμήθειες

BLF A6 (πιθανότατα θα λειτουργήσει με άλλους φακούς που βασίζονται σε ATtiny)

Τσιμπιδάκια / λεπτές πένσες / μικρό ψαλίδι / κάτι για να αναιρέσετε το δακτύλιο συγκράτησης της σανίδας οδηγού

Υπολογιστής που αναβοσβήνει, κατά προτίμηση εκτελεί διανομή Linux

Προγραμματιστής USB ASP / Arduino / κάτι που μπορεί να κάνει προγραμματισμό AVR (προφανώς συνιστάται ο προγραμματιστής USB ASP, αλλά χρησιμοποίησα Arduino)

Κλιπ SOIC8 (είναι δυνατό να το κάνετε χωρίς, αλλά είναι πολύ ασταθές και δεν συνιστάται καθόλου)

(προαιρετικά) Καλώδια Breadboard και/ή jumper για ευκολότερη σύνδεση

Βήμα 1: Κατεβάστε το υλικολογισμικό

Το υλικολογισμικό για το BLF A6 (και πολλοί άλλοι φακοί) είναι διαθέσιμο εδώ. Ο συγγραφέας μιλά για αυτό εδώ. Μπορείτε να το κατεβάσετε εκτελώντας:

bzr υποκατάστημα lp: keeper παιχνίδι παιχνιδιού/φακός-υλικολογισμικό/blf-a6-final

σε ένα τερματικό. (ίσως χρειαστεί να εγκαταστήσετε το bzr)

Σημείωση: σε προηγούμενη επεξεργασία αυτού του Instructable χρησιμοποίησα αντ 'αυτού το "bzr branch lp: flashlight-firmware". Έκτοτε έμαθα ότι αυτό κατεβάζει μια ξεπερασμένη έκδοση με λανθασμένες τιμές για τον πυκνωτή εκτός λειτουργίας, κάνοντας το κουμπί να πιέζει άβολα για πολύ. (χάρη σε αυτό το νήμα στο Reddit)

Ο φάκελος που θέλετε είναι blf-a6-final/ToyKeeper/blf-a6. Περιέχει ένα μεταγλωττισμένο.hex αρχείο έτοιμο να αναβοσβήνει (blf-a6.hex) και τον κωδικό C που μπορείτε να τροποποιήσετε. (blf-a6.c) Εάν θέλετε να αναβοσβήνετε το υλικολογισμικό αποθέματος, μπορείτε να παραλείψετε το επόμενο βήμα και απλώς να χρησιμοποιήσετε το blf-a6.hex. Μερικά από τα άλλα firmware σε αυτό το αποθετήριο πιθανότατα θα λειτουργήσουν επίσης.

Βήμα 2: Τροποποιήστε το υλικολογισμικό

Ανοίξτε το blf-a6.c στον προτιμώμενο επεξεργαστή κειμένου ή στο IDE. Οι πιο ενδιαφέρουσες γραμμές είναι οι ομάδες τρόπων μεταξύ των γραμμών 116 και 131. Μοιάζουν με αυτό:

// Ομάδα λειτουργίας 1 #καθορισμός NUM_MODES1 7 // επίπεδα PWM για το μεγάλο κύκλωμα (FET ή Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // επίπεδα PWM για το μικρό κύκλωμα (1x7135) # καθορισμός MODES1x1 2, 20, 110, 255, 255, 255, 0 // Το δείγμα μου: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // δείγμα Krono: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // Ταχύτητα PWM για κάθε λειτουργία #define MODES_PWM1 PHASE, FAST, FAST, FAST, FAST, FAST, PHASE // Mode mode 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 FAST, FAST, FAST, PHASE

Για κάθε ομάδα, το MODESN είναι η τιμή PWM που χρησιμοποιείται για το FET και το MODES1 είναι η τιμή PWM που χρησιμοποιείται για το 7135 σε κάθε λειτουργία. Ο αριθμός είναι μεταξύ 0 και 255 και αντιστοιχεί στη φωτεινότητα του φωτός. Περισσότερες πληροφορίες εδώ. (μετακινηθείτε προς τα κάτω στην "Ρύθμιση λειτουργίας:") Δεν είμαι σίγουρος ποια είναι ακριβώς η ταχύτητα PWM. Αν γνωρίζει κάποιος ας μου πει στα σχόλια. Το FET μπορεί να παράγει περισσότερο φως από το 7135, αλλά το 7135 διατηρεί το επίπεδο φωτισμού λίγο πολύ το ίδιο κατά τη διάρκεια ζωής της μπαταρίας, ενώ το FET γίνεται πιο σκούρο καθώς εξαντλείται η μπαταρία του.

Εδώ μπορείτε να προσαρμόσετε τις τιμές PWM για να δημιουργήσετε λειτουργίες σύμφωνα με τις προτιμήσεις σας. Μπορείτε πιθανότατα να αλλάξετε και τον αριθμό των τρόπων λειτουργίας, αλλά δεν το έχω δοκιμάσει καθώς ήθελα τέσσερις λειτουργίες, που τυχαίνει να είναι ο αριθμός στη δεύτερη ομάδα. Wantedθελα μια πιο σκοτεινή λειτουργία σεληνόφωτος, οπότε έθεσα την πρώτη σε 0/1 και θεωρώ ότι η λειτουργία turbo είναι λίγο άσκοπη, οπότε την αντικατέστησα με 137/255, το ισοδύναμο της λειτουργίας έξι στην ομάδα των επτά τρόπων. Μπορείτε πιθανότατα να τροποποιήσετε τον υπόλοιπο κώδικα αν χρειαστεί, αλλά δεν το έχω δοκιμάσει.

Όταν έχετε τον κωδικό που θέλετε, πρέπει να τον μεταγλωττίσετε σε ένα αρχείο.hex. Τουλάχιστον, χρειάζεστε gcc-avr και avr-libc. Εάν αντιμετωπίζετε προβλήματα, κοιτάξτε τις άλλες εξαρτήσεις στο readme υλικολογισμικού. Το αποθετήριο περιλαμβάνει ένα σενάριο κατασκευής, αλλά δεν μπόρεσα να το κάνω να λειτουργήσει. Αντ 'αυτού, κατέβασα την παλιά έκδοση με

bzr branch lp: φακός-υλικολογισμικό

και αντέγραψε το παλιό σενάριο κατασκευής (ότι θα μπορούσα να δουλέψω) στο νέο. Τότε έτρεξα:

../../bin/build.sh 13 blf-a6

στο φάκελο blf-a6. (θα πρέπει να υπάρχει καλύτερος τρόπος για να το κάνετε αυτό) Το../../bin/build.sh καλεί το σενάριο, το 13 καθορίζει ότι κατασκευάζεται για ένα ATtiny13 και το blf-a6 καθορίζει ότι είναι για το BLF A6. (duh) Θα πρέπει να σας πει ποιες εντολές εκτελείται και να σας δώσει την έξοδο. Το δικό μου μοιάζει με αυτό:

avr -gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89 -inline -DATTINY = 13 -I.. -I../.. -I../../.. -fshort -enums -o blf -a6.o -c blf -a6.cavr -gcc -Wall -g -Os -mmcu = attiny13 -fgnu89 -inline -o blf -a6.elf blf -a6.o avr -objcopy --set -section-flags =.eeprom = διαθέσιμο, φορτίο-change-section-lma.eeprom = 0 --no-change-warning -O ihex blf-a6.elf blf-a6.hex Πρόγραμμα: 1022 byte (99,8% πλήρες) Δεδομένα: 13 byte (20,3% πλήρες)

Οι εντολές έχουν ήδη βελτιστοποιηθεί για το μέγεθος, οπότε αν λέει ότι είναι πάνω από 100% γεμάτες, δοκιμάστε να σχολιάσετε

#define FULL_BIKING_STROBE

στη γραμμή 147 για να χρησιμοποιήσετε το μικρότερο στροβοσκόπιο ελάχιστης ποδηλασίας. Εάν εξακολουθεί να μην ταιριάζει, πιθανότατα θα πρέπει να αφαιρέσετε περισσότερο κώδικα κάπου. Όταν ολοκληρωθεί η μεταγλώττιση, θα πρέπει να υπάρχει ένα αρχείο που ονομάζεται blf-a6.hex στο φάκελο. Αυτός είναι ο μεταγλωττισμένος κωδικός σας, έτοιμος να αναβοσβήνει.

Βήμα 3: Αποσυναρμολογήστε τον φακό

Αποσυναρμολογήστε τον φακό
Αποσυναρμολογήστε τον φακό
Αποσυναρμολογήστε τον φακό
Αποσυναρμολογήστε τον φακό
Αποσυναρμολογήστε τον φακό
Αποσυναρμολογήστε τον φακό

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

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

Μόλις βγάλετε το δαχτυλίδι, απελευθερώστε τον πίνακα οδηγών. Είναι ακόμα συνδεδεμένο με δύο καλώδια, οπότε προσέξτε. Είναι στριμμένα μεταξύ τους, οπότε περιστρέψτε τον πίνακα με τον έναν ή τον άλλο τρόπο μέχρι να χαλαρώσουν τα καλώδια. Όταν έχετε αρκετό περιθώριο περιστροφής, γυρίστε τον πίνακα. Το θέλετε έτσι ώστε το τσιπ με το "TINY13A" να είναι πιο ψηλά και πιο προσβάσιμο. Αν είναι σε λάθος πλευρά, γυρίστε το από την άλλη πλευρά. Βάλτε το ελατήριο κάτω από το πλάι. Αυτό θα το κρατήσει προσωρινά στη θέση του και θα διευκολύνει την πρόσβαση στο τσιπ. Εάν έχετε πρόβλημα με αυτό, μπορείτε πιθανώς να ξεβιδώσετε την άλλη ένωση και να ξεκολλήσετε τα δύο καλώδια από την άλλη πλευρά, ώστε να αφαιρέσετε εντελώς τον πίνακα, αλλά δεν το έχω δοκιμάσει.

Βήμα 4: Σύνδεση υλικού που αναβοσβήνει

Σύνδεση υλικού που αναβοσβήνει
Σύνδεση υλικού που αναβοσβήνει
Σύνδεση υλικού που αναβοσβήνει
Σύνδεση υλικού που αναβοσβήνει
Σύνδεση υλικού που αναβοσβήνει
Σύνδεση υλικού που αναβοσβήνει

Τώρα χρησιμοποιείτε το κλιπ SOIC8 για να συνδέσετε το τσιπ ATtiny13 και τον προγραμματιστή σας. Με το κλιπ SOIC8, εάν έχω το κόκκινο σύρμα στα αριστερά και των δύο άκρων, η σειρά των ακίδων που είναι πιο κοντά μου στο άκρο του κλιπ αντιστοιχεί στη σειρά των ακίδων που είναι πιο κοντά μου στο άκρο του συνδετήρα, όταν ο σύνδεσμος είναι στραμμένος προς τα κάτω. (δείτε το σούπερ καλλιτεχνικό μου διάγραμμα) Αυτός ο οδηγός συνιστά να χρησιμοποιήσετε έναν προγραμματιστή USB ASP V2.0. Αν το κάνετε, συνδέστε το ως εξής:

  • Καρφίτσα 1 στο ATtiny13 έως καρφίτσα 5 στο USB ASP (επαναφορά)
  • Καρφίτσα 4 στο ATtiny13 έως καρφίτσα 10 στο USB ASP (γείωση)
  • Καρφίτσα 5 στο ATtiny13 έως καρφίτσα 1 στο USB ASP (MOSI)
  • Καρφίτσα 6 στο ATtiny13 έως καρφίτσα 9 στο USB ASP (MISO)
  • Καρφίτσα 7 στο ATtiny13 έως καρφίτσα 7 στο USB ASP (SCK)
  • Καρφίτσα 8 στο ATtiny13 έως καρφίτσα 2 στο USB ASP (VCC)

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

Ανοίξτε το Arduino IDE και βεβαιωθείτε ότι το Arduino είναι συνδεδεμένο στον υπολογιστή σας. Βρείτε το σκίτσο του ISP στο Αρχείο> Παραδείγματα> 11. ArduinoISP> ArduinoISP και ανεβάστε το στο Arduino σας. Στη συνέχεια, συνδέστε το ATtiny13 σε αυτό ως εξής:

  • Καρφίτσα 1 στο ATtiny13 έως καρφίτσα 10 στο Arduino (επαναφορά)
  • Καρφίτσα 4 στο ATtiny13 στο GND στο Arduino (γείωση)
  • Καρφίτσα 5 στο ATtiny13 έως καρφίτσα 11 στο Arduino (MOSI)
  • Καρφίτσα 6 στο ATtiny13 έως καρφίτσα 12 στο Arduino (MISO)
  • Καρφίτσα 7 στο ATtiny13 έως καρφίτσα 13 στο Arduino (SCK)
  • Καρφίτσα 8 στο ATtiny13 έως VCC / 5V / 3.3V στο Arduino (οποιοδήποτε πρέπει να λειτουργεί, αλλά το 5V είναι πιο αξιόπιστο) (VCC)

Εγκατέστησα και το πακέτο υλικού, αλλά μάλλον δεν ήταν απαραίτητο. Αν έχετε αμφιβολίες, δοκιμάστε το. Δεν θα κάνει κανένα κακό. Αλλά μην κάψετε το bootloader γιατί πιθανότατα θα φτιάξει τον φακό σας.

Βήμα 5: Φλας

Για να αναβοσβήνει το υλικολογισμικό, πρέπει να εγκαταστήσετε το AVRDUDE. Για να ελέγξω ότι λειτουργεί με το Arduino μου, τρέχω:

avrdude -v -p attiny13 -c stk500v1 -P /dev /ttyUSB0 -b 19200 -n

Εάν λειτουργεί, μετακομίζω κάπου σε έναν κενό φάκελο και τρέχω:

avrdude -v -p attiny13 -c stk500v1 -P /dev /ttyUSB0 -b 19200 -u -Uflash: r: flash -dump.hex: i -Ueeprom: r: eeprom -dump.hex: i -Ulfuse: r: lfuse -dump.hex: i -Uhfuse: r: hfuse -dump.hex: i

Για να δημιουργήσετε αντίγραφα ασφαλείας του υπάρχοντος υλικολογισμικού. Και για να το αναβοσβήνω, από το φάκελο με το τροποποιημένο blf-a6.hex τρέχω:

avrdude -v -p attiny13 -c stk500v1 -P /dev /ttyUSB0 -b 19200 -u -Uflash: w: blf -a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m

Για κάποιο λόγο, πρέπει να καθορίσω το stk500v1 ως προγραμματιστή, και δεν λειτούργησε αν δεν καθορίσω τη θύρα και το ρυθμό baud. Εάν χρησιμοποιείτε Arduino και έχετε αμφιβολίες, δοκιμάστε να αποσυνδέσετε το ATtiny13 από το Arduino και να ανεβάσετε ένα σκίτσο στο Arduino IDE χρησιμοποιώντας τις ρυθμίσεις εδώ. Θα αποτύχει, αλλά θα πρέπει να λέει ποια εντολή χρησιμοποιεί στο παράθυρο της κονσόλας. Μπορείτε να αντιγράψετε τα χαρακτηριστικά στην εντολή AVRDUDE.

Εάν χρησιμοποιείτε προγραμματιστή USB ASP, εκτελέστε:

avrdude -v -p attiny13 -c usbasp -n

Για να δείτε αν λειτουργεί και:

avrdude -v -p attiny13 -c usbasp -u -Uflash: r: flash -dump.hex: i -Ueeprom: r: eeprom -dump.hex: i -Ulfuse: r: lfuse -dump.hex: i -Uhfuse: r: hfuse-dump.hex: i

Για να δημιουργήσετε αντίγραφα ασφαλείας και:

avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf -a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m

Για να το αναβοσβήνει.

-Uflash: w: blf-a6.hex αναφέρεται στο αρχείο που αναβοσβήνει. Αντικαταστήστε το blf-a6.hex με το όνομα του αρχείου σας εάν είναι διαφορετικό.

-Λάθος: w: 0x75: m και -Uhfuse: w: 0xFF: m είναι οι ασφάλειες. Τα δικά σας μπορεί να είναι διαφορετικά, οπότε ελέγξτε ξανά τις τιμές στο φακό-υλικολογισμικό/bin/flash-tiny13-fuses.sh.

Εάν δίνει σφάλμα εκτός εμβέλειας, σημαίνει ότι η εικόνα είναι πολύ μεγάλη για να χωρέσει στο τσιπ και πρέπει να αφαιρέσετε μέρος του κώδικα. Εάν αναβοσβήνει με επιτυχία, θα πρέπει να εμφανίζει κάποιες γραμμές προόδου και, στη συνέχεια, πείτε "avrdude done. Thank you."

Εάν γράφει "μη έγκυρη υπογραφή συσκευής" και ο βραχυκυκλωτήρας στον προγραμματιστή σας έχει οριστεί σε 3.3v, δοκιμάστε να τον ρυθμίσετε σε 5v.

Αφού το λάμψετε, συναρμολογήστε ξανά τον φακό σας και δείτε αν λειτουργεί. Mine έκανε, αλλά η χρονική στιγμή είναι μακριά για κάποιο ̶r̶e̶a̶s̶o̶n̶.̶ Η μεγάλη πιέζει πρέπει να είναι περίπου τρία δευτερόλεπτα, αντί να ̶1̶.̶5̶.̶ Δεν ξέρω εάν Είναι που κάτι να κάνει με το Arduino ή επειδή έχω χρησιμοποιήσει εσφαλμένες ρυθμίσεις ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Αν έχετε οποιαδήποτε ιδέα, ̶ επιτρέψτε μου να ξέρω στην ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Edit: Το διόρθωσα. (δείτε βήμα 1)

Συνιστάται: