สารบัญ:

กระพริบเฟิร์มแวร์ที่กำหนดเองไปยังไฟฉาย BLF A6: 5 ขั้นตอน
กระพริบเฟิร์มแวร์ที่กำหนดเองไปยังไฟฉาย BLF A6: 5 ขั้นตอน

วีดีโอ: กระพริบเฟิร์มแวร์ที่กำหนดเองไปยังไฟฉาย BLF A6: 5 ขั้นตอน

วีดีโอ: กระพริบเฟิร์มแวร์ที่กำหนดเองไปยังไฟฉาย BLF A6: 5 ขั้นตอน
วีดีโอ: Thermal Config - Anduril firmware (การตั้งค่าอุณหภูมิ) 2024, กรกฎาคม
Anonim
กระพริบเฟิร์มแวร์ที่กำหนดเองไปยังไฟฉาย BLF A6
กระพริบเฟิร์มแวร์ที่กำหนดเองไปยังไฟฉาย BLF A6

ฉันเพิ่งได้ BLF A6 ดีมาก แต่ฉันไม่ชอบกลุ่มโหมดเริ่มต้นกลุ่มใดกลุ่มหนึ่ง ดังนั้นฉันจึงแก้ไขเฟิร์มแวร์เพื่อใช้ความสว่างที่ฉันต้องการ ข้อมูลหายาก ดังนั้นฉันจึงนำทุกสิ่งที่ฉันเรียนรู้มาไว้ที่นี่เพื่อตนเองและผู้อื่น

เสบียง

BLF A6 (อาจใช้งานได้กับไฟฉาย ATtiny อื่น ๆ)

แหนบ / คีมบาง / กรรไกรเล็ก / บางอย่างเพื่อคลายแหวนยึดบอร์ดควบคุม

คอมพิวเตอร์ที่ใช้แฟลช ควรรัน Linux distribution

โปรแกรมเมอร์ USB ASP / Arduino / สิ่งที่สามารถเขียนโปรแกรม AVR ได้ (เห็นได้ชัดว่าแนะนำโปรแกรมเมอร์ USB ASP แต่ฉันใช้ Arduino)

คลิป SOIC8 (ถ้าไม่มีก็ทำได้ แต่มั่วมาก ไม่แนะนำเลย)

(อุปกรณ์เสริม) เขียงหั่นขนมและ/หรือสายจัมเปอร์เพื่อให้เชื่อมต่อได้ง่ายขึ้น

ขั้นตอนที่ 1: ดาวน์โหลดเฟิร์มแวร์

เฟิร์มแวร์สำหรับ BLF A6 (และไฟฉายอื่น ๆ อีกมากมาย) มีให้ที่นี่ ผู้เขียนพูดถึงที่นี่ คุณสามารถดาวน์โหลดได้โดยเรียกใช้:

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

ในเทอร์มินัล (คุณอาจต้องติดตั้ง bzr)

หมายเหตุ: ในการแก้ไขก่อนหน้าของคำแนะนำนี้ ฉันใช้ "bzr branch lp:flashlight-firmware" แทน ฉันได้เรียนรู้ตั้งแต่นั้นมาว่าการดาวน์โหลดนี้เป็นเวอร์ชันที่ล้าสมัยโดยมีค่าตัวเก็บประจุที่ผิดเวลา ซึ่งทำให้การกดปุ่มนั้นใช้เวลานานจนรู้สึกไม่สบายใจ (ขอบคุณกระทู้นี้ใน Reddit)

โฟลเดอร์ที่คุณต้องการคือ blf-a6-final/ToyKeeper/blf-a6 ประกอบด้วยไฟล์.hex ที่คอมไพล์แล้วพร้อมที่จะแฟลช (blf-a6.hex) และโค้ด C ที่คุณสามารถแก้ไขได้ (blf-a6.c) หากคุณต้องการแฟลชเฟิร์มแวร์หุ้น คุณสามารถข้ามขั้นตอนถัดไปและใช้ blf-a6.hex เฟิร์มแวร์อื่นบางตัวในที่เก็บนั้นก็อาจจะใช้งานได้เช่นกัน

ขั้นตอนที่ 2: แก้ไขเฟิร์มแวร์

เปิด blf-a6.c ในโปรแกรมแก้ไขข้อความหรือ IDE ที่คุณต้องการ บรรทัดที่น่าสนใจที่สุดคือกลุ่มโหมดระหว่างบรรทัดที่ 116 ถึง 131 ซึ่งมีลักษณะดังนี้:

// Mode group 1#define 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 sample: 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 // กลุ่มโหมด 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 เร็ว เร็ว เร็ว เฟส

สำหรับแต่ละกลุ่ม MODESN คือค่า PWM ที่ใช้สำหรับ FET และ MODES1 คือค่า PWM ที่ใช้สำหรับ 7135 ในแต่ละโหมด ตัวเลขอยู่ระหว่าง 0 ถึง 255 และสอดคล้องกับความสว่างของแสง ข้อมูลเพิ่มเติมที่นี่ (เลื่อนลงไปที่ "การควบคุมโหมด:") ฉันไม่แน่ใจว่าความเร็ว PWM คืออะไรกันแน่ ถ้าใครรู้บอกฉันในความคิดเห็น FET สามารถผลิตแสงได้มากกว่ารุ่น 7135 แต่ 7135 ยังคงระดับแสงเท่าเดิมตลอดอายุการใช้งานของแบตเตอรี่ ในขณะที่ FET จะมืดลงเมื่อแบตเตอรี่หมด

ที่นี่คุณสามารถปรับค่า PWM เพื่อสร้างโหมดตามที่คุณต้องการ คุณสามารถเปลี่ยนจำนวนโหมดได้เช่นกัน แต่ฉันยังไม่ได้ลองเพราะฉันต้องการสี่โหมดซึ่งเป็นตัวเลขในกลุ่มที่สอง ฉันต้องการโหมดแสงจันทร์ที่มืดกว่า ดังนั้นฉันจึงตั้งค่าโหมดแรกเป็น 0/1 และพบว่าโหมดเทอร์โบค่อนข้างไร้ประโยชน์ ดังนั้นฉันจึงแทนที่ด้วยโหมด 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=alloc, load --change-section-lma.eeprom=0 --no-change-warnings -O ihex blf-a6.elf blf-a6.hex โปรแกรม: 1022 ไบต์ (เต็ม 99.8%) ข้อมูล: 13 ไบต์ (เต็ม 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 เป็นโปรแกรมเมอร์ และมันใช้งานไม่ได้เว้นแต่ฉันจะระบุพอร์ตและอัตราบอด หากคุณกำลังใช้ 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 ด้วยชื่อไฟล์ของคุณหากต่างจากนี้

-Ulfuse:w:0x75:m และ -Uhfuse:w:0xFF:m คือฟิวส์ ค่าของคุณอาจแตกต่างกัน ดังนั้นให้ตรวจสอบค่าอีกครั้งในไฟแฟลช-เฟิร์มแวร์/bin/flash-tiny13-fuses.sh

หากเกิดข้อผิดพลาดนอกช่วง แสดงว่าภาพใหญ่เกินกว่าจะพอดีกับชิป และคุณต้องลบโค้ดบางส่วนออก หากกะพริบสำเร็จ ระบบควรแสดงแถบความคืบหน้า จากนั้นพูดว่า "เสร็จแล้ว ขอบคุณ"

หากมีข้อความว่า "ลายเซ็นอุปกรณ์ไม่ถูกต้อง" และจัมเปอร์บนโปรแกรมเมอร์ของคุณตั้งค่าเป็น 3.3v ให้ลองตั้งค่าเป็น 5v

หลังจากที่คุณแฟลชแล้ว ให้ประกอบไฟฉายอีกครั้งและดูว่าใช้งานได้หรือไม่ เหมืองแร่ได้ แต่ระยะเวลาที่จะปิดบาง̶r̶e̶a̶s̶o̶n̶.̶ยาวกดจะต้องมีการประมาณสามวินาทีแทน̶1̶.̶5̶.̶ฉันไม่รู้ถ้า̶i̶t̶'̶s̶บางสิ่งบางอย่างจะทำอย่างไรกับ Arduino หรือเพราะฉันได้นำมาใช้ การตั้งค่าที่ไม่ถูกต้อง̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶หากคุณมีความคิด̶แจ้งให้เราทราบใน̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

แก้ไข: ฉันแก้ไขแล้ว (ดูขั้นตอนที่ 1)

แนะนำ: