Talaan ng mga Nilalaman:

Flashing Custom Firmware sa isang BLF A6 Flashlight: 5 Hakbang
Flashing Custom Firmware sa isang BLF A6 Flashlight: 5 Hakbang

Video: Flashing Custom Firmware sa isang BLF A6 Flashlight: 5 Hakbang

Video: Flashing Custom Firmware sa isang BLF A6 Flashlight: 5 Hakbang
Video: Windows Security: For Admins and Technical Support 2024, Nobyembre
Anonim
Flashing Custom Firmware sa isang BLF A6 Flashlight
Flashing Custom Firmware sa isang BLF A6 Flashlight

Kamakailan ay nakakuha ako ng BLF A6. Napakaganda, ngunit hindi ko gusto ang alinman sa mga default mode na grupo, kaya binago ko ang firmware upang magamit ang aking ginustong mga ningning. Ang impormasyon ay mahirap hanapin, kaya inilalagay ko rito ang lahat ng natutunan ko para sa aking sarili at sa iba.

Mga gamit

BLF A6 (malamang na gagana ito sa iba pang mga flashlight na nakabatay sa ATtiny)

Mga Tweezer / manipis na pliers / maliit na gunting / isang bagay upang ma-undo ang singsing ng pagpapanatili ng driver board

Computer sa flash sa, mas mabuti na nagpapatakbo ng isang pamamahagi ng Linux

USB ASP programmer / Arduino / isang bagay na maaaring gawin ang AVR program (tila inirerekumenda ang USB ASP programmer, ngunit gumamit ako ng Arduino)

SOIC8 clip (posible na gawin nang walang, ngunit ito ay napaka fiddly at hindi sa lahat inirerekumenda)

(opsyonal) Breadboard at / o mga jumper wires upang gawing mas madali ang pagkonekta

Hakbang 1: I-download ang Firmware

Ang firmware para sa BLF A6 (at maraming iba pang mga flashlight) ay magagamit dito. Pinag-uusapan ito ng may-akda dito. Maaari mong i-download ito sa pamamagitan ng pagpapatakbo:

bzr branch lp: ~ toykeeper / flashlight-firmware / blf-a6-final

sa isang terminal. (maaaring kailanganin mong mag-install ng bzr)

Tandaan: sa isang nakaraang pag-edit ng Instructable na ito ginamit ko ang "bzr branch lp: flashlight-firmware" sa halip. Nalaman ko na na nagda-download ito ng isang hindi napapanahong bersyon na may maling mga halaga para sa off-time na kapasitor, na ginagawang hindi komportable ang pagpindot sa pindutan. (salamat sa thread na ito sa Reddit)

Ang folder na gusto mo ay blf-a6-final / ToyKeeper / blf-a6. Naglalaman ito ng isang pinagsamang.hex file na handa nang mag-flash (blf-a6.hex) at ang C code na maaari mong baguhin. (blf-a6.c) Kung nais mong i-flash ang stock firmware maaari mong laktawan ang susunod na hakbang at gamitin lamang ang blf-a6.hex. Ang ilan sa iba pang mga firmware sa lalagyan na iyon ay maaaring gumana din.

Hakbang 2: Baguhin ang Firmware

Buksan ang blf-a6.c sa iyong ginustong text editor o IDE. Ang pinaka-kagiliw-giliw na mga linya ay ang mga pangkat ng mode sa pagitan ng mga linya 116 at 131. Ganito ang hitsura nila:

// Mode group 1 # tukuyin ang mga antas ng NUM_MODES1 7 // PWM para sa malaking circuit (FET o Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // Mga antas ng PWM para sa maliit na circuit (1x7135) # tukuyin ang MODES1x1 2, 20, 110, 255, 255, 255, 0 // Aking sample: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Krono sample: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // Bilis ng PWM para sa bawat mode #define MODES_PWM1 PHASE, FAST, FAST, FAST, FAST, FAST, PHASE // Mode group 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 FAST, FAST, FAST, PHASE

Para sa bawat pangkat, ang MODESN ay ang halagang PWM na ginamit para sa FET, at ang MODES1 ay ang halaga ng PWM na ginamit para sa 7135 sa bawat mode. Ang numero ay nasa pagitan ng 0 at 255, at tumutugma sa ningning ng ilaw. Dagdag pang impormasyon dito. (mag-scroll pababa sa "regulasyon ng Mode:") Hindi ako sigurado kung ano ang eksaktong bilis ng PWM. Kung may nakakaalam man, sabihin sa akin sa mga komento. Ang FET ay maaaring makagawa ng higit na ilaw kaysa sa 7135, ngunit ang 7135 ay pinapanatili ang antas ng ilaw higit pa o mas mababa sa pareho sa buhay ng baterya, habang ang FET ay nagiging mas madidilim habang nauubusan ito ng baterya.

Dito maaari mong ayusin ang mga halagang PWM upang makabuo ng mga mode ayon sa gusto mo. Marahil ay maaari mo ring baguhin ang bilang ng mga mode, ngunit hindi ko ito nasubukan ayon sa gusto ko ng apat na mode, na kung saan ay ang bilang sa pangalawang pangkat. Nais ko ng isang mas madidilim na mode ng buwan, kaya itinakda ko ang una sa 0/1, at nakita kong medyo walang kabuluhan ang turbo mode, kaya pinalitan ko ito ng 137/255, ang katumbas ng mode na anim sa pitong mode na grupo. Marahil ay maaari mong baguhin ang natitirang code kung kinakailangan, ngunit hindi ko ito nasubukan.

Kapag nakuha mo ang code na gusto mo, kailangan mo itong ipunin sa isang.hex file. Sa pinakamaliit, kailangan mo ng gcc-avr at avr-libc. Kung mayroon kang mga problema, tingnan ang iba pang mga dependency sa readme ng firmware. Ang repository ay nagsasama ng isang build script, ngunit hindi ko ito masabi upang gumana. Sa halip, na-download ko ang lumang bersyon sa

bzr branch lp: flashlight-firmware

at kinopya ang lumang build script (na maaari akong gumana) sa bago. Pagkatapos ay tumakbo ako:

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

sa folder na blf-a6. (dapat mayroong isang mas mahusay na paraan upang magawa iyon) Ang../../bin/ build.sh ay tinatawag ang script, tinukoy ng 13 na nagtatayo ito para sa isang ATtiny13 at tinukoy ng blf-a6 na para ito sa BLF A6. (duh) Dapat mong sabihin sa iyo kung anong mga utos ang tumatakbo at bigyan ka ng output. Ang akin ay ganito:

avr-gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89-inline -DATTINY = 13 -ako.. -ako../.. -ako../../.. -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 = alloc, load --change-section-lma.eeprom = 0 --no-change-warnings -O ihex blf-a6.elf blf-a6.hex Program: 1022 bytes (99.8% Full) Data: 13 bytes (20.3% Buo)

Ang mga utos ay na-optimize na para sa laki, kaya kung sasabihin nito na higit sa 100% ang buo, subukang mag-comment

# tukuyin ang FULL_BIKING_STROBE

sa linya 147 upang magamit ang mas maliit na minimal na biking strober. Kung hindi pa ito magkasya, malamang na aalisin mo ang higit pang code sa kung saan. Kapag natapos itong mag-ipon, dapat mayroong isang file na tinatawag na blf-a6.hex sa folder. Ito ang iyong naipong code, handa nang mag-flash.

Hakbang 3: I-disassemble ang Flashlight

I-disassemble ang Flashlight
I-disassemble ang Flashlight
I-disassemble ang Flashlight
I-disassemble ang Flashlight
I-disassemble ang Flashlight
I-disassemble ang Flashlight

Alisin ang takip ng bombilya laban sa pakaliwa. Mayroong dalawang mga joints ng tornilyo dito. Ang isa na malapit sa dulo ng bombilya ng flashlight ay magbubukas ng salamin at LED, at ang isa na malapit sa gitna ay bubukas ang driver board. Gusto mo yung mas malapit sa gitna.

Sa loob, dapat mong makita ang spring ng baterya at isang retain ring na may dalawang butas dito. Ipasok ang iyong mga sipit / manipis na pliers / gunting sa mga butas at paikutin ang mga ito laban sa pakaliwa. Ito ay medyo matigas, at ang paggamit ng dalawang magkakahiwalay na mga bagay ay maaaring hindi bibigyan ka ng sapat na leverage. Ginamit ko ang gunting sa isang Swiss Army Knife.

Kapag nakuha mo na ang singsing, palayain ang driver board. Nakalakip pa rin ito sa dalawang wires, kaya mag-ingat. Pinilipit silang magkasama, kaya paikutin ang pisara sa isang paraan o sa iba pa hanggang sa maluwag ang mga wire. Kapag mayroon kang sapat na daanan, i-flip ang board. Nais mo ito upang ang maliit na tilad na may "TINY13A" dito ay mas mataas at mas naa-access. Kung ito ay nasa maling panig, i-flip ito sa ibang paraan. I-tuck ang spring sa ilalim ng gilid. Pansamantalang panatilihin ito nito sa lugar at gawing mas madaling makarating sa maliit na tilad. Kung nagkakaproblema ka dito maaari mong marahil na i-unscrew ang iba pang sumali at masira ang dalawang wires mula sa kabilang panig upang maalis mo ang board ng buong buo, ngunit hindi ko ito nasubukan.

Hakbang 4: Ikonekta ang Flashing Hardware

Ikonekta ang Flashing Hardware
Ikonekta ang Flashing Hardware
Ikonekta ang Flashing Hardware
Ikonekta ang Flashing Hardware
Ikonekta ang Flashing Hardware
Ikonekta ang Flashing Hardware

Ngayon ay ginagamit mo ang SOIC8 clip upang ikonekta ang ATtiny13 chip at ang iyong programmer. Sa aking SOIC8 clip, kung mayroon akong pulang wire sa kaliwa ng parehong dulo, ang hilera ng mga pin na malapit sa akin sa clip end ay tumutugma sa hilera ng mga pin na mas malapit sa akin sa dulo ng konektor, kapag ang konektor ay nakaharap pababa. (tingnan ang aking sobrang artistikong diagram) Inirerekumenda ng gabay na ito na gumamit ka ng isang USB ASP V2.0 programmer. Kung gagawin mo ito, ikonekta ito tulad nito:

  • I-pin ang 1 sa ATtiny13 upang i-pin 5 sa USB ASP (i-reset)
  • I-pin ang 4 sa ATtiny13 upang i-pin 10 sa USB ASP (ground)
  • I-pin ang 5 sa ATtiny13 upang i-pin ang 1 sa USB ASP (MOSI)
  • I-pin ang 6 sa ATtiny13 upang i-pin ang 9 sa USB ASP (MISO)
  • I-pin ang 7 sa ATtiny13 upang i-pin 7 sa USB ASP (SCK)
  • I-pin ang 8 sa ATtiny13 upang i-pin 2 sa USB ASP (VCC)

Kung, tulad ng sa akin, gumagamit ka ng isang Arduino, kailangan mong gumawa ng kaunti pang paghahanda. Sundin ang mga hakbang sa zero at dalawa sa gabay na ito:

Buksan ang Arduino IDE at tiyaking nakakonekta ang iyong Arduino sa iyong computer. Hanapin ang sketch ng ISP sa File> Mga Halimbawa> 11. ArduinoISP> ArduinoISP at i-upload ito sa iyong Arduino. Pagkatapos ikonekta ang ATtiny13 dito tulad nito:

  • I-pin ang 1 sa ATtiny13 upang i-pin ang 10 sa Arduino (i-reset)
  • I-pin ang 4 sa ATtiny13 hanggang GND sa Arduino (ground)
  • I-pin ang 5 sa ATtiny13 upang i-pin ang 11 sa Arduino (MOSI)
  • I-pin ang 6 sa ATtiny13 upang i-pin ang 12 sa Arduino (MISO)
  • I-pin ang 7 sa ATtiny13 upang i-pin ang 13 sa Arduino (SCK)
  • I-pin ang 8 sa ATtiny13 hanggang VCC / 5V / 3.3V sa Arduino (ang anumang dapat gumana, ngunit ang 5V ay mas maaasahan) (VCC)

Na-install ko rin ang package ng hardware, ngunit marahil ay hindi kinakailangan. Kung may pag-aalinlangan, subukan ito. Hindi ito makakasama. Ngunit huwag sunugin ang bootloader dahil marahil ay ladrilyo nito ang iyong flashlight.

Hakbang 5: I-flash Ito

Upang mai-flash ang firmware, kailangan mong i-install ang AVRDUDE. Upang suriin ito gumagana sa aking Arduino, tumatakbo ako:

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

Kung gagana ito, lumilipat ako sa isang walang laman na folder sa isang lugar at tumakbo:

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

Upang makagawa ng isang backup ng mayroon nang firmware. At upang mai-flash ito, mula sa folder na may binagong blf-a6.hex na pinatakbo ko:

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

Sa ilang kadahilanan, kailangan kong tukuyin ang stk500v1 bilang programmer, at hindi ito gumana maliban kung tinukoy ko ang port at baud rate. Kung gumagamit ka ng isang Arduino at may pag-aalinlangan, subukang idiskonekta ang iyong ATtiny13 mula sa Arduino at mag-upload ng isang sketch sa Arduino IDE gamit ang mga setting dito. Mabibigo ito, ngunit dapat sabihin kung anong utos ang ginagamit nito sa window ng console. Maaari mong kopyahin ang mga katangian sa iyong AVRDUDE command.

Kung gumagamit ka ng isang USB ASP programmer, sa halip magpatakbo ng:

avrdude -v -p attiny13 -c usbasp -n

Upang makita kung ito ay gumagana at:

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

Upang makagawa ng isang backup at:

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

I-flash ito.

-Uflash: w: blf-a6.hex ay tumutukoy sa file na ito ay kumikislap. Palitan ang blf-a6.hex ng iyong pangalan ng file kung naiiba ito.

-Ulfuse: w: 0x75: m at -Uhfuse: w: 0xFF: m ang mga piyus. Maaaring magkakaiba ang iyo, kaya't i-double check ang mga halaga sa flashlight-firmware / bin / flash-tiny13-fuses.sh.

Kung nagbibigay ito ng isang error sa labas ng saklaw, nangangahulugan ito na ang imahe ay masyadong malaki upang magkasya sa maliit na tilad at kailangan mong alisin ang ilan sa mga code. Kung matagumpay itong nag-flash, dapat itong magpakita ng ilang mga progress bar, pagkatapos ay sabihin ang "avrdude tapos. Salamat."

Kung sinabing "hindi wastong lagda ng aparato" at ang jumper sa iyong programmer ay nakatakda sa 3.3v, subukang itakda ito sa 5v.

Pagkatapos mong mai-flash ito, muling tipunin ang iyong flashlight at tingnan kung gumagana ito. Mine ginawa, ngunit ang tiyempo ay off para sa ilang katinuan. sa mahabang pagpindot kailangan na maging tungkol sa tatlong segundo sa halip ng ̶1̶.̶5̶.̶ ko hindi alam kung Kung ito ay isang bagay na gawin sa Arduino o dahil ̶I̶'̶v̶e̶ ginagamit sa maling mga setting ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Kung mayroon kang anumang mga ideya, ̶ ipaalam sa akin kung sa ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

I-edit: Inayos ko ito. (tingnan ang hakbang 1)

Inirerekumendang: