คุณสามารถเขียนโปรแกรมไมโครคอนโทรลเลอร์โดยไม่ใช้คอมพิวเตอร์ได้หรือไม่?


16

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

ฉันเข้าใจว่าคุณต้องการ I / O และหน่วยความจำที่เหมาะสมเพื่อทำสิ่งใด แต่ถ้าคุณมีความโน้มเอียงและมีเวลาคุณสามารถทำสิ่งนี้ได้หรือไม่? ฉันคิดว่าในอดีตสิ่งนี้เกิดขึ้นได้อย่างไรเมื่อไม่มีคอมพิวเตอร์ / คอมไพเลอร์ / แอสเซมเบลอร์ที่เริ่มต้นด้วย รู้สึกอิสระที่จะเชื่อมโยงฉันกับทรัพยากรภายนอก ขอบคุณ! :)


3
ดูที่ Altair 1 สวิตช์ที่แผงด้านหน้าและการตั้งโปรแกรมด้วยตนเองเป็นวิธีเดียวในการใช้งาน
pjc50

@ pj50 เขาถามเกี่ยวกับไมโครคอนโทรลเลอร์ไม่ใช่ไมโครโปรเซสเซอร์ ไมโครคอนโทรลเลอร์เรียกใช้โค้ดแฟลชของเราซึ่งไม่สามารถเข้าถึงได้หากไม่มีส่วนต่อประสาน
tcrosley

คุณต้องการหน่วยที่ตั้งโปรแกรมไว้กี่หน่วย ผู้ผลิตหลายรายจะจัดหาไมโครโค้ดของพวกเขาไว้ล่วงหน้าพร้อมรหัสของคุณ อย่างไรก็ตามนี่ไม่ใช่ทางปฏิบัติหากคุณต้องการน้อยกว่ารอกแบบเต็ม
Oleg Mazurov

2
ย้อนกลับไปในยุค 70 คุณจะต้องสร้างแผงสวิตช์และไฟสลับเพื่อให้คุณสามารถเข้าสู่โปรแกรมได้ ฉันไม่เคยทำงานกับหนึ่งในไมโครคอนโทรลเลอร์รุ่นแรก แต่ทำงานกับไมโครโปรเซสเซอร์ที่แตกต่างกันหลายตัวและนั่นเป็นวิธีที่คุณทำได้โดยปริยาย และไม่มีความแตกต่างพื้นฐานระหว่างไมโครคอนโทรลเลอร์รุ่นแรกและไมโครโปรเซสเซอร์นอกเหนือจากความสามารถของ I / O และรายละเอียดบางส่วนของวิธีการตั้งค่าหน่วยความจำของโปรแกรม
Hot Licks

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

คำตอบ:


37

คุณสามารถเขียนรหัสของคุณในแอสเซมบลีแปลง (ด้วยตนเอง) เป็นรหัสเครื่อง

ใช่
รหัสสามารถเขียนได้ "ออกจากหัวของคุณ" ในไบนารีถ้าคุณต้องการ
ยาว (ยาว) นานมาแล้วนี่คือวิธีที่ฉันเริ่มใช้ (แล้ว) ไมโครโปรเซสเซอร์
ฉันและเพื่อน ๆ จะเขียนโค้ดเป็นภาษาแอสเซมบลีรวบรวมด้วยตนเองในรหัสเครื่อง (สิ่งที่คุณสามารถทำได้ "โดยการตรวจสอบ" หลังจากฝึกฝน) แล้วใส่มันลงในโปรเซสเซอร์โดยใช้วิธีการต่าง ๆ ในระบบเดียวที่เราสร้างขึ้นเราจะตั้งค่าที่อยู่บนสวิทช์ไบนารี (เปิด) หรือใช้คุณสมบัติการเพิ่มอัตโนมัติของโปรเซสเซอร์ป้อน 8 บิตข้อมูลบนสวิทช์ไบนารีแล้วกดสวิตช์ "นาฬิกา" เพื่อป้อนข้อมูลไปยังหน่วยความจำ

การทำงานที่เทียบเท่าสามารถทำได้ด้วยสวิตช์ที่น้อยลงบนไมโครคอนโทรลเลอร์ที่ทันสมัยโดยใช้การเขียนโปรแกรม SPI แบบอนุกรม - ดูด้านล่าง

... และจากนั้นใช้พลังงานกับพินที่เหมาะสมโดยใช้แหล่งจ่ายแรงดันไฟฟ้า?

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

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

อินเทอร์เฟซบางอย่างเป็นแบบโต้ตอบ - ข้อมูลถูกส่งออกโดยตัวประมวลผลในระหว่างการเขียนโปรแกรม (เช่น data out = MISO = Master In Serial Out บนตัวประมวลผล AVR) หากต้องการอ่านสิ่งนี้คุณต้องเพิ่มเช่น LED และตัวต้านทาน (และอาจเป็นบัฟเฟอร์หรือทรานซิสเตอร์หากความสามารถของไดรฟ์ต่ำมาก ๆ )


MC6800:

จากหน่วยความจำแบบกึ่งซีดจาง (เกือบ 40 ปี!)

LDI A, $ 7F ...... 86 7F ...... 1,000 0110 0111 1111
STA, $ 1234 ...... B7 12 34 ... 1011 0111 0001 0010 0011 00100
LDI X, $ 2734 .. . CE 27 34 ... 1100 1110 0010 0111 0011 0100
...


1
+1 สำหรับการกล่าวถึงการออกแบบแบบคงที่ทำให้นาฬิกาสามารถเดินทางไปยัง DC ได้ตลอดเวลา
pericynthion

2
สิ่งนี้นำความทรงจำกลับมา ฉันเรียนรู้การป้อนรหัส Z80 โดยใช้ปุ่มย้อนกลับไปที่โรงเรียน นั่นคือประมาณปี 1990 ครูของฉันยืนยันว่าการเรียนรู้การเขียนโปรแกรมวิธีที่ยากมีค่า 25 ปีต่อมาฉันต้องยอมรับ
Nils Pipenbrinck

@NilsPipenbrinck ฉันอยู่ในขณะนี้เขียนรหัส C และใช้บทเรียนที่ฉันเรียนรู้ครั้งแรกกับ Fortran :-) !!! - และซึ่งได้รับการฝึกฝนแล้วด้วยระบบฝังตัวและภาษาแอสเซมบลี บทเรียนเหล่านี้ลดโอกาสของข้อผิดพลาดโดยใช้การพิมพ์จิตใจกับการเข้าถึงตัวแปรและพอร์ตซึ่งอาจทำสิ่งที่ได้รับอนุญาต แต่ไม่ต้องการหรือมีประโยชน์ Assembler เป็นอาวุธที่คมชัดที่สุด - ดาบคู่ที่ไม่มีมือ หลังจากนั้นภาษา "ระดับที่สูงขึ้น" ดูเหมือนจะคมชัดน้อยกว่า :-) รายการปุ่ม Z80 ทำหน้าที่คล้ายกับประสบการณ์การเรียนรู้ของคุณ ;-)
รัสเซลแม็คมาฮอน

@Ebb ขอขอบคุณ :-) ใช่ ffff สำหรับ 1111 เป็นสมองที่ชัดเจนจาง ... เป็นเพียงแค่ "คุณได้รับความคิด" แต่การทำสายไม่ได้ทำให้เจ็บ
รัสเซลแม็คมาฮอน

ใช่ฉันมีความคิด แต่เมื่อฉันอยู่ที่มัน ... :)
Erbureth พูดว่า Reinstate Monica

10

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

มันคือตัวอักษรนั่งอยู่ที่นั่นพร้อมกับการ์ดและทำหลุมด้วยตนเอง

enter image description here

แต่ละคอลัมน์คือคำสั่งหรือบิตของข้อมูลที่ตีความโดยเครื่องสถานะของ CPU เพื่อทำงาน

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

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

อาจมีบางอย่างที่เกี่ยวข้องกับสวิตช์จำนวนมากการลงทะเบียนการเปลี่ยนแปลงบางอย่างเครื่องกำเนิดสัญญาณนาฬิกาเป็นต้น

ฉันจำได้ที่วิทยาลัยเรามีระบบการเขียนโปรแกรม Z80 แบบใหม่ซึ่งมีขนาดเท่ากระเป๋าเดินทางที่มี Z80, RAM ขนาดเล็กจำนวนหนึ่ง, จอแสดงผล LED 7 เซกเมนต์และสวิตช์ขนาดใหญ่จำนวนหนึ่ง ตั้งโปรแกรมโดยการโหลดคำแนะนำลงใน RAM ด้วยตนเองโดยใช้สวิตช์


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

@tcrosley Z80 นั้นมีวัตถุประสงค์เพื่อเป็นข้อมูลเพิ่มเติม - แสดงให้เห็นว่าคอมพิวเตอร์เคยถูกตั้งโปรแกรมอย่างไรก่อนที่ Visual Studio จะใช้ทักษะทั้งหมดออกไป
Majenko

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

2
ฉันเคยตัดหลุมด้วยตนเองในที่เหล่านั้น มันเป็นไปได้เฉพาะในสถานการณ์ที่รุนแรง (22:00, ภาคเรียนครบกำหนดในวันพรุ่งนี้หนึ่งเมนเฟรมวิ่งออกไปซ้ายผู้หญิงห้องหมัดออกจากวัน การเขียนโปรแกรมเมนเฟรมเดียวกันจากแผงควบคุมด้านหน้า (สองสามปีต่อมา) นั้นเร็วขึ้น
Oleg Mazurov

1
@Majenko - ฉันเคยเห็นการสร้างเครื่องจักรของ Babbage ขึ้นใหม่และแน่นอนว่ามันไม่ได้ทำจากอุปกรณ์โทรศัพท์ แม้ว่าเสียงดังแน่นอน
Hot Licks

7

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

ก่อนอื่นลืมเกี่ยวกับภาษาระดับสูงเช่น C. แล้ววิธีที่ง่ายที่สุดคือการเขียนโปรแกรมของคุณในภาษาแอสเซมบลี แต่อย่าใช้เบลอร์เพื่อแปลเป็นรหัสเครื่อง ค้นหาคำแนะนำการประกอบแต่ละชุดในคู่มือการเขียนโปรแกรมค้นหาการเข้ารหัสเลขฐานสิบหกที่เทียบเท่าและเขียนลง

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

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

enter image description here

โดยปกติ "โปรแกรมเมอร์" ทางด้านซ้ายจะเชื่อมต่อกับพีซีซึ่งจะดาวน์โหลดไฟล์เครื่องที่สร้างโดยคอมไพเลอร์ / ลิงเกอร์

อย่างไรก็ตามหากโปรแกรมเมอร์มีแป้นพิมพ์เช่นเดียวกับด้านล่าง:

enter image description here

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

ได้รับโปรแกรมเมอร์น้อยมากที่มีแป้นพิมพ์เช่นนี้ อันนี้จะไม่เหมาะสำหรับงานอดิเรกเพราะมันอาจมีค่าใช้จ่ายสองสามพันดอลลาร์

โดยเฉพาะอย่างยิ่งโปรแกรมเมอร์โปรแกรมส่วนนี้ก่อนที่พวกเขาจะวางลงบนกระดาน; ส่วนต่อประสานและซ็อกเก็ตมีให้ใช้สำหรับ PICs หลายตัวและ Atmel AVRs ในหมู่อื่น ๆ


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

1
@RussellMcMahon ใครบอกว่ามีคอมพิวเตอร์อยู่ในโปรแกรมเมอร์? หลายคนใช้ FPGA (ซึ่งอาจถูกแทนที่ด้วยตรรกะแบบไม่ต่อเนื่อง) คุณจะเขียนโปรแกรมไมโครคอนโทรลเลอร์ผ่านทางอินเตอร์เฟส SPI ได้อย่างไรเว้นแต่จะมี bootloader ถ้าเป็นเช่นนั้นคุณจะตั้งโปรแกรม bootloader ได้อย่างไร?
tcrosley

3
bootloader ที่ไม่มีแรงดันไฟฟ้ามาตรฐานอินเตอร์เฟสการเขียนโปรแกรมแบบอนุกรมที่ไม่ได้มาตรฐานบนไมโครคอนโทรลเลอร์จำนวนมาก (อาจเป็นมากที่สุด) ใช้สองสามบรรทัดในอินเตอร์เฟสแบบอนุกรม MOSI MCLK (การรีเซ็ต Gd Vdd) กำลังพูดถึงขั้นต่ำ MISO หากมีการโต้ตอบ 3 สวิตช์ (หนึ่งอันเท่านั้น) จะต้องมีการตีกลับฟรี) และ LED สำหรับ MISO และ "คุณปิด" ช้ามาก ๆ ๆ ๆ ๆ ๆ ๆ ๆ หาก FPGA ไม่ได้รับอนุญาตให้นับเป็น "คอมพิวเตอร์" จะไม่มีปัญหาในการนำระบบที่ใช้ตัวประมวลผลมาใช้ ฉันสงสัยว่า "ไม่มีตรรกะเชิงผสม" จะได้พบกับจิตวิญญาณของการร้องขอของเขา
รัสเซลแม็คมาฮอน

ฉันต้องบอกว่าดอกไม้ไฟเป็นพื้นหลังที่ไม่ถูกต้องที่จะใช้เมื่อทำงานกับอุปกรณ์อิเล็กทรอนิกส์ :)
Anonymous Penguin

6

ในทางปฏิบัติแล้วสิ่งที่ต้องการสลับ JTAG ด้วยตนเองจะทำให้เกิดข้อผิดพลาดได้ง่าย ในการป้อนโปรแกรมที่มีขนาดที่เหมาะสมจะต้องใช้การสลับหลายพันครั้ง แต่ในทางทฤษฎีมันเป็นไปได้

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

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

แน่นอนคุณยังสามารถใช้ไมโครคอนโทรลเลอร์ที่เรียกใช้โค้ดจากอินเทอร์เฟซหน่วยความจำภายนอก แต่เป็นการโกง :-)


2
ในความเป็นจริงฉันได้สร้าง "โคลน" Imsai 8800 ในปี 1976/77 และจะเขียนโปรแกรมเป็นไบนารีโดยใช้สวิตช์สลับ ฉันมีลำดับการโหลดที่ประมาณ 40- หรือ 60 คี่คี่ (นี่คืออายุการใช้งานที่ผ่านมา!) ซึ่งจะอ่าน papertape จากโทรพิมพ์ ASR-33 ของฉันและพาฉันไปที่หน้าจอคีย์บอร์ด ก่อนที่โทรพิมพ์จะทำงานฉันจะเขียนโปรแกรม 8085 (หนึ่งในความแตกต่างระหว่าง "โคลน" ของฉันและ Imsai) อย่างเคร่งครัดในระบบเลขฐานสอง แต่นั่นเป็นแบบขนานพร้อมแถวของสวิตช์ ฉันใช้คีย์โทรเลขเพื่อทำการเข้ารหัสแบบอนุกรมและเป็นข้อผิดพลาดได้ง่ายมากอย่างที่อดัมได้ระบุไว้
user6297

3

อย่างแน่นอน อันที่จริงหลักสูตรไมโครโปรเซสเซอร์ตัวแรกที่ฉันใช้ (ประมาณ 87) ใช้บอร์ด Motorola 68000 เราจะเขียนโค๊ดในแอสเซมบลีค้นหา hex สำหรับแอสเซมบลีและพิมพ์ hex ในเทอร์มินัลเพื่อตั้งโปรแกรมบอร์ด หากคุณแก้ไขคุณต้องตรวจสอบให้แน่ใจว่ารหัสที่คุณใส่นั้นสั้นกว่ารหัสที่คุณกำลังจะเปลี่ยนแล้วบัฟเฟอร์ที่เหลือด้วย NOP หากรหัสนั้นยาวขึ้นคุณจะต้องพิมพ์ใหม่ทุกอย่าง! เราเรียนรู้ที่จะเพิ่ม NOP มากมาย


68000 ไม่ใช่ไมโครคอนโทรลเลอร์ เขาถามเกี่ยวกับไมโครคอนโทรลเลอร์ไม่ใช่ไมโครโปรเซสเซอร์ ไมโครคอนโทรลเลอร์เรียกใช้โค้ดแฟลชของเราซึ่งไม่สามารถเข้าถึงได้หากไม่มีส่วนต่อประสาน
tcrosley

5
@tcrosley ไม่เป็นความจริงเลย มีไมโครคอนโทรลเลอร์ที่ต้องการ ROM ภายนอกเนื่องจากไม่มี ROM หรือ Flash ของตัวเอง สิ่งที่ทำให้พวกเขาเป็นไมโครคอนโทรลเลอร์ไม่ได้สร้างขึ้นใน RAM หรือ ROM แต่สร้างขึ้นในอุปกรณ์ต่อพ่วง (พอร์ต IO, UART, ฯลฯ )
Majenko

แม้ว่าจะมีน้อยมาก - เนื่องจากอุปกรณ์ต่อพ่วง I / O ที่คุณเพิ่งพูดถึงมีเพียงไม่กี่ที่เท่านั้นที่มีที่อยู่ภายนอกและบัสข้อมูลเนื่องจากต้องใช้หมุดจำนวนมากสองตัว
tcrosley

2

อย่างแน่นอน เมื่อคุณมีรูปแบบไบนารีของคำแนะนำจริง (ง่ายต่อการทำสำหรับชุดคำสั่งที่ระบุไว้อย่างดี) สิ่งที่คุณต้องมีก็คือการใช้โปรโตคอลการเขียนโปรแกรม

ตัวอย่างเช่นนำสิ่งเล็ก ๆ เช่น AVR Tiny 44 ส่วนที่ 14 แสดงรายละเอียดอินเตอร์เฟสการเขียนโปรแกรมรวมถึงโปรโตคอลและเลเยอร์ทางกายภาพ มันค่อนข้างง่ายและคุณต้องการปุ่มเพียงไม่กี่ปุ่มและตัวต้านทานแบบเลื่อนขึ้น / ลงเพื่อส่ง / รับ 1 หรือ 0 หากคุณรู้สึกทะเยอทะยานเพิ่ม LED บางตัวเพื่ออ่านเอาต์พุต

ประเด็นสุดท้ายที่เหลืออยู่ก็คือถ้าคุณสามารถทำมันได้เร็วพอซึ่งโชคดี * สำหรับ AVR Tiny 4 (ตอนที่ 16) มันไม่มีความถี่ขั้นต่ำเมื่อพูดถึงการเขียนโปรแกรม

* หมายเหตุ: เท่าที่แผ่นข้อมูลระบุ สิ่งนี้อาจแตกต่างกันในความเป็นจริง ... ฉันสงสัยว่ามีใครลองเขียนโปรแกรมด้วยความเร็วสัญญาณนาฬิกา mHz

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


2

ไม่ว่าคุณจะป้อนโปรแกรมไปยัง uC หมายความว่าคุณกำลัง "เชื่อมต่อ" เพราะนั่นคือสิ่งที่หมายถึงการเชื่อมต่อ แม้แต่สวิตช์ที่คุณพลิกเองก็เป็น "ส่วนต่อประสาน"

ดังนั้นฉันจะปฏิบัติต่อคำถามนี้ว่า "ฉันจะเชื่อมต่อกับ uC ด้วยวิธีการทางกลส่วนใหญ่ - เมื่อเทียบกับฮาร์ดแวร์อิเล็กทรอนิกส์ (เมื่อเทียบกับอิเล็กทรอนิกส์) และเป็นวิธีที่ยอดเยี่ยมที่สุด"

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


2

ไม่เพียงเป็นไปได้ที่จะตั้งโปรแกรมไมโครคอนโทรลเลอร์โดยไม่ใช้คอมพิวเตอร์ แต่คุณสามารถซื้อคอมพิวเตอร์ได้ในวันนี้ซึ่งได้รับการออกแบบมาเป็นพิเศษเพื่อโปรแกรมด้วยสวิตช์ฮาร์ดแวร์สลับ ชุดนี้เรียกว่าบัตรสมาชิกและเป็นการสร้างใหม่ของคอมพิวเตอร์ COSMAC Elf จากปี 1970 ชุดได้รับการอธิบายในบทความล่าสุดในนิตยสาร IEEE Spectrum นอกจากนี้ยังเป็นไปได้ที่จะตั้งโปรแกรม Membership Card เวอร์ชั่นล่าสุดจากพีซี


2

ตกลง. วิธีการเกี่ยวกับสิ่งนี้: คุณเขียนโปรแกรมในแอสเซมเบลอร์และค้นหา opcode ด้วยตัวคุณเองตามที่แนะนำไว้ก่อนหน้านี้ วิธีติดตั้งลงในคอมพิวเตอร์: ใช้เครื่องเล่นเทปแบบเก่าถอดหัวการเล่นออก แต่ปล่อยให้กว้านและลูกกลิ้งหยิก นี่คือการขนส่งของคุณ หากคุณมีผู้เล่นแบบ reel-to-reel คุณสามารถปล่อยให้หัวเล่นอยู่กับที่

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

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


1

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


เขาถามเกี่ยวกับไมโครคอนโทรลเลอร์ไม่ใช่ไมโครโปรเซสเซอร์ ไมโครคอนโทรลเลอร์เรียกใช้โค้ดแฟลชของเราซึ่งไม่สามารถเข้าถึงได้หากไม่มีส่วนต่อประสาน
tcrosley

4
@tcrosley - ยูเอสยุคแรก ๆ ไม่มีแฟลช พวกเขามี RAM หรือ ROM สำหรับเก็บโปรแกรม
Hot Licks

@HotLicks ถูกต้อง และด้วยข้อยกเว้นเพียงไม่กี่ข้อเหล่านี้คือไมโครโปรเซสเซอร์ทั้งหมดไม่ใช่ไมโครคอนโทรลเลอร์ นั่นคือประเด็นของฉันไม่ใช่ว่าที่เก็บโปรแกรมเป็นแฟลชหรือ ROM หรือพรหมหรือ EPROM หรือ EEPROM ประเด็นคือว่าที่เก็บโปรแกรมอยู่บนชิป (ไมโครคอนโทรลเลอร์) หรือไม่ (ไมโครโปรเซสเซอร์) แม้แต่ 8048, ไมโครคอนโทรลเลอร์ไมโครโปรเซสเซอร์ตัวแรกของ Intel ที่เปิดตัวในปี 1977 ก็มี ROM ภายใน
tcrosley

3
@Trosrosley คุณเป็นใคร และคุณทำอะไรกับ tcrosley ที่มีประโยชน์และเป็นที่นิยม :-) | การสังเกตครั้งแรกของเขาคือคุณสามารถโต้ตอบกับอินเตอร์เฟสการเขียนโปรแกรมซึ่งมักจะไม่ถูกต้องเสมอไป ที่อยู่ "IF" และบัสข้อมูลเป็น IF มันใช้กับไมโครคอนโทรลเลอร์ไฮบริดขนาดใหญ่และเส้นเขตแดนบางส่วน แต่ถ้า IF ดั้งเดิมของเขานั้นดีพอ (แม้ว่าจะหนักและช้า)
รัสเซลแม็คมาฮอน

3
การพยายามที่จะรักษาความแตกต่างอย่างหนักระหว่างไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์นั้นมีความหมายมากกว่าประโยชน์โดยเฉพาะอย่างยิ่งเมื่อมีการแสดงความคิดเห็นในทุกคำตอบ
pjc50

1

PDP-8 mincomputersของDigital Equipment 40+ ปีที่แล้วไม่มีความสามารถในการบูทอัตโนมัติ โปรแกรมมักจะโหลดจากเทปกระดาษเจาะ แต่โหลดเพื่อโหลดเทปกระดาษจะต้องป้อนด้วยตนเองในสวิตช์แผงด้านหน้า

enter image description here

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

enter image description here

เนื่องจากเนื้อหาหน่วยความจำแม่เหล็กไม่ระเหยรถตักบูตรอดชีวิตจากพลังงานลงและการป้อนข้อมูลด้วยตนเองจำเป็นต้องใช้หลังจากการประกอบเริ่มต้นตัวโหลดถูกกำจัดโดยบั๊กของโปรแกรมหรือโปรแกรมที่ต้องใช้พื้นที่ของตัวโหลด


หลายปีที่ผ่านมาเมื่อเราต้องเดินเท้าเปล่าไปโรงเรียนในหิมะขึ้นเขาทั้งสองทาง PDP-8 ในโรงเรียนมัธยมของเราจะต้องถูกบูตด้วยการสลับใน bootloader จากแผงด้านหน้าตามที่คุณอธิบาย ไม่มีครูคนใดที่รู้เรื่องคอมพิวเตอร์มากนักรวมถึงคอมพิวเตอร์ที่รับผิดชอบ เขาคิดว่าเป็น 0 และ 1 ลดลงดังนั้นจึงไม่สามารถสลับใน bootloader ได้ ฉันจะจัดการคอมพิวเตอร์ให้พังเมื่อตอนที่ฉันเรียนภาษาอังกฤษฉันจึงถูกเรียกให้รีสตาร์ทคอมพิวเตอร์ ฉันไม่เคยบอกเขาเกี่ยวกับความเข้าใจผิดของเขากับความเข้าใจผิด - มันมีประโยชน์กับฉันมากเกินไป
Olin Lathrop

ฉันรัก PDP-8 ฉันสามารถเข้าถึงหนึ่งถึงสามปี แต่เพียงผู้เดียวดังนั้นจึงเป็นเหมือนการมีคอมพิวเตอร์ส่วนบุคคลมานานก่อนที่จะมีการประดิษฐ์พีซีระยะ ตื่นตาตื่นใจกับสิ่งที่สามารถพอดีกับหน่วยความจำ 4K แน่นอนว่าได้ผ่านเทปกระดาษจำนวนมาก (แต่ไม่มี DECtape) และกระดาษโทรพิมพ์
tcrosley

0

คำตอบคือใช่คุณสามารถตั้งโปรแกรมไมโครคอนโทรลเลอร์โดยไม่ต้องใช้คอมพิวเตอร์ดีบักเกอร์ ฯลฯ สิ่งที่คุณจะต้องมีคือแรงดันไฟฟ้าข้อมูลนาฬิกาและลำดับการเขียนโปรแกรมที่ระบุโดยผู้ผลิต uC (ไม่ใช่งานง่าย)

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