Tại sao tôi nên học kiến ​​trúc vi điều khiển? [đóng cửa]


8

Gần đây tôi bắt đầu làm việc trong một công ty nhỏ sản xuất thiết bị điện tử liên quan đến chẩn đoán ô tô. Ông chủ của tôi, người ở giữa tuổi 50, nói rằng ông ta đang sử dụng 8051 công cụ phái sinh và họ đang thực hiện công việc. Tôi tiếp tục tìm kiếm Google để tìm hiểu nếu 8051 vẫn còn phổ biến ngày nay. Và ở Quora, tôi đã thấy những điều này:

... Đây có lẽ là kiến ​​trúc MCU đơn giản nhất xung quanh. Mọi thiết bị ngoại vi có vẻ giống như phiên bản xương trần. Các khái niệm của tôi về bộ hẹn giờ, đồng hồ, UART, vv đã làm sáng tỏ rất nhiều! Và, sau đó tôi bắt đầu đánh giá cao các kiến ​​trúc khác - bởi vì tôi thực sự hiểu sự khác biệt.

... rõ ràng, nó sẽ không được sử dụng bởi bất kỳ ngành nào để phát triển sản phẩm vì tính đơn giản của nó ...

Nhưng tại sao? Cho đến nay, ít nhất là một sinh viên, tôi đã từng làm rất nhiều thứ mà không làm rối tung kiến ​​trúc. Tôi vui vẻ mã hóa bằng C, tôi đã sử dụng các thiết bị ngoại vi LCD, kết nối với các IC khác với các giao thức khác nhau (SPI, I2C, v.v.)

Tại sao tôi phải bận tâm với kiến ​​trúc của vi điều khiển của mình, ngoài các lĩnh vực hạn chế của các ứng dụng quan trọng và thời gian thực?


3
Hoặc là cho vui, hoặc bởi vì bạn cần phải làm một dự án với kiến ​​trúc như vậy, rõ ràng.
PlasmaHH

Ngày nay 8051 là một cấp độ sở thích nhiều nhất. Mặt khác, nếu bạn bắt đầu làm việc với một cái gì đó vừa phải hơn như ARM Cortex M4, bạn không thực sự cần phải học kiến ​​trúc. Không bắt đầu ít nhất
Gregory Kornblum

@PlasmaHH Tôi ước mình có đủ thời gian để "vui chơi" với mọi chủ đề duy nhất về điện tử, nhưng đó là trong những năm sinh viên của tôi :)
CK

6
bạn cần lưu ý về kiến ​​trúc khi bạn cần hiệu suất, điều này có thể sẽ không xảy ra. Để cho bạn một ví dụ, nếu bạn cần thực hiện một số phép tính lặp đi lặp lại và bạn có thời gian giới hạn, bạn có thể được yêu cầu không sử dụng dữ liệu được lưu trữ trong flash hoặc tối ưu hóa việc sử dụng thanh ghi. Nhưng nó chỉ xảy ra với một số lượng rất ít các chuyên gia. Bạn sẽ mất thời gian để đến đó. Bây giờ tôi sẽ không phạm sai lầm khi chỉ cần viết C là đủ cho những năm sắp tới của bạn.
Gregory Kornblum

2
Tôi sẽ để nó cho những người có thể biết rõ hơn :)
Gregory Kornblum

Câu trả lời:


30

8051 và các bộ vi điều khiển bit thấp khác vẫn còn được sử dụng cho đến ngày hôm nay?

Vâng, gần như ở khắp mọi nơi. Chúng nhỏ và dễ dàng, có rất nhiều lõi nổi xung quanh mà bạn có thể đặt vào silicon tùy chỉnh của mình với chi phí thấp hoặc miễn phí, có các trình biên dịch trưởng thành. Tất cả điều này làm cho 8051 vẫn là một trong những kiến ​​trúc cốt lõi phổ biến nhất trong số các nhà sản xuất silicon. Các lõi ARM có thể có sẵn trong các sản phẩm khác nhau, nhưng một lần nữa, khi bạn nói chuyện với ai đó đang chế tạo nhiều thiết bị với một ràng buộc về giá rất nghiêm ngặt, rất có thể anh ta sẽ thích lõi 8051 rẻ hơn / miễn phí nếu hoàn thành công việc . Chỉ để phản đối tuyên bố @ Nitro2k01 về việc sử dụng chỉ thích hợp: Mouser có gần 800 mô hình của 8051 bộ vi điều khiển trên kho . Và thực tế là những thứ này bắt đầu, ngay cả tại Mouser, với mức giá dưới 40ct có thể là một dấu hiệu cho thấy chúng được sử dụng để làm gì:

MCU chính thống, hiệu suất thấp, khối lượng lớn

do đó:

... rõ ràng, nó sẽ không được sử dụng bởi bất kỳ ngành nào để phát triển sản phẩm vì tính đơn giản của nó ...

là chất lượng cao hoàn toàn vô nghĩa. Đặc biệt là khi bạn đang cung cấp một ví dụ ngược lại chính mình

Ông chủ của tôi, người ở giữa tuổi 50, nói rằng ông ta đang sử dụng 8051 công cụ phái sinh và họ đang thực hiện công việc.

Chính xác! Chúng được sử dụng ở mọi nơi, chúng được chứng minh tốt và rẻ, và chúng là đủ ; không bao giờ đánh giá thấp lợi thế của việc có một giải pháp cho một vấn đề phổ biến trong ngăn kéo ở đâu đó!

Tất nhiên, đó thường là trường hợp bạn có thể cần một giải pháp với giả sử hai bus ô tô điển hình, giao diện tốc độ cao cho ADC, một số bộ định thời giám sát đáng tin cậy, ba đơn vị PWM ... và sau đó bạn bắt đầu ghép một cái gì đó bao gồm bốn dẫn xuất 8051 và 8080 .. uh. Đó là một tình huống xấu, và rất có thể sẽ được giải quyết nhanh hơn và đáng tin cậy hơn bằng cách sử dụng một MCU đơn lẻ, linh hoạt hơn, mạnh mẽ hơn (ví dụ như ARM). Nhưng rằng "chúng tôi có kiến ​​thức của công ty về cách một cái gì đó hoạt động với công nghệ cũ" so với "chúng tôi là bằng chứng trong tương lai bằng cách có khả năng chạy trên phần cứng hiện đại" là một sự đánh đổi bảo mật đầu tư cổ điển. Nếu bạn gặp một trong những dự án kiểu đó, tôi sẽ cố gắng nói chuyện với ông chủ trong bối cảnh đó. Đối với công việc nhỏ dễ dàng, yeah, 8051.

Tôi có nên bận tâm tìm hiểu về kiến ​​trúc MCU nói chung?

Đúng! Tôi nghĩ rằng @jfkowes giải thích điều đó rất tốt. Nhưng thành thật mà nói: điều này hơi giống với câu hỏi "tôi có nên học cách động cơ đốt trong hoạt động nếu tôi muốn trở thành thợ sửa xe"; câu trả lời là "bạn có thể sống tốt nếu bạn có thể thực hiện tốt các hướng dẫn sửa chữa, nhưng bạn có thể sẽ là một kỹ thuật viên tốt hơn nhiều (kỹ sư còn lại) nếu bạn hiểu phần cứng của bạn làm gì.

Ngay khi bạn đối mặt với một vấn đề không thể là google, bạn sẽ trở thành một con rùa trên lưng nếu bạn không hiểu rõ về cách thức hoạt động của bộ xử lý.

Tôi có nên bận tâm tìm hiểu kiến ​​trúc 8051?

Chắc là không. Theo nghĩa là, vâng, miễn là chi phí không phải là trọng tâm chính của bạn, rất có thể bạn chỉ cần sử dụng các MCU mạnh mẽ và linh hoạt hơn nhiều dựa trên lõi ARM hoặc các kiến ​​trúc hiện đại hơn khác.

Một lần nữa, lõi 8051 dễ đến mức tôi thực sự khuyên bạn nên hiểu đơn vị của nó là gì trước khi cố gắng giải quyết lõi MCU hiện đại, phức tạp hơn. Đó là một ví dụ hay.

Vì vậy, nếu 8051 không phải là cốt lõi tôi đang tìm kiếm trong một ứng dụng khối lượng thấp, những gì đang tôi đang tìm kiếm?

Vì vậy, cá nhân: đi cho ARM Cortex-M0, -M3, -M4F; Chúng có rất nhiều trong tất cả các loại vi điều khiển giá cả phải chăng, dễ lập trình (yay, hỗ trợ GCC trưởng thành, libs tiêu chuẩn CMSIS, rất nhiều HĐH nhúng chạy trên chúng) và thường đi kèm với giao diện gỡ lỗi tiêu chuẩn ( một điểm cộng tuyệt vời).

ARM, từ bên ngoài, thường tương đối dễ hiểu, vì bạn thường ánh xạ mọi thiết bị ngoại vi vào không gian bộ nhớ, và đó là nó. Trong nội bộ, chúng có mức độ tinh vi khác nhau, và tối ưu hóa tốc độ / mạnh mẽ / kích thước, khiến chúng không hoàn toàn dễ hiểu về chi tiết, nhưng tôi đoán rằng có thể sẽ hơi khó để hỏi trừ khi bạn thiết kế CPU.

Nếu bạn thích thiết kế CPU, tôi nghĩ (đây thực sự là niềm tin cá nhân dựa trên quan sát của tôi về các hoạt động nghiên cứu và đầu tư vào ngành "đã hứa"), chúng tôi hiện đang quan sát sự trỗi dậy của một ISA quan trọng mới - RISC-V. Có nhiều cách triển khai kiến ​​trúc này cho các đồ họa hoặc silicon, và những người như Nvidia dường như cũng chơi với việc thay thế bộ đa xử lý luồng của họ bằng các loại lõi này.


: Rất có khả năng tôi thiếu hơn một nửa số 8051 thực tế mà người anh em họ có (bởi vì, này, tôi chỉ chọn tất cả các MCU có tên cốt lõi là * 80 * 5 *). Rất có thể là nếu bạn chọn một bộ vi điều khiển 8 bit ngẫu nhiên, có khả năng lõi của nó ít nhất có nguồn gốc một phần từ 8051. Ý tôi là, chỉ cần nhìn vào "danh sách [8051] nhà cung cấp phái sinh" của wikipedia .


AVR cũng là một kiến ​​trúc học tập tuyệt vời, với tài liệu xuất sắc và hỗ trợ gcc.
chrylis -on đình công-

@Chrylis ghét không đồng ý, nhưng cá nhân tôi không nghĩ ATMega 8bitters là một kiến ​​trúc tuyệt vời, tài liệu của họ hoặc hỗ trợ GCC không có gì nổi bật so với ARM cortex m0, mà họ cạnh tranh. Nhưng đó là ý kiến ​​cá nhân!
Marcus Müller

1
@ MarcusMüller Sau một số kinh nghiệm với Atmel, tôi sẽ không bao giờ sử dụng chúng nữa (ngoại trừ sở thích.) Atmel phụ thuộc vào hoạt động của sở thích để hỗ trợ các doanh nghiệp nhỏ hơn một "kích thước" nhất định - mà tôi luôn nhỏ hơn, vì số lượng của chúng tôi không bao giờ vượt quá 6000 mỗi năm. FAE rất tốt, nhưng điều đó không giúp gì cho Pháp (AT91) và vì vậy tôi chỉ để họ đi. Microchip, mặt khác, đã hỗ trợ tôi đến mức điên cuồng bất kể dự án. Hỗ trợ giáo sư của họ. công cụ "mãi mãi" và thậm chí chip cũ vẫn được sản xuất. Atmel hiện được mua bởi Microchip. Vì vậy, có thể thay đổi từ đó và tôi sẽ xem xét lại.
jonk

1
@jonk vì vậy, trong khi PIC / microchip có danh tiếng dịch vụ tốt và có thể tồn tại một mình, phần mở rộng danh mục đầu tư của Atmel có thể bị đình trệ. Và, hy vọng của tôi trong thập kỷ tới: Như chúng ta đã thảo luận trong các bình luận cho một câu trả lời khác một thời gian trước, nếu điều đó chứng minh rằng "dịch vụ đưa đón" trở nên ngày càng phải chăng hơn và với mức giá 32bit / tùy chọn 64bit / tùy chọn rất cạnh tranh RT đảm bảo các kiến ​​trúc như RISC-V ở nhiều kích cỡ và tốc độ khác nhau (được triển khai dưới dạng lõi với tên BOOM, Rocket-chip hoặc PicoRV32), "quái gì, tôi có một vấn đề đặc biệt, tôi có thể nhận được một MCU đặc biệt"
Marcus Müller

1
@ MarcusMüller Người ta có thể hy vọng. Nếu mọi thứ bật hỗ trợ khách hàng, Microchip chỉ đơn giản là tàn sát mọi người khác. Tôi đã có một công cụ chuyên nghiệp, 12 tuổi, nơi công tắc nguồn trở nên "dễ vỡ". Tôi gọi để hỏi xem họ có thể cho tôi số phần chuyển đổi để tôi có thể đặt hàng và sửa chữa thiết bị không. Thay vào đó, họ yêu cầu gửi cho tôi một đơn vị thay thế, gửi cho tôi và một hộp để trả lại cho họ đơn vị cũ, và nó đã đến vào sáng hôm sau! Không có chi phí. Tôi hỏi: "Bạn có cần bằng chứng mua hàng không?" Họ nói, "Không. Chỉ cần trả lại đơn vị khác. Sở hữu thể chất là tất cả những gì chúng ta cần." Điều mờ nhạt là cổ xưa.
jonk

12

Nói chung, đây là một số lý do tốt để tìm hiểu (hoặc ít nhất là có kiến ​​thức làm việc về) kiến ​​trúc của vi điều khiển bạn đang sử dụng.

Hãy cẩn thận: trong bối cảnh công việc của bạn, công ty, ứng dụng, phần cứng liên quan, v.v., có thể có lý do tại sao bạn không nên tìm hiểu kiến ​​trúc cụ thể mà bạn đang sử dụng ngay bây giờ.

Gỡ lỗi

Khi các thư viện cấp cao đang hoạt động, bạn có thể không cần biết kiến ​​trúc. Khi bạn bắt đầu gặp vấn đề, việc biết các phần bên trong của vi điều khiển của bạn có thể giúp ích rất nhiều để cô lập và khắc phục những vấn đề đó một cách nhanh chóng.

Mã hiệu quả và đơn giản

Nếu bạn biết kiến ​​trúc, bạn có thể chuyển chức năng từ phần mềm sang phần cứng. Điều này có khả năng giảm tải phần mềm và loại bỏ các nguồn lỗi.

Giảm chi phí

Kiến thức về kiến ​​trúc có thể làm giảm việc sử dụng bộ nhớ dữ liệu và chương trình và bộ xử lý. Điều này có thể có nghĩa là bạn có thể chọn một vi điều khiển có ít tài nguyên hơn, có khả năng giảm chi phí.

Tăng tính hữu dụng của bạn

Ngay cả khi bạn không sử dụng kiến ​​thức ngay bây giờ, các cuộc thảo luận với đồng nghiệp / nhà cung cấp / kỹ sư hỗ trợ, v.v. có thể kêu gọi. Ví dụ, một cái gì đó bạn biết có thể giúp người khác giải quyết vấn đề họ đang gặp phải. Tiết kiệm trong ngày là điều mọi người nhớ.

Kiên thức là sức mạnh

Ngay cả khi bạn không cần kiến ​​thức trong công việc hiện tại, khi bạn thấy quảng cáo cho một công việc trông tuyệt vời có nội dung "Kiến thức về gia đình vi điều khiển> là bắt buộc / ưa thích" , bạn sẽ ở vị trí tốt hơn để đi cho nó


Sau đó, một lần nữa, tôi không biết liệu bạn có thường đọc câu đó trong quảng cáo việc làm hay không - đó là kiến ​​thức phức tạp và bất kỳ ai hiểu biết ít nhất về bất kỳ kiến trúc CPU nào cũng có thể nhận 8051 trong ba ngày đầu tiên của anh ấy về công việc, tôi đoán
Marcus Müller

Điểm hay, tôi đã chỉnh sửa nó để tổng quát hơn.
jfowkes

7

8051 và các bộ vi điều khiển bit thấp khác vẫn còn được sử dụng cho đến ngày hôm nay?

Có, mặc dù chủ yếu cho các trường hợp sử dụng thích hợp. Chúng chủ yếu được sử dụng cho các nhiệm vụ đơn giản, trong các sản phẩm được sản xuất hàng loạt, dựa trên chi phí hoặc nơi mà một hồ sơ theo dõi đã được chứng minh là mong muốn. Chúng thường được cấp phép và tích hợp vào một giải pháp chip đơn. Do kiến ​​trúc đơn giản của chúng, thật dễ dàng để tích hợp chúng với các thiết bị ngoại vi tùy chỉnh trên cùng một chip. Một lợi thế khác là chúng có thể được sản xuất trên một diện tích nhỏ với các kỹ thuật sản xuất chất bán dẫn cũ hơn (và rẻ hơn).

Một ví dụ như vậy là trong chip điều khiển trong thẻ thông minh, thường sử dụng lõi 8051 hoặc lõi tương tự với các phần mở rộng phần cứng mật mã. Bạn có thể sẽ tìm thấy các lõi vi điều khiển 8 bit trong những thứ như bộ điều khiển cho màn hình bàn chải đánh răng điện thông minh. Một ECU phương tiện thường sẽ sử dụng vi điều khiển 8 bit, cùng với vi điều khiển 32 bit, làm cơ quan giám sát vì độ tin cậy cao hơn và độ phức tạp thấp hơn.

Bạn có nên học nó không?

Ngoài khả năng bạn thực sự có thể rơi vào tình huống cần có kiến ​​thức về kiến ​​trúc cụ thể đó, tôi cho rằng đó là một kỹ năng hữu ích nói chung. Ngay cả khi bạn lập trình C trong công việc hàng ngày, việc hiểu biết chung về những gì diễn ra "một cấp dưới" là hữu ích. Khi khắc phục các lỗi lạ hoặc vấn đề về hiệu năng, việc xác định vấn đề có thể dễ dàng hơn rất nhiều nếu bạn có hiểu biết chung về phần cứng cơ bản. Bạn cũng có thể dễ dàng phân tích đầu ra ngôn ngữ lắp ráp từ trình biên dịch C. Học một kiến ​​trúc cũng sẽ giúp bạn dễ dàng học các kiến ​​trúc khác nhau trong tương lai. Những kỹ năng này cũng có thể giúp bạn viết mã tốt hơn ngay cả đối với các lõi CPU hiện đại hơn.


Tôi hơi không đồng ý với yêu cầu "Thích hợp"; xem câu trả lời của tôi dưới đây :) nhưng vẫn, bạn là một câu trả lời tốt!
Marcus Müller

1

Bạn có thể học được rất nhiều về thiết kế kỹ thuật số thông qua việc học chúng. Điện tử kỹ thuật số được xây dựng bằng cách sử dụng hai thứ. Đầu tiên là logic, các kết nối của các phần tử AND, OR, KHÔNG thực hiện biểu thức logic. (Trong thực tế, các phần tử logic khác như NAND thực sự được sử dụng, nhưng AND, OR và KHÔNG dễ hiểu hơn.) Thứ hai là các phần tử bộ nhớ có thể chứa một hoặc nhiều bit. Khi các yếu tố bộ nhớ được giới thiệu, các thiết bị có thể có trạng thái được gọi là trạng thái . Các kết hợp bit khác nhau trong các phần tử bộ nhớ của nó tương ứng với các trạng thái khác nhau.

Hãy xem xét một máy trạng thái bán hàng tự động bắt đầu ở trạng thái 0 và chuyển sang trạng thái khác mỗi khi đồng xu được đưa vào. Làm như vậy, máy có thể theo dõi tổng số tiền, biết khi nào đã nạp đủ tiền và biết có bao nhiêu thay đổi để trả lại.

Để thiết kế các mạch của máy, bắt đầu bằng sơ đồ các trạng thái với các mũi tên hiển thị chuyển tiếp sang các trạng thái khác cùng với các điều kiện kích hoạt chúng. Đối với mỗi mũi tên, một biểu thức logic xác định một điều kiện. Sau đó, người ta có thể tìm ra tất cả các biểu thức này là gì và thực hiện chúng với các yếu tố logic.

Đối với một máy bán hàng tự động, điều này không phải là rất khó khăn. Đối với các bộ điều khiển phức tạp, nó sẽ khó hơn rất nhiều. Vi điều khiển là một cách nhanh chóng và dễ dàng để làm điều tương tự. Hãy xem xét một "bộ nhớ" mà (theo nghĩa của một byte hoặc từ) rộng k bit và có n dòng địa chỉ dẫn đến 2 ^ n vị trí trong bộ nhớ. Bộ nhớ này được lập trình với một thiết kế và chỉ đọc trong thực tế. Lưu ý rằng sử dụng các bit địa chỉ của bộ nhớ làm "đầu vào" và các bit dữ liệu làm đầu ra, bộ nhớ có thể được lập trình để nhận ra bất kỳ chức năng logic nào.

Thêm một thanh ghi cũng rộng k bit để giữ nội dung của một vị trí bộ nhớ sẽ mang lại một máy trạng thái.

Nếu các bit k được chia thành, ví dụ , opcode và địa chỉ. Tập hợp các bit opcode điều khiển các phần khác của mạch (chẳng hạn như phân phối sản phẩm máy bán hàng tự động) và các bit khác là một địa chỉ bộ nhớ rộng n bit, mỗi bộ k bit trở thành một cấu trúc vi mô với khả năng phân nhánh.

Thêm vào đó một số logic số học, một số thanh ghi khác (trong đó một hoặc nhiều trong số đó có các đầu vào điều khiển để dịch chuyển sang trái và phải) và bạn có thể xây dựng một CPU có hướng dẫn máy được thực hiện bằng một chuỗi các vi lệnh.

Trong những năm 1970 và 1980, một số máy tính thành công đã được chế tạo bằng thiết kế này. Một trong số họ (VAX 11 của Thiết bị kỹ thuật số) có hướng dẫn máy để tính đa thức số nguyên, dành cho tính toán địa chỉ (nghĩ mảng). Hóa ra là hướng dẫn có thể được thực hiện nhanh hơn bằng cách sử dụng các hướng dẫn đơn giản hơn.

Vi điều khiển có thể và thường là, một triển khai kém hiệu quả hơn so với một máy trạng thái truyền thống. Nhưng chúng có thể dễ dàng thay đổi, nhanh hơn nhiều để thiết kế và là giải pháp điều khiển tuyệt vời.

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.