Bạn có thể lập trình một vi điều khiển mà không cần máy tính?


16

Giả sử bạn có một bộ vi điều khiển khá đơn giản và nhỏ và không có giao diện, không có máy tính, không có trình gỡ lỗi, trình biên dịch hoặc trình biên dịch. Bạn có thể viết mã của bạn trong lắp ráp, chuyển đổi nó (thủ công) thành mã máy, sau đó cấp nguồn cho các chân thích hợp bằng cách sử dụng nguồn điện áp?

Tôi hiểu bạn sẽ cần I / O và bộ nhớ phù hợp để thực sự làm bất cứ điều gì, nhưng nếu bạn rất có khuynh hướng và có thời gian, bạn có thể làm điều này không? Tôi đoán, trong lịch sử, làm thế nào điều này được thực hiện khi không có máy tính / trình biên dịch / trình biên dịch để bắt đầu? Hãy liên kết tôi với một nguồn tài nguyên bên ngoài. Cảm ơn! :)


3
Hãy nhìn vào Altair 1. Các công tắc bảng mặt trước và lập trình máy thủ công là cách duy nhất để sử dụng nó.
pjc50

@ pj50 Anh hỏi về vi điều khiển chứ không phải vi xử lý. Vi điều khiển chạy mã của chúng, flash của chúng tôi không thể truy cập được nếu không có giao diện nào đó.
tcrosley

Bạn cần bao nhiêu đơn vị được lập trình? Nhiều nhà sản xuất sẽ cung cấp micros của họ được lập trình sẵn với mã của bạn; tuy nhiên, điều này không thực tế nếu bạn cần ít hơn một cuộn đầy đủ.
Oleg Mazurov

2
Trở lại những năm 70, bạn sẽ xây dựng một bảng điều khiển chuyển đổi và đèn để bạn có thể vào chương trình. Tôi chưa bao giờ làm việc với một trong những bộ vi điều khiển đầu tiên, nhưng làm việc với một số bộ vi xử lý khác nhau và đó là cách bạn làm điều đó theo mặc định. Và không có sự khác biệt cơ bản giữa bộ vi điều khiển và bộ vi xử lý ban đầu ngoài khả năng I / O và một số chi tiết về cách bộ nhớ chương trình được cấu hình.
Hot Licks

Tôi sẽ để lại nhận xét này vì tôi không thể tìm thấy nguồn cho câu chuyện này. Tôi nhớ một lần về câu chuyện về một đứa trẻ tự thiết kế và chế tạo máy tính của riêng mình (chỉ là CPU thực sự) từ bóng bán dẫn cho một hội chợ khoa học hoàn toàn dựa trên sự hiểu biết về logic kỹ thuật số. Anh ấy không thể mua máy tính vào thời điểm đó và lập trình sáng tạo của mình thông qua các công tắc bật tắt (tôi nghĩ rằng tôi nhớ đồng hồ cho thứ chỉ là một nút bấm). Một trong những giám khảo đã rất ấn tượng đến nỗi anh ta đã mua cho đứa trẻ một chiếc máy tính.
slebetman

Câu trả lời:


37

Bạn có thể viết mã của bạn trong hội đồng, chuyển đổi nó (thủ công) thành mã máy,

Đúng!
Mã có thể được viết "ra khỏi đầu" trong nhị phân, nếu bạn muốn.
Lâu rồi (lâu rồi) đây là cách tôi bắt đầu sử dụng (sau đó) bộ vi xử lý.
Tôi và bạn bè sẽ viết mã bằng ngôn ngữ lắp ráp, biên dịch thủ công thành mã máy (một số thứ bạn có thể làm "bằng cách kiểm tra" sau một số thực hành) sau đó nhập mã vào bộ xử lý bằng nhiều cách khác nhau. Trên một hệ thống chúng tôi xây dựng, chúng tôi sẽ thiết lập địa chỉ trên các công tắc nhị phân (tắt) hoặc sử dụng tính năng tăng tự động của bộ xử lý, nhập 8 bit dữ liệu trên các công tắc nhị phân và sau đó nhấn công tắc "đồng hồ" để nhập dữ liệu vào bộ nhớ.

Chức năng tương đương có thể đạt được với ít công tắc hơn trên một vi điều khiển hiện đại sử dụng lập trình SPI nối tiếp - xem bên dưới.

... và sau đó cấp nguồn cho các chân thích hợp bằng nguồn điện áp?

Đúng!
Nhưng nó sẽ cực kỳ chậm để làm!
Nhiều bộ vi điều khiển hiện đại cho phép sử dụng giao diện "SPI" để lập trình.
Điều này thường bao gồm các dòng dữ liệu đầu vào và đầu ra và một dòng "đồng hồ" và thường là một dòng thiết lập lại.

Nhiều bộ xử lý cho phép đồng hồ và dữ liệu SPI ở trạng thái "tĩnh", điều đó có nghĩa là không có giới hạn về thời gian bạn có thể mất để thiết lập dữ liệu giữa các bit. Bạn có thể lập trình bộ xử lý như vậy bằng cách sử dụng một dòng dữ liệu và một dòng đồng hồ được điều khiển bởi các công tắc vận hành thủ công. Dòng đồng hồ cần phải "không bị trả lại" - bạn cần có thể đặt mức cao hoặc thấp trong một lần chuyển đổi cho mỗi thao tác - vì vậy một giao diện tối thiểu có thể cần bao gồm một cổng kích hoạt Schmitt. Bạn có thể "thoát khỏi" chỉ với độ trễ RC và công tắc nút nhấn, nhưng đầu vào kích hoạt Schmitt sẽ an toàn hơn. Dòng dữ liệu không cần phải được trả lại miễn phí vì trạng thái của nó chỉ được đọc ở cạnh đồng hồ.

Một số giao diện có tính tương tác - dữ liệu được bộ xử lý xuất ra trong quá trình lập trình (ví dụ: data out = MISO = Master In serial Out trên bộ xử lý AVR). Để đọc điều này, bạn cần thêm ví dụ như đèn LED và điện trở (và chỉ có thể là bộ đệm hoặc bóng bán dẫn nếu khả năng ổ đĩa thực sự thấp).


MC6800:

Từ ký ức bán mờ (gần 40 năm!)

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


1
+1 để đề cập đến thiết kế tĩnh, cho phép đồng hồ đi hết DC.
pericynthion

2
Điều này mang lại những kỷ niệm. Tôi thực sự đã học cách nhập mã Z80 bằng cách sử dụng các nút ở trường. Đó là vào khoảng năm 1990. Giáo viên của tôi đã nhấn mạnh rằng học lập trình một cách khó khăn là có giá trị. 25 năm sau tôi phải đồng ý.
Nils Pipenbrinck

@NilsPipenbrinck Lúc này tôi đang viết mã C và áp dụng những bài học đầu tiên tôi học được với Fortran :-) !!! - và sau đó được mài giũa với các hệ thống nhúng & ngôn ngữ lắp ráp. Những bài học này làm giảm khả năng xảy ra lỗi bằng cách áp dụng kiểu gõ tinh thần cho các truy cập biến và cổng mà nếu không thì có thể làm những việc được phép nhưng không mong muốn hoặc hữu ích. Assembler là vũ khí sắc bén cuối cùng - một thanh kiếm hai đầu không có tay bảo vệ. Sau đó, các ngôn ngữ "cấp cao hơn" có vẻ kém sắc hơn :-). Mục nhập nút Z80 hoạt động tương tự như kinh nghiệm học tập của bạn ;-).
Russell McMahon

@Erbureth Cảm ơn :-). Có ffff cho 1111 là rõ ràng não phai. ... Chỉ là "bạn hiểu ý" nhưng hoàn thành dòng không bị tổn thương.
Russell McMahon

Vâng, tôi đã có ý tưởng, nhưng khi tôi ở đó ... :)
Erbureth nói Phục hồi lại

10

Ban đầu, trong các máy lập trình, các chương trình được bấm thủ công vào băng giấy hoặc thẻ. Sau đó, họ đã sử dụng một loại máy đánh chữ để thực hiện cú đấm, và thậm chí sau đó, các máy tính (như chúng đã được biết đến sau đó) có thể tự đục băng giấy.

Đó là, theo nghĩa đen, ngồi đó với một thẻ và tự tạo lỗ trên đó.

nhập mô tả hình ảnh ở đây

Mỗi cột là một lệnh hoặc bit dữ liệu được giải thích bởi máy trạng thái của CPU để thực hiện các tác vụ.

Bây giờ nếu tất nhiên đó là tất cả bộ nhớ flash, và vâng, việc lấy dữ liệu ở đó ngay từ đầu thường cần một máy tính để làm việc đó. Nhưng điều đó không hoàn toàn đúng 100%.

Rốt cuộc, một lập trình viên máy tính và phần cứng làm gì ngoài việc đặt trạng thái của các chân IO vào đúng thời điểm? Vì vậy, nếu bạn thực sự đủ bạo lực, bạn có thể xây dựng một hệ thống cho phép bạn gửi đúng hướng dẫn đến các chân lập trình của vi điều khiển theo đúng cách để cài đặt một số hướng dẫn vào bộ nhớ flash để thực thi.

Có thể một cái gì đó liên quan đến rất nhiều công tắc, một số thanh ghi ca, bộ tạo đồng hồ, v.v.

Tôi nhớ ở trường đại học, chúng tôi đã có một hệ thống lập trình dựa trên Z80 mới - một đơn vị kích thước của một chiếc vali với Z80, một lượng RAM nhỏ, một loạt màn hình LED 7 đoạn và một dãy công tắc lớn. Lập trình nó bằng cách tải hướng dẫn thủ công vào RAM bằng các công tắc.


Z80 không phải là một ví dụ hợp lệ. Ông hỏi về một bộ vi điều khiển, không phải bộ vi xử lý. Vi điều khiển chạy mã của chúng, flash của chúng tôi không thể truy cập được nếu không có giao diện nào đó. Ít nhất bạn đã đề cập đến flash và một giao diện lập trình ở nơi khác trong bạn trả lời.
tcrosley

@tcrosley Z80 được dùng nhiều hơn cho mục đích giai thoại - minh họa cách các máy tính được sử dụng để lập trình trước khi Visual Studio loại bỏ tất cả các kỹ năng.
Majenko

Mặc dù tôi không biết bất kỳ máy nào đã được chế tạo để làm như vậy, nhưng sẽ không khó để thêm một số mạch vào đầu đọc thẻ để lập trình một vi điều khiển với mã được lưu trữ trên một chuỗi thẻ. Băng giấy có thể là thực tế hơn, mặc dù.
supercat

2
Tôi đã sử dụng để cắt lỗ bằng tay trong những người. Nó chỉ khả thi trong những trường hợp cực đoan (10 giờ tối, giấy tờ hạn sử dụng vào ngày mai, một máy tính lớn chạy trái, phòng nữ đấm còn lại trong ngày). Lập trình cùng một máy tính lớn từ bảng điều khiển phía trước (vài năm sau) thực sự nhanh hơn.
Oleg Mazurov

1
@Majenko - Tôi đã thấy sự tái tạo của máy Babbage và nó chắc chắn không được làm từ thiết bị điện thoại. Chắc chắn là ồn ào.
Licks nóng

7

Bạn đã nói "vi điều khiển nhỏ và không có giao diện, không có máy tính, không có trình gỡ lỗi, trình biên dịch hoặc trình biên dịch.". Bạn có thể nhận được mà không cần máy tính, trình gỡ lỗi, trình biên dịch hoặc trình biên dịch, nhưng bạn phải có một số loại giao diện để kết nối với vi điều khiển để tải chương trình.

Trước hết, hãy quên bất kỳ ngôn ngữ cấp cao nào như C. Sau đó, cách dễ nhất là viết chương trình của bạn bằng ngôn ngữ hợp ngữ, nhưng không sử dụng trình biên dịch để dịch nó sang mã máy. Thay vào đó, hãy tìm từng hướng dẫn lắp ráp trong hướng dẫn lập trình, tìm mã hex tương đương của chúng và viết nó xuống.

Bạn sẽ phải phân bổ các biến của riêng mình, vì vậy bạn có thể điền các địa chỉ thích hợp vào phần toán hạng của hướng dẫn. Cũng quên sử dụng stack và heap, quá nhiều công việc. Khi hoàn tất, bạn sẽ có một chương trình máy có thể được tải trực tiếp vào bộ nhớ flash của vi điều khiển - cũng không cần trình liên kết.

Do thiếu địa chỉ và dữ liệu bên ngoài trên hầu hết tất cả các bộ vi điều khiển (vì chúng sẽ chiếm quá nhiều chân cần thiết bởi các cổng I / O và các thiết bị ngoại vi), nên hầu như tất cả các bộ vi điều khiển đều được lập trình thông qua một giao diện đặc biệt như thế này:

nhập mô tả hình ảnh ở đây

Thông thường, "lập trình viên" bên trái sẽ được kết nối với PC, sẽ tải xuống tệp máy được tạo bởi trình biên dịch / trình liên kết.

Tuy nhiên, nếu lập trình viên có bàn phím, như bàn bên dưới:

nhập mô tả hình ảnh ở đây

sau đó người ta có thể nhập mã hex cho chương trình được tạo thủ công ngay vào lập trình viên và lập trình thiết bị mà không cần trình biên dịch, trình liên kết hoặc PC, đó là những gì bạn đang tìm hiểu. (Bàn phím cũng được sử dụng để chỉnh sửa các tệp hex và tạo tổng kiểm tra.)

Cấp rất ít lập trình viên có bàn phím như thế này. Điều này sẽ không phù hợp cho một người có sở thích vì nó có thể có giá vài nghìn đô la.

Lập trình viên đặc biệt này lập trình các bộ phận trước khi chúng được đưa lên một bảng; giao diện và ổ cắm có sẵn cho một số PIC và cả Atmel AVR trong số những cái khác.


5
Bạn đã nhận xét về nhiều câu trả lời khác là sự vô hiệu của họ, nhưng câu trả lời này được cho là ít hợp lệ hơn so với hầu hết các bạn đã nhận xét. Anh ta nói "... không can thiệp, không máy tính, ...". Tối thiểu giải pháp của bạn là "một máy tính". Những gì "không can thiệp" có nghĩa là moot. Tuy nhiên, sử dụng một số công tắc đã được công bố trên giao diện SPI và bạn có thể có một giải pháp.
Russell McMahon

1
@RussellMcMahon Ai nói có máy tính trong lập trình viên? Nhiều người trong số họ chỉ sử dụng các GPU (có thể được thay thế bằng logic rời rạc.) Làm thế nào bạn sẽ lập trình một vi điều khiển thông qua giao diện SPI, trừ khi nó có bộ tải khởi động? Nếu vậy, làm thế nào để bạn lập trình bộ nạp khởi động?
tcrosley

3
Về cơ bản, giao diện lập trình nối tiếp điện áp thấp tiêu chuẩn miễn phí khởi động trên nhiều bộ vi điều khiển (có thể là hầu hết) sử dụng một vài dòng trong giao diện nối tiếp cơ bản. MOSI MCLK (Vdd Gnd Reset) là MISO tối thiểu nếu có tương tác. 3 công tắc (chỉ một trong số đó) cần được bật ra miễn phí) và đèn LED cho MISO và "bạn đã tắt". Rất rất rất rất chậm. Nếu một FPGA được phép không được tính là "máy tính" thì sẽ không có vấn đề gì khi thực hiện nhiều hệ thống dựa trên bộ xử lý. Tôi nghi ngờ "không có logic tổ hợp" sẽ đáp ứng tinh thần yêu cầu của anh ta.
Russell McMahon

Tôi phải nói rằng, pháo hoa là nền tảng sai lầm khi sử dụng khi làm việc với thiết bị điện tử :)
Penguin Penguin

6

Là một vấn đề thực tế, một cái gì đó như bật các chân JTAG bằng tay sẽ rất dễ bị lỗi. Để nhập một chương trình có kích thước phù hợp sẽ phải mất hàng ngàn toggles. Nhưng về mặt lý thuyết, nó có thể.

Nếu bạn được phép chuẩn bị vi điều khiển trước (hoặc viết ROM khởi động cho nó), bạn có thể dễ dàng thực hiện một cái gì đó như các công tắc bật tắt bên ngoài được sử dụng trên các máy tính lớn đầu tiên. Nếu bạn cho phép logic bên ngoài, bạn thậm chí có thể sử dụng bàn phím hex để tăng tốc mọi thứ.

Cuối cùng, mặc dù ngày nay nó không phổ biến, bạn có thể mua một bộ vi điều khiển dựa trên ROM có mã tùy chỉnh trong đó. Bạn sẽ phải cung cấp một số tiền trước và đảm bảo một khối lượng nhất định, nhưng tôi đã thấy khách hàng làm điều đó để tiết kiệm tiền cho sản xuất khối lượng cao. Trong trường hợp đó, sẽ không có tín hiệu bên ngoài nào cần thiết để lập trình vi điều khiển cả. Mã sẽ được xây dựng trong bố trí vật lý của chip.

Tất nhiên, bạn cũng có thể sử dụng một vi điều khiển chạy mã ra khỏi giao diện bộ nhớ ngoài, nhưng đó là gian lận. :-)


2
Trên thực tế, tôi đã xây dựng một "bản sao" Imsai 8800 vào năm 1976/77 và sẽ thường xuyên lập trình nó trong hệ nhị phân bằng cách sử dụng các công tắc bật tắt. Tôi đã có một chuỗi tải khởi động vào khoảng 40 hoặc 60 byte lẻ (đây là một đời trước đây!) Sẽ đọc một papertape từ teletype ASR-33 của tôi và đưa tôi vào một màn hình bàn phím. Trước khi teletype hoạt động, tôi sẽ lập trình 8085 (một trong những khác biệt giữa "bản sao" của tôi và Imsai,) một cách nghiêm ngặt trong hệ nhị phân. Nhưng đó là song song, với một hàng công tắc. Tôi đã sử dụng khóa điện báo để thực hiện mã hóa nối tiếp và nó thực sự dễ bị lỗi, như Adam đã nêu.
dùng6297

3

Chắc chắn rồi. Trên thực tế, khóa học vi xử lý đầu tiên tôi tham gia (khoảng năm 87) đã sử dụng bo mạch Motorola 68000. Chúng tôi sẽ tìm ra mã trong lắp ráp, tra cứu hex cho lắp ráp và nhập hex vào một thiết bị đầu cuối để lập trình bảng. Nếu bạn đã chỉnh sửa, bạn phải đảm bảo mã bạn đặt ngắn hơn mã bạn đang thay thế, sau đó đệm phần còn lại bằng NOP. Nếu coDE dài hơn, bạn sẽ phải gõ lại mọi thứ! Chúng tôi đã học cách thêm nhiều NOP.


68000 không phải là một vi điều khiển. Ông hỏi về một bộ vi điều khiển, không phải bộ vi xử lý. Vi điều khiển chạy mã của chúng, flash của chúng tôi không thể truy cập được nếu không có giao diện nào đó.
tcrosley

5
@tcrosley Điều đó không hoàn toàn đúng. Có những bộ vi điều khiển yêu cầu ROM ngoài vì chúng không có ROM hoặc Flash riêng. Điều gì làm cho chúng trở thành một vi điều khiển không được tích hợp trong RAM hoặc ROM, mà được tích hợp trong các thiết bị ngoại vi (cổng IO, UART, v.v.).
Majenko

Mặc dù rất ít - vì các thiết bị ngoại vi I / O mà bạn vừa đề cập, rất ít thiết bị có địa chỉ và dữ liệu bên ngoài vì chúng yêu cầu hai chân.
tcrosley

2

Chắc chắn rồi. Khi bạn có định dạng nhị phân của các hướng dẫn thực tế (dễ thực hiện đối với các tập lệnh được chỉ định rõ), tất cả những gì bạn cần là thực hiện giao thức lập trình.

Ví dụ, lấy một cái gì đó nhỏ như một chiếc Tiny Tiny 4 . Phần 14 mô tả chi tiết giao diện lập trình bao gồm giao thức và lớp vật lý. Nó tương đối đơn giản và bạn chỉ cần một vài nút và điện trở kéo lên / xuống để gửi / nhận 1 hoặc 0. Nếu bạn cảm thấy tham vọng, hãy thêm một số đèn LED để đọc lại đầu ra.

Vấn đề cuối cùng còn lại là nếu bạn có thể làm điều đó đủ nhanh, điều may mắn là * đối với AVR Tiny 4 (phần 16), thì nó không có bất kỳ tần suất tối thiểu nào khi lập trình.

* lưu ý: theo như biểu dữ liệu chỉ định. Điều này có thể khác trong thực tế ... Tôi nghi ngờ bất cứ ai đã thử lập trình nó ở tốc độ xung nhịp mHz.

Hãy tự động hóa nó nhiều / ít quá trình như mong muốn. Đây là điều mà hầu hết các thiết bị lập trình đều thực hiện: tự động hóa quy trình.


2

Bằng bất cứ cách nào bạn nhập chương trình vào uC, bạn đang "giao thoa" với nó, bởi vì đó là những gì có nghĩa là giao thoa. Ngay cả một loạt các công tắc bạn lật bằng tay là một "giao diện".

Vì vậy, tôi sẽ coi câu hỏi này là "làm thế nào để tôi giao tiếp với một uC với phần cứng giao tiếp phần lớn - cơ học (trái ngược với điện tử), và theo cách tuyệt nhất có thể?"

Câu trả lời của tôi là, nhập chương trình dưới dạng cuộn piano. "Thanh theo dõi" cuộn piano từ một cây đàn piano cơ bản cung cấp cho bạn ít nhất 65 bit (tùy thuộc vào định dạng) mà bạn có thể bật và tắt độc lập dựa trên các lỗ đục trên giấy. Phần còn lại là chính xác công việc với một con dao chính xác. Nhưng ít nhất chương trình của bạn, một khi đang chạy, sẽ được lưu trữ vĩnh viễn (phần nào) (không giống như cách tiếp cận thủ công).


2

Không chỉ có thể lập trình một vi điều khiển mà không cần máy tính, mà bạn thực sự có thể mua một máy tính ngày nay được thiết kế đặc biệt để được lập trình với các công tắc chuyển đổi phần cứng. Bộ này được gọi là Thẻ thành viên , và nó là sự tái tạo của máy tính COSMAC Elf từ những năm 1970. Bộ này đã được mô tả trong một bài báo gần đây trên tạp chí IEEE Spectrum . Cũng có thể lập trình các phiên bản Thẻ thành viên mới hơn từ PC.


2

Được chứ. Làm thế nào về điều này: bạn viết chương trình trong trình biên dịch chương trình và tự tìm kiếm các opcodes, như đề xuất trước đây. Cách lấy nó trong máy tính: lấy một máy nghe băng cũ, tháo đầu phát lại, nhưng để lại con lăn capct và pinch. Đây sẽ là vận chuyển của bạn. Nếu bạn có một trình phát reel-to-reel, bạn có thể để đầu phát lại tại chỗ.

Sau đó lấy một dải giấy dài và hẹp, hoặc thậm chí tốt hơn, băng trong suốt. Đây là nơi bạn mã hóa chương trình của bạn. Bạn sử dụng nhiều bản nhạc như bạn có chân để lập trình. Trên một bản nhạc, bạn đặt các chấm đen đều đặn; đây là đồng hồ của bạn Trên các bản nhạc khác, bạn đặt các chấm hoặc dải màu đen và để trống theo dữ liệu và tín hiệu. Bạn chiếu ánh sáng vào toàn bộ vật thể và phát hiện nó bằng các phototransistors nhỏ (hoặc chiếu một đèn LED vào băng và phát hiện ánh sáng với các loại khác, tương tự) và điều khiển đồng hồ và các đường tín hiệu bằng bóng bán dẫn. Điều này chiếm một ít không gian trên trình phát băng, đó là lý do tại sao bạn có thể cần phải tháo đầu phát lại.

Tất nhiên bạn cũng có thể mã hóa tín hiệu dưới dạng âm thanh, nhưng việc giải mã sẽ phức tạp hơn một chút. Hoặc bạn có thể phát hiện phản xạ thay vì ánh sáng truyền qua. Hoặc bạn có thể đục lỗ trên băng tối, hoặc băng giấy, thay vì tạo các vết đen trên băng trong suốt. Bất cứ điều gì. Trình phát băng điều khiển băng ở tốc độ không đổi, vì vậy bạn có thể nhập tín hiệu có đồng hồ mà không cần máy tính.


1

Đúng. Vấn đề chính có thể là tương tác với giao diện lập trình. Nếu bạn có một địa chỉ đơn giản và bus dữ liệu, mọi thứ sẽ dễ dàng hơn một chút. Bạn đã bao giờ nhìn thấy một số máy tính thực sự sớm? Các chương trình được nhập một lệnh tại một thời điểm vào RAM với các công tắc ở mặt trước.


Ông hỏi về một bộ vi điều khiển, không phải bộ vi xử lý. Vi điều khiển chạy mã của chúng, flash của chúng tôi không thể truy cập được nếu không có giao diện nào đó.
tcrosley

4
@tcrosley - Các uC đầu tiên không có đèn flash. Họ có RAM hoặc ROM để lưu trữ chương trình.
Hot Licks

@HotLicks Đúng. Và chỉ với một vài ngoại lệ, tất cả đều là vi xử lý, không phải vi điều khiển. Đó là quan điểm của tôi, không phải là kho lưu trữ chương trình là flash, hay ROM, hay PROM, hay EPROM hay EEPROM. Vấn đề là kho lưu trữ chương trình có trên chip (vi điều khiển) hay không (vi xử lý). Ngay cả 8048, bộ vi điều khiển đầu tiên của Intel được giới thiệu vào năm 1977, cũng có ROM bên trong.
tcrosley

3
@Tcrosley Bạn là ai? Và bạn đã làm gì với tcrosley thường hữu ích và đối tượng? :-) | Quan sát đầu tiên của anh ấy là bạn có thể tương tác với giao diện lập trình - thường sẽ không phải lúc nào cũng hợp lệ. Địa chỉ và "bus dữ liệu" IF là một IF. Nó áp dụng cho một số vi điều khiển lai lớn và biên giới, nhưng IF ban đầu của anh ta đã đủ ổn (mặc dù cứng và chậm).
Russell McMahon

3
Cố gắng duy trì sự phân biệt cứng giữa bộ vi xử lý và vi điều khiển có tính mô phạm hơn là hữu ích, đặc biệt là khi nó trong một bình luận cho mỗi câu trả lời.
pjc50

1

Các máy tính PDP-8 của Thiết bị kỹ thuật số từ hơn 40 năm trước không có khả năng khởi động tự động. Các chương trình thường được tải từ băng giấy đục lỗ nhưng bộ nạp để tải băng giấy phải được nhập thủ công trên các công tắc bảng mặt trước.

nhập mô tả hình ảnh ở đây

Tại các trang web của khách hàng Digital và PDP-8, chẳng hạn như các OEM đã sử dụng chúng làm bộ điều khiển nhúng trong ngày, người dùng không cần phải ghi nhớ các bộ tải khởi động và cạnh tranh với nhau trong thời gian nhanh nhất để vào boot bộ nạp vào máy. Các máy móc đã sử dụng các ký ức lõi từ tính (được xâu chuỗi ở những nơi xa xôi trên thế giới, bởi những quý cô có ngón tay nhỏ xíu, sử dụng kim và dây tóc mảnh).

nhập mô tả hình ảnh ở đây

Do nội dung bộ nhớ từ không biến động, bộ tải khởi động vẫn tồn tại khi tắt nguồn và chỉ cần nhập thủ công sau khi lắp ráp ban đầu, bộ nạp bị xóa bởi lỗi chương trình hoặc chương trình cần sử dụng không gian của bộ tải.


Cách đây nhiều năm, khi chúng tôi phải đi bộ bằng chân trần trong tuyết khó khăn cả hai chiều, PDP-8 ở trường trung học của chúng tôi đã phải được khởi động bằng cách bật bộ nạp khởi động từ bảng điều khiển phía trước như bạn mô tả. Không một giáo viên nào biết nhiều về máy tính, kể cả người chịu trách nhiệm cho nó. Anh ta nghĩ rằng 0 và 1 đã giảm, vì vậy không bao giờ có thể chuyển đổi trong bộ nạp khởi động. Tôi sắp xếp cho máy tính gặp sự cố khi tôi học lớp tiếng Anh nên tôi được gọi để khởi động lại máy tính. Tôi chưa bao giờ nói với anh ấy về quan niệm sai lầm của anh ấy so với xuống - nó quá hữu ích với tôi.
Olin Lathrop

Tôi yêu PDP-8. Tôi đã có quyền truy cập duy nhất vào một trong khoảng ba năm - vì vậy nó giống như có một máy tính cá nhân từ lâu trước khi thuật ngữ PC được phát minh. Tuyệt vời những gì có thể phù hợp với 4K của bộ nhớ. Chắc chắn đã trải qua rất nhiều băng giấy mặc dù (nó không có DECtape) và giấy Teletype.
tcrosley

0

Câu trả lời là , bạn có thể lập trình bộ điều khiển vi mô mà không cần máy tính, trình gỡ lỗi, v.v. Điều bạn cần là cung cấp các điện áp, dữ liệu, đồng hồ và trình tự lập trình khác nhau được chỉ định bởi nhà sản xuất uC (không phải là một công việc dễ dàng).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.