Arduino เป็น ISP โดยไม่ต้องใช้คอมพิวเตอร์


12

มีใครเห็นหรือรู้วิธีการโหลดไว้ล่วงหน้า (ใช้คอมพิวเตอร์หรืออะไรก็ตาม) เป็นเฟิร์มแวร์เป็นข้อมูลไปยัง arduino หนึ่งที่ตั้งค่าให้ทำงานเป็น isp แล้วใช้ arduino นั้นต่ออินเตอร์เฟส isp เข้ากับอีกอันและอัพโหลดเฟิร์มแวร์

มีความชัดเจน - ฉันกำลังมองหาวิธีที่จะทำให้การอัปโหลดภาพร่างของ Arduino เป็นไปได้โดยไม่ต้องเชื่อมต่อโดยตรงกับคอมพิวเตอร์เป่าเต็ม

โดยอุดมคติแล้วขั้นตอนที่เกี่ยวข้องจะเป็น:

  1. เขียนร่าง / เฟิร์มแวร์ใหม่
  2. รวบรวมเฟิร์มแวร์
  3. เขียนสำเนาเฟิร์มแวร์ลงบน Arduino A เป็นข้อมูล (Arduino A ถูกตั้งค่าให้ทำงานเป็น ISP)
  4. ถอด Arduino A ออกจากคอมพิวเตอร์
  5. ในตำแหน่งแยกแนบ Arduino A กับ Arduino B โดยใช้ส่วนหัว ISP
  6. การใช้วิธีการบางอย่าง (อาจเป็นปุ่มกด) ทำให้ Arduino A อัปโหลดเฟิร์มแวร์ที่โหลดไว้ล่วงหน้าไปยัง Arduino B

ฉันสมมติว่าในทางทฤษฎีมันสามารถใช้งานได้เนื่องจากการอัปโหลดเฟิร์มแวร์เป็นเพียงการแลกเปลี่ยนไบต์ข้ามส่วนต่อประสาน SPI แต่ฉันไม่แน่ใจเกี่ยวกับความเป็นจริง

สถานการณ์ที่ฉันกำลังพิจารณาคือถ้าฉันต้องติดตั้ง arduino (อย่างถาวร) ในสถานที่ที่ห่างไกลจากคอมพิวเตอร์ของฉัน (ฉันไม่มีแล็ปท็อปหรือฉันไม่ต้องการได้รับ) มันจะลำบากในการ reprogram มัน.

วิธีอื่นที่ฉันพิจารณาคือใช้ ATMEGA แพ็กเกจ DIL ซึ่งฉันสามารถลบออกจากบอร์ดและโปรแกรมที่คอมพิวเตอร์และกลับไปที่บอร์ด - อย่างไรก็ตามฉันชอบที่จะไม่เสี่ยงต่อการดัดของพินและความยุ่งยากในการลบ ชิปทุกครั้งที่ฉันต้องการ reprogram


ผลที่ได้คือคุณจะสามารถเขียนโปรแกรม Arduinos อื่น ๆ ด้วยร่าง / เฟิร์มแวร์ที่ถูกโหลดเข้าโปรแกรมเมอร์ (Arduino A) เท่านั้น ดังนั้นมันจะมีประโยชน์ที่จะทำสำเนาเหมือนในสายการผลิตใช่ไหม? หากคุณต้องการเปลี่ยนแปลงอะไรบนร่างคุณจะต้องกลับไปที่คอมพิวเตอร์เพื่อแก้ไขและโหลดอีกครั้ง ฉันได้รับสิทธินี้หรือไม่?
Ricardo

1
เป็นไปได้ไหมที่จะให้คัดลอก "ภาพแฟลช" ไปยังเป้าหมายด้วยการสนับสนุนอื่น (เช่นการ์ด SD)
jfpoilpret

ใช่. ฉันคิดว่ามันจะดีสำหรับสายการผลิต สถานการณ์ของฉันคือฉันมีอาร์ดิโนติดอยู่ในกล่องที่ยากต่อการเคลื่อนย้ายและอยู่ในห้องอื่นสำหรับคอมพิวเตอร์ของฉัน ดังนั้นฉันยินดีที่จะโหลดภาพร่างลงบน Arduino A ทุกครั้งที่ฉันต้องการเปลี่ยน
m3z

2
มันถูกทำขึ้นเพื่อจุดประสงค์ที่ จำกัด ในการเขียนโปรแกรม bootloader - github.com/WestfW/OptiLoader - แต่ควรทำงานสำหรับ payload ใด ๆ ที่เล็กกว่าแฟลชที่มีอยู่ลบด้วยขนาดของเครื่องมือ สำหรับเฟิร์มแวร์เพย์โหลดขนาดใหญ่อุปกรณ์เก็บข้อมูลภายนอก (หรือเพียงแค่ Arduino Mega?) ควรใช้งานได้
Chris Stratton

@ ChrisStratton ที่ดูสมบูรณ์แบบสำหรับฉันที่จะปรับตัว ขอบคุณ
m3z

คำตอบ:


5

ฉันคิดว่าµProg - โปรแกรมเมอร์ AVR แบบพกพาขนาดเล็กที่รวดเร็วพร้อม SDทำในสิ่งที่คุณต้องการ คุณสามารถจัดเก็บหลายไฟล์ในการ์ด SD (ฐานสิบหก, eep ฯลฯ ) และเลือกจากเมนูอุปกรณ์ที่หนึ่งที่จะเขียนไปยัง MCU เป้าหมายโดยไม่ต้องใช้พีซี
ส่วนที่ดีที่สุดคือให้บริการฟรี (PCB, schematic, เฟิร์มแวร์และอื่น ๆ )

โปรแกรมเมอร์ AVR แบบพกพาหนึ่งในประเภท! ช่วยได้ทุกที่ที่คุณต้องการอัปเดตเฟิร์มแวร์ของอุปกรณ์โดยที่อุปกรณ์เป้าหมายอยู่ในตำแหน่งที่เข้าถึงได้ยากและคุณไม่สามารถ (หรือไม่ต้องการ) นำแล็ปท็อปของคุณมาพร้อมกับสายไฟมากมาย ง่ายต่อการใช้งานเป็นพิเศษขนาดเล็กสุดเร็วสุดเร็วใช้การ์ด SD ...

คุณสมบัติ:

  • เล็กมาก - ขนาด 44 x 39 x 5,5 มม
  • เร็วสุด - เขียนสูงสุด 12,5kB / s อ่านได้สูงสุด 14,5kB / s
  • ใช้สื่อบันทึกข้อมูลราคาถูก - การ์ด MICRO SD ขนาดเล็ก
  • รองรับระบบไฟล์ FAT16 และ FAT32
  • สามารถอ่านเขียนตรวจสอบแฟลชและหน่วยความจำแบบ eeprom
  • สามารถอ่านเขียนตรวจสอบฟิวส์และล็อคบิต
  • เขียนและอ่านไฟล์ BIN, HEX และ TXT
  • สามารถตั้งค่าเริ่มต้นของฟิวส์ลบความทรงจำ
  • จอแสดงผลกราฟิกราคาถูกและง่ายต่อการรับ LPH7779
  • แสดงภาพเคลื่อนไหวที่ตลกหลังจากใช้งานทุกครั้ง
  • ส่วนหัวโปรแกรมมิงมาตรฐาน - Atmel 6-PIN ISP
  • มีฟังก์ชั่นการอัพเดทอัตโนมัติเฟิร์มแวร์ของตัวเอง (จาก SD)
  • ใช้งานง่ายมากนำทาง 4 ปุ่ม
  • เมนูการตั้งค่าผู้ใช้
  • ความเร็วในการตั้งโปรแกรมอัตโนมัติเลือก (สูงสุด 4MHz)
  • ทำงานที่ 3V ชิปโปรแกรมที่จัดทำจาก 3V ถึง 5V

รายการชิปที่รองรับ

ป้อนคำอธิบายรูปภาพที่นี่


ดูดี. จะตรวจสอบในช่วงสุดสัปดาห์
m3z

เมื่อวันก่อนฉันไม่รู้ว่าฉันคิดถึงคำถามนี้อย่างไร ฉันแค่พูดกับเพื่อนเกี่ยวกับการสร้างโปรเจ็กต์นี้ด้วยตัวเองเท่านั้น แล้วฉันเห็นคำตอบของคุณ
Madivad

4

ฉันไม่มีทางออกโดยตรงสำหรับสิ่งที่คุณต้องการ แต่ใช่มันเป็นไปได้ที่จะทำ คุณสามารถแฮกเฟิร์มแวร์ bootloader เพื่อให้มันอ่านรหัสแฟลชเฟิร์มแวร์และอัปโหลดผ่าน ISP

แม้ว่าคุณจะไม่สามารถอัปโหลดเฟิร์มแวร์ 32k บน AVR เป้าหมายได้ถ้าอาร์ดิโนทั้งคู่มีเพียง 32k ของแฟลชทั้งหมดใน MCU ของพวกเขาคุณจะต้องมีแฟลชที่มีแฟลชมากกว่าเป้าหมายถ้าคุณต้องการ (1284p หรือ 2560 เมกะจะไกลพอหรือ 328 / 32u4 จะเป็นแฟลชที่ 168 หรือ attiny) ข้อยกเว้นเพียงอย่างเดียวคือให้แฟลชมีขนาดเล็กกว่าหน่วยความจำทั้งหมด (เช่นภาพร่างกะพริบ)

ในท้ายที่สุดมันไม่ง่ายเลยมันคือรหัส AVR บริสุทธิ์ 100% แต่คุณสามารถทำได้ มองไปที่:

วิธีที่ฉันใช้นั่นคือทำให้ทุกอย่างเหมาะสมใน bootloader ของอุปกรณ์ flasher ดังนั้นจึงอ่านเฟิร์มแวร์ (ทุกอย่างตั้งแต่ 0x00 ถึงที่อยู่เริ่มต้น bootloader) และกะพริบผ่าน ISP โดยการรวม AVRISP กับ Optiboot

อย่างไรก็ตามนั่นเป็นโครงการที่น่าสนใจสำหรับเวิร์คช็อปเกี่ยวกับ bootloaders และ AVR ที่ฉันอาจแนะนำที่แฮกเกอร์สเปซในพื้นที่ของฉัน! ;-)

HTH


ขอบคุณซอร์สโค้ด AVRISP ดูไม่ซับซ้อนเท่าที่ฉันคาดไว้ ฉันจะมองลึกลงไปในเรื่องนี้ในช่วงสุดสัปดาห์
m3z

แฮกเกอร์สเปซในพื้นที่ของคุณอยู่ที่ไหน :)
Madivad

อยู่ในฝรั่งเศสLe Loop
zmo

ไม่มีปัญหานั่นคือสิ่งที่การลงคะแนนสำหรับ ;-)
zmo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.