ฉันได้รับคำสั่งให้ "เบิร์น bootloader" ไปยัง Arduino เพื่อแก้ไขข้อผิดพลาดที่ฉันได้รับ ฉันจะทำสิ่งนี้ได้อย่างไร (และ bootloader คืออะไร?)
ฉันได้รับคำสั่งให้ "เบิร์น bootloader" ไปยัง Arduino เพื่อแก้ไขข้อผิดพลาดที่ฉันได้รับ ฉันจะทำสิ่งนี้ได้อย่างไร (และ bootloader คืออะไร?)
คำตอบ:
bootloader เป็นโปรแกรมขนาดเล็กที่เกือบตลอดเวลาบน Arduino มันจัดการการอัปโหลดและเริ่มร่างที่คุณทำและกระพริบไฟ LED พิน 13 เมื่อใดก็ตามที่บอร์ดรีเซ็ต
ในการเบิร์น bootloader:
Tools ► Board ►
ใน IDE ตรวจสอบอีกครั้งแม้ว่าคุณจะสามารถอัปโหลดโปรแกรมได้อย่างถูกต้อง การอัพโหลดไม่จำเป็นต้องมีบอร์ดที่เหมาะสมเสมอไปTools ► Programmer ►
เลือกโปรแกรมที่เหมาะสมTools ► Burn Bootloader
และรอ ไม่ควรใช้เวลามากกว่าหนึ่งนาทีและมักใช้เวลาเพียงไม่กี่วินาทีแหล่งที่มา:
{line 1} or other dedicated ISP programmer.
และ bootloader คืออะไร?
bootloader เป็นโค้ดขนาดเล็กที่อยู่ในส่วน "สูง" ของหน่วยความจำโปรแกรม โดยปกติแล้วจะไม่ถูกลบเมื่อคุณอัปโหลดภาพร่างใหม่ โดยมีวัตถุประสงค์เพื่อเปิดใช้งานทันทีหลังจากรีเซ็ต (ฟิวส์ถูกกำหนดค่าให้เริ่มรหัสที่ที่อยู่ bootloader แทนที่จะเป็นที่อยู่ 0x0000) bootloader จะรอเวลาสั้น ๆ (เช่นหนึ่งวินาที) เพื่อดูว่า "การเขียนโปรแกรม" ข้อมูลมาถึงในพอร์ตอนุกรม
ถ้าเป็นเช่นนั้นมันจะอ่านข้อมูลนั้นและถอดรหัสเป็นส่วนที่เหลือของหน่วยความจำแฟลช ทำงานร่วมกับโปรแกรมอัปโหลด (โดยปกติแล้ว avrdude) ร่างใหม่จะถูกส่งผ่านพอร์ตอนุกรม bootloader จะลบหน้าของหน่วยความจำแฟลชและแทนที่ด้วยรหัสใหม่ เมื่อเสร็จแล้วมันจะรันรหัสใหม่
หากไม่มีคำแนะนำมาถึง bootloader จะกระโดดไปตามที่อยู่ 0x0000 เพื่อดำเนินการร่างที่มีอยู่บนกระดาน
วิธีอื่นในการโปรแกรม bootloader คือการใช้ร่างที่ฉันเขียนในขณะที่ผ่านมาซึ่งทำงานบน:
บอร์ด "การเขียนโปรแกรม" จะรันร่างซึ่งมี bootloaders สำหรับบอร์ดจำนวนหนึ่ง คุณเชื่อมต่อบอร์ดการเขียนโปรแกรมกับบอร์ดเป้าหมาย (บอร์ดที่ต้องการให้ bootloader) มีสายเชื่อมต่อ 6 เส้นตามที่แสดง
ภาพถ่ายนั้นแสดงให้เห็นถึงการเขียนโปรแกรม Uno หนึ่งภาพ
คุณเรียกใช้ร่าง (ปฏิบัติการผ่านการตรวจสอบแบบอนุกรมเพื่อให้คำสั่ง) ก่อนอื่นให้ระบุชิพเป้าหมาย:
Atmega chip programmer.
Written by Nick Gammon.
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xCF
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...
Type 'G' to program the chip with the bootloader ...
คุณกดGเพื่อตั้งโปรแกรม
Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xCF
Done.
Type 'C' when ready to continue with another chip ...
สำหรับ Uno จะใช้เวลาหนึ่งวินาที ในการโปรแกรม Mega2560 ใช้เวลา 3 วินาที
คำแนะนำโดยละเอียดที่โปรแกรมเมอร์ Atmega bootloader
รหัสสามารถดาวน์โหลดได้จากGithub: nickgammon / arduino_sketches