ทำไมเราต้องมีโปรแกรมเมอร์ฮาร์ดแวร์?


22

ฉันใช้Boarduinoและบอร์ดขนมปัง 30 แถวเพื่อเขียนโปรแกรม ATtiny ของฉัน ฉันโหลดร่างที่ไม่ซับซ้อนที่เรียกว่าArduinoISP (รวมอยู่ในค่าเริ่มต้นแล้วใน Arduino IDE) และทันใดนั้นฉันก็มีโปรแกรมเมอร์ทำงานอยู่ Atmel ขายโปรแกรมเมอร์ที่ดีสำหรับระหว่าง $ 30 และ $ 40 และมีจำนวนมากของชุดสำหรับการทำคนที่ถูกกว่า

ฉันมีความสุขมากเมื่อฉันได้โปรแกรมเมอร์ทำงานและทำให้ไฟกระพริบเล็ก ๆ อย่างไรก็ตามตอนนี้ boarduino ที่น่าสงสารของฉันติดอยู่กับหน้าที่โปรแกรมเมอร์

เท่าที่ฉันสามารถบอกโปรแกรมเมอร์นี้กดปุ่มรีเซ็ตค้างไว้จากนั้นส่งและรับบนหมุด MOSI และ MISO ฉันคิดว่า SCK ไม่ได้ใช้งานหรืออย่างน้อยก็ไม่จำเป็น (SCK จำเป็นต้องใช้ตามแผ่นข้อมูล ATtiny โปรแกรมเมอร์ของฉันไม่สามารถทำงานได้หากไม่มีและฉันไม่สามารถหาสถานที่ที่ฉันคิดว่าฉันอ่านไม่จำเป็น)

เหตุใดฉันจึงต้องการโปรแกรมเมอร์ฮาร์ดแวร์เพื่อส่งสัญญาณอนุกรม ฉันหมายความว่าเราสมมติว่าฉันยินดีที่จะกดปุ่มรีเซ็ตด้วยนิ้วของฉันแทนการใช้ IC สิ่งที่เหลือคือการส่งและรับแบบอนุกรมดังนั้นสิ่งที่ฉันต้องการคือสายไฟสามเส้น GND, RXD และ TXD Heck ถ้าฉันมีสาย "DTR" หรืออะไรก็ตามคุณสามารถกดปุ่มรีเซ็ตด้วยสายเคเบิลอนุกรมได้

ทำไมจึงมีทั้งหมดเหล่านี้โซลูชั่นฮาร์ดแวร์ที่ยังต้องใช้ซอฟต์แวร์แฟนซี (เช่น AVRdude หรือสตูดิโอ AVR หรืออะไรก็ตาม)?

ฉันหมายถึงฉันสามารถเข้าใจสายเคเบิล USB เล็ก ๆ ที่นำเสนอไมโครคอนโทรลเลอร์เป็นอุปกรณ์เก็บข้อมูลขนาดใหญ่และให้คุณลากไฟล์ไบนารี่มาเขียนโปรแกรม (เช่นบอร์ด dev dev นี้ ) ฮาร์ดแวร์เท่านั้นที่ใช้ไดรเวอร์ซอฟต์แวร์มาตรฐาน

ฉันยังสามารถเข้าใจโซลูชันซอฟต์แวร์อย่างเดียว (โมดูโลเชื่อมต่อสายไฟจาก USB ไปยังชิปโดยใช้บางอย่างเช่นชิป FTDI เพื่อลดความซับซ้อนของสิ่งที่เกิดขึ้นกับสายไฟ) โพรโทคอลการเขียนโปรแกรมแฟนซีทั้งหมดจะได้รับการจัดการโดยซอฟต์แวร์บนคอมพิวเตอร์และฮาร์ดแวร์จะเป็นเพียงสายไฟ

ทำไมเราจึงต้องมีทั้งซอฟต์แวร์และฮาร์ดแวร์ที่ซับซ้อน ฉันหมายถึงเท่าที่ฉันสามารถบอกได้การเขียนโปรแกรมไมโครคอนโทรลเลอร์นั้นค่อนข้างง่าย แต่เมื่อฉันเพิ่งเข้ามาฉันก็กังวลเกี่ยวกับวิธีที่ฉันจะซื้อชิปจาก mouser หรือ digikey โดยไม่ต้องจ่าย guru เพื่อเขียนโปรแกรม bootloader สำหรับฉัน.

ฉันแน่ใจว่ามีเหตุผลที่ดี (ไม่ใช่ว่าฉันเขียนซอฟต์แวร์หรือเริ่มผลิตโปรแกรมเมอร์ USB drag-n-drop) แต่เป็นผู้ใช้ใหม่ฉันไม่รู้เลยว่ามันคืออะไร


โปรแกรมเมอร์ผู้สร้างบ้านของคุณอนุญาตการดีบักหรือไม่ คุณอาจเป็นโปรแกรมที่ดีเพียงอย่างเดียว แต่จะต้องมีโปรแกรมเมอร์ฮาร์ดแวร์หากคุณต้องการทำการดีบักบนชิป (การตั้งค่าเบรกพอยต์ในรหัสและการหยุดการทำงานเมื่อถึงจุดนั้น) เนื่องจากการดำเนินการนั้นอาจทำสิ่งต่าง ๆ ด้วยบรรทัดรีเซ็ต
Joel B

1
สิ่งที่คุณอาจขบขันโดยhackaday.com/2013/05/10/…
binarysmacker

คำตอบ:


18

คุณพูดถูกการเขียนโปรแกรม AVR นั้นค่อนข้างง่าย มันเป็นเพียงโพรโทคอลที่กำหนดเองที่ใช้งานด้านบนของ SPI ทำงานที่แรงดันต่ำ จำเป็นต้องมี SCK

อย่างไรก็ตามการเขียนโปรแกรม PIC ที่เก่ากว่า (และไม่ใช่การเขียนโปรแกรม ISP AVR) ต้องใช้แรงดันไฟฟ้าสูงและโปรโตคอลที่กำหนดเองที่แตกต่างกัน สิ่งนี้จำเป็นต้องมีโปรแกรมเมอร์ฮาร์ดแวร์พิเศษ

อุปกรณ์อื่น ๆ มีความซับซ้อนมากขึ้น ไมโครคอนโทรลเลอร์ ARM ส่วนใหญ่จะต้องตั้งโปรแกรมผ่าน JTAG ที่นี่หน่วยความจำจะถูกเขียนโดยตรงและหน่วยประมวลผลได้รับคำสั่งให้เขียนลงแฟลช อีกครั้งทุกอุปกรณ์จะแตกต่างกัน


ความคิดใดที่ว่าทำไมมันถึงซับซ้อนกว่านี้มาก? วิธี AVR (แรงดันไฟฟ้าต่ำ, โปรโตคอลมาตรฐาน) ดูเหมือนจะสมเหตุสมผลมากกว่าการใช้โปรแกรมเมอร์ที่กำหนดเอง (เช่นผู้ชายที่มีความต้องการโปรแกรมเมอร์ 8051/8052 - ต้องการความช่วยเหลือ, ตัวแทนพร้อมใช้งาน! electronics.stackexchange.com/questions/4104 )
Kevin Vermeer

2
จริงๆแล้วมันไม่มีอะไรพิเศษหรือแพงเลยสำหรับโปรแกรมเมอร์ PIC มีการออกแบบหลายแบบออนไลน์และ PIC ส่วนใหญ่สามารถตั้งโปรแกรมแรงดันไฟฟ้าต่ำได้
akohlsmith

4
ผู้ผลิต IC ไม่สนใจจริงๆว่าบางสิ่งที่ซับซ้อนสำหรับมือสมัครเล่นจะใช้อย่างไร ตราบใดที่มันสามารถนำมาใช้ในการผลิตปริมาณมากก็เป็นเรื่องค่าใช้จ่าย
endolith

2
การเขียนโปรแกรมแรงดันสูงอยู่ที่นั่นเป็นครั้งแรกมันเป็นวิธีการเขียนโปรแกรม EPROMs ที่สามารถลบได้ของ UV ในยุคแปด (และไมโครคอนโทรลเลอร์ที่มี EPROM ดังกล่าว)
starblue

แก้ไขการเรียกร้อง SCK ฉันชอบความคิดที่ว่าจำเป็นต้องใช้ SPI เท่านั้น แต่เนื่องจากคอมพิวเตอร์ไม่มีพอร์ต SPI (และสายเคเบิล FTDI นั้นมีชิป$ 4อยู่แล้ว !!) เราอาจแยกกันบนไมโครคอนโทรลเลอร์ $ 2 อาร์กิวเมนต์การอัปโหลดและดีบัก JTAG ขายให้ฉันเกี่ยวกับประโยชน์ของคณะกรรมการพัฒนาโดยทั่วไปและฉันคิดว่า endolith มีจุดดีที่ไม่มีใครใส่ใจสิ่งที่ฉันใช้จ่าย $ 20 ไป ผู้ผลิตต่างใส่ใจในสิ่งที่วิศวกรจริง (และนายจ้างของพวกเขา) จะใช้งบประมาณของตน
Jack Schmidt

5

ฉันทำการวิจัยจำนวนมากและกำลังเตรียมที่จะเริ่มเล่นกับ AVRs แต่ฉันไม่เคยใช้งานจริงดังนั้นสิ่งนี้อาจผิด แต่:

โปรแกรมเมอร์ราคาถูกส่วนใหญ่จะไม่รองรับการเขียนโปรแกรมแรงดันสูง AVR มันเป็นสิ่งจำเป็นหากตัวควบคุมถูกตั้งค่าให้ไม่ใช่โปรแกรมที่ใช้ฟิวส์บิตหรือถ้าคุณทำข้อบกพร่องที่ร้ายแรงบางอย่างและต้องรีเซ็ตมันเป็นค่าเริ่มต้นและอื่น ๆ


2
โปรแกรมเมอร์ที่มีแรงดันไฟฟ้าต่ำเช่น AVRISP mkII [1] หรือ USBtinyISP [2] สามารถใช้ในการตั้งฟิวส์ด้วย avrdude หรือโปรแกรมเมอร์อื่น ๆ แต่พวกเขาไม่สามารถบันทึกชิป AVR ที่ถูกทำให้ไม่สามารถบูตได้หรือทำให้สายรีเซ็ตกลายเป็น GPIO คุณต้องการโปรแกรมเมอร์แรงดันสูงสำหรับสิ่งนั้น [1] mouser.com/search/… [2] ladyada.net/make/usbtinyisp
blalor

@blalor เนื่องจากข้อมูลนี้ฉันจะแก้ไขคำตอบของฉัน
AndrejaKo

ฉันเห็นคำแนะนำในการทำโปรแกรมเมอร์แรงดันสูง (และแผ่นข้อมูลสำหรับชิปดูเหมือนจะมีคำแนะนำอย่างละเอียดเกี่ยวกับการออกแบบหนึ่ง) แต่ฉันรอจนกว่าฉันจะสร้างหนึ่งในชิปของฉันจนกว่าฉันจะลองมัน พรุ่งนี้ฉันจะมาที่นี่ดังนั้นฉันจะเผาฟิวส์และดึงดูดนางฟ้าอิฐเร็ว ๆ นี้!
Jack Schmidt

เป็นที่น่าสังเกตว่า avrdude ตรวจสอบบิตฟิวส์ของคุณอีกครั้งเพื่อป้องกันปัญหานี้ ปัญหาที่พบบ่อยขึ้นเล็กน้อยคือการตั้งค่าชิปเป็นนาฬิกาภายนอก
Yann Vernier

4

โปรแกรมเมอร์ AVR ราคาถูกส่วนใหญ่เป็นเพียงการเชื่อมต่อแบบอนุกรมกับสายรีเซ็ต คุณสามารถ FT232 ถึง bitbang จาก Serial Peripheral Interface (SPI) FT232 ได้รับการออกแบบมาสำหรับการซิงค์แบบอะซิงโครนัสไม่ซิงค์ดังนั้นมันทำในซอฟต์แวร์

คุณสามารถอัปโหลด bootloader เช่น arduino ซึ่งจะอนุญาตให้คุณอัปโหลดรหัสผ่านอินเตอร์เฟสอนุกรม async โดยใช้ ft232 ในโหมดปกติหรืออินเตอร์เฟสอนุกรมใด ๆ ของ async โดยใช้ตัวแปลงระดับตามต้องการ อย่าลืมใช้ bootloader ที่ถูกต้องสำหรับความเร็วสัญญาณนาฬิกาของคุณและตั้งค่าฟิวส์ฟิวส์ให้ถูกต้อง


1

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

วันนี้อาจจะเขียนโปรแกรมได้มากกว่า 50% ของอุปกรณ์ที่ตั้งโปรแกรมได้โดยไม่ต้องใช้อะไรมากไปกว่าสาย USB I / O และซอฟต์แวร์ PC แต่โปรแกรมเมอร์ "ฮาร์ดแวร์" ยังคงมีข้อได้เปรียบด้านความเร็ว เพื่อให้พีซีตอบสนองต่อสัญญาณที่ได้รับจากอุปกรณ์ USB และการตอบสนองโดยทั่วไปจะใช้เวลาอย่างน้อย 1-2 มิลลิวินาที หากลำดับการโปรแกรมจำเป็นต้องถามอุปกรณ์ซ้ำ ๆ เมื่อพร้อมสำหรับการรับส่งข้อมูลครั้งถัดไปจากนั้นส่งมันโดยใช้สายเคเบิล I / O แบบง่าย ๆ จะเพิ่มมิลลิวินาทีพิเศษหรือสองวินาทีตามเวลาที่ต้องใช้ในการจัดการแต่ละก้อน ขึ้นอยู่กับลักษณะของอุปกรณ์ที่สงสัยว่าสามารถเพิ่มเวลาโดยรวมในการเขียนโปรแกรมตามลำดับความสำคัญเมื่อเทียบกับโปรแกรมเมอร์ที่สามารถบอกได้ในขณะที่รอให้อุปกรณ์พร้อมสิ่งที่ควรทำเมื่อทำได้

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

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