MCU là gì ? Vi điều khiển tích hợp trên các hệ thống nhúng

Vi điều khiển MCU tích hợp trên các hệ thống nhúng
Vi điều khiển MCU tích hợp trên các hệ thống nhúng

Giới thiệu MCU

MCU là gì ? nó viết tắt của microcontroller unit – Bộ vi điều khiển MCU là một máy tính nhỏ trên một chip bán dẫn tích hợp. Trong thuật ngữ hiện đại, nó tương tự, nhưng kém tinh vi hơn các hệ thống trên chip SoC. Một vi điều khiển chứa một hoặc nhiều CPU (lõi bộ xử lý) cùng với bộ nhớ và các thiết bị ngoại vi đầu vào/ đầu ra được lập trình . Bộ nhớ chương trình lưu trữ như RAM, flash NOR hoặc ROM OTP cũng thường được bao gồm trên chip. Bộ vi điều khiển MCU được thiết kế cho các ứng dụng nhúng, trái ngược với bộ vi xử lý được sử dụng trong máy tính cá nhân hoặc các ứng dụng mục đích chung khác.

Vi điều khiển được sử dụng trong các sản phẩm và thiết bị điều khiển tự động, như hệ thống điều khiển động cơ ô tô, thiết bị y tế cấy ghép, điều khiển từ xa, máy văn phòng, dụng cụ điện, đồ chơi và các hệ thống nhúng khác. Bằng cách giảm kích thước và chi phí so với thiết kế sử dụng bộ vi xử lý, bộ nhớ và thiết bị đầu vào/đầu ra riêng biệt, bộ vi điều khiển giúp tiết kiệm cho nhiều thiết bị. Trong bối cảnh internet vạn vật (IoT), vi điều khiển MCU là một giải pháp kinh tế và phổ biến, tiếp nhận dữ liệu cảm biến và kích hoạt các thiết bị theo kịch bản lập trình .

Một số vi điều khiển có thể sử dụng 4 bit và hoạt động ở tần số thấp như 4 kHz, cho mức tiêu thụ điện năng thấp (một con số milliwatt hoặc microwatt). Chúng thường có chức năng chờ đợi một sự kiện như nhấn nút hoặc ngắt; tiêu thụ năng lượng trong chế độ chờ thấp (đồng hồ CPU và hầu hết các thiết bị ngoại vi tắt) khiến chúng rất phù hợp cho các ứng dụng sử dụng pin cần thời gian hoạt động dài. Các bộ vi điều khiển khác có thể phục vụ các vai trò quan trọng về hiệu năng, trong đó chúng có thể cần hoạt động giống như bộ xử lý tín hiệu số (DSP), với tốc độ xung nhịp cao hơn và tiêu thụ điện năng nhiều hơn.

Phát triển MCU

Một cuốn sách ghi nhận các kỹ sư TI Gary Boone và Michael Cochran với việc tạo thành công bộ vi điều khiển đầu tiên vào năm 1971. Kết quả công việc của họ là TMS 1000, được bán trên thị trường vào năm 1974. Nó kết hợp bộ nhớ chỉ đọc, bộ nhớ đọc/ghi, bộ xử lý và đồng hồ trên một chip và được nhắm mục tiêu vào các hệ thống nhúng.

Trong những năm đầu đến giữa thập niên 1970, các nhà sản xuất thiết bị điện tử Nhật Bản đã bắt đầu sản xuất bộ vi điều khiển cho ô tô, bao gồm MCU 4 bit trong xe hơi, cần gạt nước tự động, khóa điện tử, bảng điều khiển và MCU 8 bit để điều khiển động cơ.

Một phần để đáp ứng với sự tồn tại của MCU TMS 1000, Intel đã phát triển một hệ thống máy tính trên chip được tối ưu hóa cho các ứng dụng điều khiển, Intel 8048, được thương mại lần đầu tiên vào năm 1977. Nó kết hợp RAM và ROM trên cùng một con chip với bộ vi xử lý. Nó được ứng dụng rộng rãi với hơn một tỷ bàn phím PC. Vào thời điểm đó, Chủ tịch của Intel, Luke J. Valenter, đã tuyên bố rằng vi điều khiển (MCU) là một trong những sản phẩm thành công nhất trong lịch sử của công ty và ông đã mở rộng ngân sách của bộ vi điều khiển hơn 25%.

vi điều khiển MCU ATmega
Vi điều khiển ATmega

Hầu hết các vi điều khiển tại thời điểm này có các biến thể đồng thời. Một vài loại có bộ nhớ chương trình EPROM, với một cửa sổ thạch anh trong suốt cho phép nó có thể xóa khi tiếp xúc với tia cực tím . Những con chip có thể xóa được thường được sử dụng trong nguyên mẫu. Biến thể khác là ROM hoặc PROM biến thể chỉ được lập trình một lần. Về sau, đôi khi chỉ định OTP được sử dụng, viết tắt của “lập trình một lần”. Trong một vi điều khiển OTP, PROM thường có cùng loại với EPROM, nhưng chip không có cửa sổ thạch anh; nên nó không thể bị xóa. Các phiên bản có thể xóa được yêu cầu các có cửa sổ thạch anh, chúng đắt hơn đáng kể so với các phiên bản OTP.

Vào năm 1993, việc giới thiệu bộ nhớ EEPROM cho phép các bộ vi điều khiển (bắt đầu với Microchip PIC16C84 ) được xóa nhanh chóng mà không cần cửa sổ (xem thêm bài viết về ROM là gì), cho phép tạo mẫu nhanh và lập trình trong hệ thống . (Công nghệ EEPROM đã có sẵn trước thời điểm này, nhưng EEPROM trước đó đắt hơn và kém bền hơn, khiến nó không phù hợp với các bộ vi điều khiển sản xuất hàng loạt chi phí thấp.) Cùng năm đó, Atmel đã giới thiệu bộ vi điều khiển đầu tiên sử dụng bộ nhớ Flash, một loại EEPROM đặc biệt. Các công ty khác nhanh chóng làm theo, với cả hai loại bộ nhớ.

Ngày nay, vi điều khiển có giá rẻ và sẵn có cho những người có sở thích, với các cộng đồng trực tuyến lớn xung quanh các bộ xử lý nhất định.

Số lượng và chi phí sản xuất MCU

Năm 2002, khoảng 55% tổng số CPU được bán trên thế giới là bộ vi điều khiển và bộ vi xử lý 8 bit.

Vi điều khiển MCU
Một vi điều khiển 8-bit bao gồm một CPU chạy ở 12 MHz, 128 byte của RAM , 2048 byte của EPROM , và I / O trong cùng một chip

Hơn hai tỷ bộ vi điều khiển 8 bit đã được bán vào năm 1997, và theo Semico, hơn bốn tỷ bộ vi điều khiển 8 bit đã được bán trong năm 2006. Gần đây, Semico đã tuyên bố thị trường MCU tăng 36,5% trong năm 2010 và 12% trong năm 2011.

Một ngôi nhà điển hình ở một quốc gia phát triển có thể chỉ có bốn bộ vi xử lý đa năng nhưng có khoảng ba chục bộ vi điều khiển. Một chiếc ôtô tầm trung thông thường có khoảng 30 bộ vi điều khiển. Chúng cũng có thể được tìm thấy trong nhiều thiết bị điện như máy giặt, lò vi sóng và điện thoại.

Trong lịch sử, phân khúc 8 bit đã thống trị thị trường MCU. Năm 2011 vi điều khiển 16 bit trở thành loại MCU có khối lượng lớn nhất, lần đầu tiên vượt qua các thiết bị 8 bit IC Insights tin rằng thị trường MCU sẽ trải qua những thay đổi đáng kể trong năm năm tới với các thiết bị 32 bit liên tục chiếm thị phần lớn hơn về doanh số và khối lượng đơn vị. Vào năm 2017, MCU 32 bit chiếm 55% doanh số của vi điều khiển Và ​​chiếm 38% trong tống số lô hàng vi điều khiển trong năm 2017, trong khi các thiết bị 16 bit sẽ đại diện 34% tổng số thiết kế và 4/8 bit được dự đoán là 28% số đơn vị được bán trong năm đó. Thị trường MCU 32 bit dự kiến ​​sẽ tăng nhanh do nhu cầu về độ chính xác cao hơn trong các hệ thống xử lý nhúng và sự tăng trưởng trong kết nối sử dụng Internet IoT. Trong vài năm tới, MCU 32 bit phức tạp dự kiến ​​sẽ chiếm hơn 25% công suất xử lý trong xe hơi.

Chi phí sản xuất MCU

Có thể dưới 0,1 đô la mỗi đơn vị. Chi phí đã giảm mạnh theo thời gian, với giá rẻ nhất 8-bit vi điều khiển là có sẵn với giá dưới 0,03 USD vào năm 2018, và một số 32-bit vi điều khiển khoảng $ 1 cho số lượng tương tự.

Vào năm 2012, sau một cuộc khủng hoảng toàn cầu, một sự sụt giảm doanh số hàng năm tồi tệ nhất và giá bán trung bình giảm 17%, giảm mạnh nhất kể từ những năm 1980, giá trung bình cho một vi điều khiển là 0,88 đô la Mỹ (0,69 đô la cho 4 – 8 bit, 0,59 đô la cho 16 bit, 1,76 đô la cho 32 bit). Năm 2012, doanh số bán vi điều khiển 8 bit trên toàn thế giới là khoảng 4 tỷ USD, trong khi đó, vi điều khiển 4 bit cũng có doanh số đáng kể.

Trong năm 2015, các bộ vi điều khiển 8 bit có thể được mua với giá $ 0,11 (1.000 đơn vị), 16-bit với giá $ 0,385 (1.000 đơn vị) và 32-bit với giá $ 0,378 (1.000 đơn vị, nhưng ở mức $ 0,35 cho 5.000).

Trong năm 2018, các bộ vi điều khiển 8 bit có thể được mua với giá 0,03 đô la, 16 bit với giá 0,393 (1.000 đơn vị, nhưng ở mức 0,563 đô la cho 100 hoặc 0,349 cho một cuộn 2.000), và 32 bit với giá 0,503 (1.000 đơn vị, nhưng ở mức $ 0,466 cho 5.000). Một số bộ vi điều khiển 32 bit có giá thấp hơn, tính theo đơn vị một, có thể có giá $ 0,891.

Máy tính nhỏ nhất

Vào ngày 21 tháng 6 năm 2018, “máy tính nhỏ nhất thế giới” đã được Đại học Michigan công bố . Thiết bị này là “hệ thống cảm biến không dây và pin có kích thước 0,04mm3 công suất 16nW với bộ xử lý Cortex-M0 + tích hợp và giao tiếp quang học” Nó có kích thước nhỏ hơn một hạt gạo. Thiết bị được tích hợp RAM, tế bào quang điện, bộ xử lý và bộ truyền phát không dây . Vì chúng quá nhỏ để trang bị ăng ten vô tuyến thông thường, chúng nhận và truyền dữ liệu bằng ánh sáng. Thiết bị này có kích thước bằng 1/10 so với máy tính có kích thước kỷ lục thế giới được IBM tuyên bố trước đó vào tháng 3 năm 2018, nó có một triệu bóng bán dẫn, giá thành sản xuất thấp hơn 0,1 đô la.

Thiết kế nhúng

Một vi điều khiển có thể được coi là một hệ thống khép kín với bộ xử lý, bộ nhớ và các thiết bị ngoại vi và có thể được sử dụng như một hệ thống nhúng . Phần lớn các bộ vi điều khiển đang sử dụng ngày nay được nhúng vào các máy móc khác, như ô tô, điện thoại, thiết bị và thiết bị ngoại vi cho các hệ thống máy tính.

Trong khi một số hệ thống nhúng rất tinh vi, nhiều hệ thống có yêu cầu tối thiểu về bộ nhớ, không có hệ điều hành và độ phức tạp phần mềm thấp. Các thiết bị đầu vào và đầu ra điển hình bao gồm công tắc, rơle, solenoids, đèn LED, màn hình tinh thể lỏng nhỏ hoặc tùy chỉnh, thiết bị tần số vô tuyến và cảm biến cho dữ liệu như nhiệt độ, độ ẩm, mức độ ánh sáng, vv Các hệ thống nhúng thường không có bàn phím, màn hình, ổ cứng, máy in hoặc các thiết bị I/O dễ nhận biết khác của máy tính cá nhân.

Ngắt vi điều khiển MCU là gì

Vi điều khiển phải cung cấp phản ứng thời gian thực (có thể dự đoán được, mặc dù không nhất thiết phải nhanh) đối với các sự kiện trong hệ thống nhúng mà chúng đang điều khiển. Khi một số sự kiện xảy ra, một hệ thống ngắt có thể báo hiệu cho bộ xử lý tạm dừng xử lý chuỗi lệnh hiện tại và bắt đầu một dịch vụ ngắt (ISR hoặc “trình xử lý ngắt”) sẽ thực hiện bất kỳ xử lý nào được yêu cầu dựa trên nguồn của ngắt, trước khi quay lại chuỗi lệnh ban đầu. Các nguồn ngắt có thể phụ thuộc vào thiết bị và thường bao gồm các sự kiện như tràn bộ đếm thời gian bên trong, hoàn thành chuyển đổi tương tự sang kỹ thuật số, thay đổi mức logic trên đầu vào như nút được nhấn và dữ liệu nhận được trên liên kết truyền thông. Trong trường hợp tiêu thụ năng lượng thấp, các ngắt cũng có thể đánh thức vi điều khiển khỏi trạng thái ngủ công suất thấp nơi bộ xử lý bị dừng cho đến khi được yêu cầu làm điều gì đó bởi một sự kiện ngoại vi.

Chương trình cho MCU là gì

Thông thường các chương trình vi điều khiển phải phù hợp với bộ nhớ trên chip có sẵn, vì sẽ tốn kém khi trang bị một hệ thống với bộ nhớ ngoài, có thể mở rộng. Trình biên dịch được sử dụng để chuyển đổi cả mã ngôn ngữ cấp cao và mã assembly thành mã máy nhỏ gọn để lưu trữ trong bộ nhớ của bộ vi điều khiển MCU. Tùy thuộc vào thiết bị, bộ nhớ chương trình có thể là vĩnh viễn, bộ nhớ chỉ đọc chỉ có thể được lập trình tại nhà máy hoặc có thể là bộ nhớ flash có thể thay đổi hoặc bộ nhớ chỉ đọc có thể xóa.

Các nhà sản xuất thường sản xuất các phiên bản đặc biệt của bộ điều khiển MCU của họ để giúp phát triển phần cứng và phần mềm của hệ thống đích. Ban đầu chúng bao gồm các phiên bản EPROM có “cửa sổ” trên đỉnh thiết bị, qua đó bộ nhớ chương trình có thể bị xóa bởi ánh sáng cực tím , sẵn sàng để lập trình lại sau một chu trình lập trình (“ghi”) và kiểm tra. Từ năm 1998, các phiên bản EPROM rất hiếm và đã được thay thế bằng EEPROM và flash, dễ sử dụng hơn (có thể xóa bằng điện tử) và rẻ hơn để sản xuất.

Các phiên bản khác của chương trình có thể có sẵn khi ROM được truy cập như một thiết bị bên ngoài thay vì bộ nhớ trong, tuy nhiên những phiên bản này đang trở nên hiếm do sự sẵn có rộng rãi của các lập trình viên vi điều khiển giá rẻ.

Việc sử dụng các thiết bị lập trình trên bộ vi điều khiển MCU có thể cho phép cập nhật chương trình firmware hoặc cho phép sửa đổi đối với các sản phẩm đã được lắp ráp nhưng chưa được xuất xưởng. Bộ nhớ lập trình được cũng giảm thời gian dẫn cần thiết để triển khai một sản phẩm mới.

Một bộ vi điều khiển MCU tùy chỉnh kết hợp một khối logic kỹ thuật số có thể được cá nhân hóa cho khả năng xử lý bổ sung, các thiết bị ngoại vi và giao diện phù hợp với yêu cầu của ứng dụng. Một ví dụ là AT91CAP từ Atmel .

Các tính năng vi điều khiển MCU khác

Vi điều khiển thường chứa từ vài đến hàng chục chân đầu vào/đầu ra cho mục đích chung (GPIO). Các chân GPIO có thể cấu hình theo trạng thái đầu vào hoặc đầu ra. Khi các chân GPIO được cấu hình ở trạng thái đầu vào, chúng thường được sử dụng để đọc các cảm biến hoặc tín hiệu bên ngoài. Được cấu hình ở trạng thái đầu ra, chân GPIO có thể điều khiển các thiết bị bên ngoài như đèn LED hoặc động cơ, thường gián tiếp, thông qua các thiết bị điện tử bên ngoài.

Nhiều hệ thống nhúng cần đọc các cảm biến tạo ra tín hiệu tương tự. Đây là mục đích của bộ chuyển đổi tương tự sang số (ADC). Vì bộ xử lý được xây dựng để giải thích và xử lý dữ liệu số, tức là 1 và 0, nên chúng không thể làm bất cứ điều gì với các tín hiệu tương tự có thể được gửi đến thiết bị. Vì vậy, bộ chuyển đổi tương tự sang số được sử dụng để chuyển đổi dữ liệu đến thành một dạng mà bộ xử lý có thể nhận ra. Một tính năng ít phổ biến hơn trên một số bộ vi điều khiển là bộ chuyển đổi tín hiệu số sang tương tự (DAC) cho phép bộ xử lý phát tín hiệu tương tự hoặc mức điện áp.

Ngoài các bộ chuyển đổi, nhiều bộ vi xử lý nhúng cũng bao gồm nhiều bộ định thời khác nhau. Một trong những loại bộ định thời phổ biến nhất là bộ định thời PIT. Bộ PIT có thể đếm ngược từ một số giá trị về 0 hoặc tối đa dung lượng của thanh ghi đếm về 0. Khi nó đạt đến 0, nó sẽ gửi một ngắt đến bộ xử lý chỉ ra rằng nó đã kết thúc đếm. Điều này rất hữu ích cho các thiết bị như máy điều chỉnh nhiệt, định kỳ kiểm tra nhiệt độ xung quanh chúng để xem chúng có cần bật điều hòa, bật máy sưởi, v.v.

Khối điều chế độ rộng xung chuyên dụng (PWM) giúp CPU có thể điều khiển bộ biến đổi công suất , tải điện trở , động cơ , v.v. mà không cần sử dụng nhiều tài nguyên CPU trong các vòng lặp hẹn giờ chặt chẽ.

Một khối thu/phát không đồng bộ (UART) cho phép nhận và truyền dữ liệu qua một kết nối nối tiếp với rất ít tải trên CPU. Phần cứng trên các vi điều khiển MCU chuyên dụng cũng thường bao gồm các khả năng giao tiếp với các thiết bị (chip) khác ở các định dạng kỹ thuật số như Mạch tích hợp (I²C), Giao diện ngoại vi nối tiếp (SPI), Bus nối tiếp vạn năng (USB) và Ethernet .

MCU Tích hợp cao

Bộ vi điều khiển MCU có thể không triển khai địa chỉ bên ngoài hoặc bus dữ liệu vì chúng tích hợp RAM và bộ nhớ không mất dữ liệu trên cùng một chip với CPU. Sử dụng ít chân hơn, chip có thể được đặt trong một gói nhỏ hơn, rẻ hơn nhiều.

Vi điều khiển MCU tích hợp cao
Vi điều khiển CMOS dựa trên cơ sở PIC12C508 8 bit, tích hợp EEPROM/EPROM/ROM do Microchip Technology sản xuất bằng quy trình 1200 nanomet

Tích hợp bộ nhớ và các thiết bị ngoại vi khác trên một chip duy nhất làm tăng chi phí của chip đó, nhưng thường dẫn đến giảm toàn bộ chi phí tổng của hệ thống nhúng. Ngay cả khi chi phí CPU có các thiết bị ngoại vi tích hợp cao hơn một chút so với chi phí của CPU và các thiết bị ngoại vi bên ngoài, việc có ít chip hơn thường cho phép một bảng mạch nhỏ hơn và rẻ hơn, và giảm thời gian cần thiết để lắp ráp và kiểm tra bảng mạch, có xu hướng giảm tỷ lệ lỗi lắp ráp hoàn thiện.

Bộ vi điều khiển MCU là một mạch tích hợp đơn, thường có các tính năng sau:

  • Đơn vị xử lý trung tâm  – từ nhỏ và đơn giản 4-bit đến phức tạp 32-bit hoặc 64-bit
  • Bộ nhớ truy xuất ngẫu nhiên (RAM)
  • ROM , EPROM , EEPROM hoặc bộ nhớ Flash để lưu trữ chương trình vận hành
  • Các đầu vào và đầu ra riêng biệt, cho phép kiểm soát hoặc phát hiện trạng thái logic của một chân riêng lẻ
  • Cổng nối tiếp đầu vào/đầu ra như cổng nối tiếp (UARTs)
  • Các giao tiếp truyền thông nối tiếp khác như I²C , Giao diện ngoại vi nối tiếp và Mạng để kết nối hệ thống
  • Các khối ngoại vi như bộ hẹn giờ, bộ đếm sự kiện, bộ tạo PWM và bộ giám sát
  • Bộ tạo xung nhịp  – thường là bộ tạo dao động tinh thể thạch anh, bộ cộng hưởng hoặc mạch RC
  • Đôi khi thường bao gồm bộ chuyển đổi tương tự sang số, một số bao gồm bộ chuyển đổi kỹ thuật số sang tương tự
  • Mạch lập trình và mạch hỗ trợ gỡ lỗi

Việc tích hợp này làm giảm đáng kể số lượng chip và số lượng không gian bảng mạch và dây điện cần thiết để sản xuất các hệ thống tương đương bằng cách sử dụng các chip riêng biệt. Hơn nữa, đặc biệt trên các thiết bị năng lượng thấp, mỗi chân (pin) có thể giao tiếp với một số thiết bị ngoại vi bên trong, với chức năng pin được lập trình bằng phần mềm. Điều này cho phép các chân MCU được sử dụng trong nhiều ứng dụng hơn so với các chân có chức năng chuyên dụng.

Bộ vi điều khiển MCU đã được chứng minh là rất phổ biến trong các hệ thống nhúng kể từ khi được giới thiệu vào những năm 1970.

Một số bộ vi điều khiển MCU sử dụng kiến trúc Harvard : các bus bộ nhớ riêng để hướng dẫn và dữ liệu, cho phép truy cập diễn ra đồng thời. Khi sử dụng kiến ​​trúc Harvard, các chỉ dẫn cho bộ xử lý có thể có kích thước bit khác với chiều dài của bộ nhớ trong và các thanh ghi; ví dụ: hướng dẫn 12 bit được sử dụng với các thanh ghi dữ liệu 8 bit.

Các nhà sản xuất vi điều khiển MCU thường thiết kế tần số hoạt động và hệ thống linh hoạt trước các yêu cầu từ thị trường của khách hàng và phải cân bằng nhu cầu giảm thiểu kích thước chip so với chức năng bổ sung.

Kiến trúc vi điều khiển MCU rất khác nhau. Một số thiết kế bao gồm các lõi vi xử lý đa năng, với một hoặc nhiều chức năng ROM, RAM hoặc I/O được tích hợp. Một tập lệnh của bộ vi điều khiển MCU thường có nhiều hướng dẫn để làm cho các chương trình điều khiển nhỏ gọn hơn. Ví dụ, bộ MCU đa năng có thể yêu cầu một số hướng dẫn để kiểm tra một bit trong thanh ghi nếu bit được đặt, trong đó MCU có thể có một lệnh duy nhất để cung cấp chức năng thường được yêu cầu.

Theo truyền thống, vi điều khiển không có bộ xử lý toán học, vì vậy các phép toán dấu phẩy động được thực hiện bằng phần mềm. Tuy nhiên, một số thiết kế gần đây bao gồm các tính năng được tối ưu hóa của FPU và DSP. Một ví dụ sẽ là dòng dựa trên PIC32 MIPS của Microchip.

Môi trường lập trình MCU là gì ?

Các bộ vi điều khiển ban đầu chỉ được lập trình bằng ngôn ngữ assembly, nhưng các ngôn ngữ lập trình cấp cao khác, như C , Python và JavaScript, hiện cũng được sử dụng phổ biến cho vi điều khiển và các hệ thống nhúng. Trình biên dịch cho các ngôn ngữ cấp cao thường sẽ có một số hạn chế nhưng cũng có một số cải tiến để hỗ trợ tốt hơn các đặc tính của vi điều khiển. Một số vi điều khiển có môi trường để hỗ trợ phát triển ứng dụng. Các nhà cung cấp vi điều khiển thường cung cấp các công cụ miễn phí để dễ dàng lập trình và ứng dụng trên phần cứng của họ.

Các bộ vi điều khiển có phần cứng đặc biệt có thể yêu cầu các ngôn ngữ không chuẩn của riêng họ, chẳng hạn như SDCC cho 8051. Các trình biên dịch cũng có thể chứa các tính năng không tiêu chuẩn, chẳng hạn như MicroPython.

Phần mềm biên dịch cũng có sẵn cho một số vi điều khiển. Ví dụ, BASIC trên các bộ vi điều khiển MCU Intel 8052 ; BASIC và FORTH trên Zilog Z8 cũng như một số thiết bị hiện đại. Thông thường các trình biên dịch hỗ trợ lập trình tương tác .

Mô phỏng có sẵn cho một số vi điều khiển. Điều này cho phép nhà phát triển phân tích hành vi của vi điều khiển và chương trình của họ sẽ như thế nào trong thực tế. Một trình giả lập sẽ hiển thị trạng thái bộ xử lý bên trong và cả trạng thái đầu ra, cũng như cho phép các tín hiệu đầu vào được tạo ra. Mặc dù hầu hết các trình giả lập sẽ bị hạn chế do không thể mô phỏng nhiều phần cứng khác nhau trong một hệ thống, chúng có thể thực hiện các điều kiện khó có thể tái tạo theo cách thực hiện trong thực tế và có thể là cách nhanh nhất để gỡ lỗi và phân tích các vấn đề.

Các bộ vi điều khiển gần đây thường được tích hợp với mạch gỡ lỗi trên chip khi được trình giả lập trong mạch (ICE) truy cập thông qua JTAG , cho phép gỡ lỗi firmware với trình gỡ lỗi . ICE thời gian thực có thể cho phép xem hoặc thao tác các trạng thái nội bộ trong khi chạy. ICE truy tìm có thể ghi lại chương trình đã thực hiện và trạng thái MCU trước/sau điểm kích hoạt.

Các loại vi điều khiển MCU phổ biến

Có hàng tá kiến ​​trúc và nhà sản xuất vi điều khiển bao gồm:

  • ARM core processors (nhiều nhà sản xuất)
  • ARM Cortex-M cores sử dụng cho các ứng dụng cụ thể khác nhau
  • Microchip Technology Atmel AVR (8-bit), AVR32 (32-bit) và AT91SAM (32-bit)
  • Cypress Semiconductor’s M8C core sử dụng trên các PSoC (Programmable System-on-Chip)
  • Freescale ColdFire (32-bit) và S08 (8-bit)
  • Freescale 68HC11 (8-bit) và các loại khác thuộc họ Motorola 6800
  • Intel 8051 được sản xuất bởi NXP Semiconductors và nhiều nhà sản xuất khác
  • Infineon: 8-bit XC800, 16-bit XE166, 32-bit XMC4000 (ARM dựa trên Cortex M4F), 32-bit TriCore và 32-bit Aurix Tricore Bit
  • Maxim tích hợp MAX32600, MAX32620, MAX32625, MAX32630, MAX32650, MAX32640
  • MIPS
  • Microchip Technology PIC, (8-bit PIC16, PIC18, 16-bit dsPIC33 / PIC24), (32-bit PIC32)
  • NXP Semiconductors LPC1000, LPC2000, LPC3000, LPC4000 (32-bit), LPC900, LPC700 (8-bit)
  • Parallax Propeller
  • PowerPC ISE
  • Rabbit 2000 (8-bit)
  • Renesas Electronics: RL78 16-bit MCU; RX 32-bit MCU; SuperH; V850 32-bit MCU; H8; R8C 16-bit MCU
  • Silicon Laboratories Pipelined 8-bit 8051 và ARM-dựa trên 32-bit MCU
  • STMicroelectronics STM8 (8-bit), ST10 (16-bit), STM32 (32-bit), SPC5 (automotive 32-bit)
  • Texas Instruments TI MSP430 (16-bit), MSP432 (32-bit), C2000 (32-bit)
  • Toshiba TLCS-870 (8-bit/16-bit)

Nhiều vi điều khiển MCU khác tồn tại được sử dụng trong phạm vi ứng dụng rất hẹp hoặc giống như bộ xử lý ứng dụng hơn là vi điều khiển. Thị trường vi điều khiển cực kỳ phân mảnh, với nhiều nhà cung cấp, công nghệ và thị trường. Lưu ý rằng nhiều nhà cung cấp có thể bán các kiến ​​trúc vi điều khiển cho các nhà sản xuất khác.

Độ trễ ngắt của MCU là gì

Trái ngược với các máy tính đa năng, các bộ vi điều khiển được sử dụng trong các hệ thống nhúng thường tìm cách tối ưu hóa độ trễ ngắt. Bao gồm cả việc giảm độ trễ và làm cho nó dễ dự đoán hơn (để hỗ trợ kiểm soát thời gian thực).

Khi một thiết bị gây ra gián đoạn (ngắt), các kết quả trung gian (thanh ghi) phải được lưu trước khi phần mềm chịu trách nhiệm xử lý ngắt có thể chạy. Chúng cũng phải được khôi phục sau khi xử lý ngắt đó kết thúc. Nếu có nhiều thanh ghi bộ xử lý, quá trình lưu trữ và khôi phục này có thể mất nhiều thời gian hơn, làm tăng độ trễ. (Nếu ISR không yêu cầu sử dụng một số thanh ghi, nó có thể được giữ nguyên thay vì lưu và khôi phục chúng, vì vậy trong trường hợp đó, các thanh ghi đó không liên quan đến độ trễ.) Các cách để giảm độ trễ như yêu cầu ít các tiến trình của lõi xử lý (hạn chế chiếm dụng lõi xử lý vì nó làm chậm hầu hết quá trình xử lý không gián đoạn) hoặc ít nhất là phần cứng không lưu tất cả chúng (điều này không hiệu quả nếu phần mềm sau đó cần phải bù bằng cách lưu phần còn lại “thủ công”) . Một kỹ thuật khác liên quan đến việc sử dụng cổng silicon cho “shadow registers”: Một hoặc nhiều thanh ghi trùng lặp chỉ được sử dụng bởi phần mềm ngắt, hỗ trợ ngăn xếp chuyên dụng.

Các yếu tố khác ảnh hưởng đến độ trễ ngắt bao gồm:

Chu kỳ cần thiết để hoàn thành các hoạt động CPU hiện tại. Để giảm thiểu các chi phí đó, bộ vi điều khiển có xu hướng có các đường ống ngắn (pipelines), bộ đệm ghi nhỏ và đảm bảo rằng các lệnh dài có thể tiếp tục hoặc có thể khởi động lại. Nguyên tắc thiết kế của RISC đảm bảo rằng hầu hết các hướng dẫn đều có cùng số chu kỳ, giúp tránh sự cần thiết của quá trình tiếp tục/khởi động lại như vậy.

Độ dài của bất kỳ phần quan trọng cần phải bị gián đoạn. Hạn chế truy cập cấu trúc dữ liệu đồng thời. Một cấu trúc dữ liệu phải được truy cập bởi một trình xử lý ngắt, phần quan trọng phải chặn ngắt đó. Theo đó, khi có các ràng buộc bên ngoài cứng đối với độ trễ hệ thống, các nhà phát triển thường cần các công cụ để đo độ trễ ngắt và theo dõi phần nào quan trọng gây ra sự chậm chạp.

Một kỹ thuật phổ biến chỉ chặn tất cả các ngắt trong thời gian của phần quan trọng. Điều này dễ thực hiện, nhưng đôi khi các phần quan trọng trở nên dài một cách khó chịu.

Một kỹ thuật phức tạp hơn chỉ chặn các ngắt có thể kích hoạt quyền truy cập vào cấu trúc dữ liệu đó. Điều này thường dựa trên các ưu tiên ngắt, có xu hướng không tương thích tốt với các cấu trúc dữ liệu hệ thống có liên quan. Theo đó, kỹ thuật này được sử dụng chủ yếu trong môi trường rất hạn chế.

Bộ xử lý có thể có hỗ trợ phần cứng cho một số phần quan trọng. Các ví dụ bao gồm hỗ trợ truy cập vào bit hoặc byte hoặc các hàm truy cập LDREX / STREX được giới thiệu trong kiến trúc ARMv6 .

Một số vi điều khiển cho phép ngắt ưu tiên cao hơn để ngắt các ưu tiên thấp hơn. Điều này cho phép phần mềm quản lý độ trễ bằng cách cung cấp các ngắt thời gian quan trọng ưu tiên cao hơn (và do đó độ trễ thấp hơn và dễ dự đoán hơn).

Tỷ lệ kích hoạt. Khi ngắt xảy ra back-to-back, vi điều khiển có thể tránh chu kỳ lưu / khôi phục ngữ cảnh bổ sung bằng một hình thức tối ưu hóa.

Các bộ vi điều khiển cấp thấp có xu hướng hỗ trợ các điều khiển độ trễ ngắt ít hơn.

Công nghệ bộ nhớ trên MCU

Hai loại bộ nhớ khác nhau thường được sử dụng với vi điều khiển, bộ nhớ không mất dữ liệu (bộ nhớ chỉ đọc) để lưu trữ phần firmware và bộ nhớ đọc ghi cho dữ liệu tạm thời.

Dữ liệu

Từ các bộ vi điều khiển sớm nhất cho đến ngày nay, SRAM hầu như luôn được sử dụng làm bộ nhớ làm việc đọc/ghi . FRAM hoặc MRAM có khả năng có thể thay thế vì nó sẽ giúp tiết kiệm chi phí hơn.

Ngoài SRAM, một số bộ vi điều khiển cũng có EEPROM nội bộ để lưu trữ dữ liệu; và thậm chí những cái không có (hoặc không đủ) thường được kết nối với chip EEPROM bên ngoài (như tem BASIC) hoặc chip bộ nhớ flash bên ngoài.

Phần sụn firmware của MCU là gì

Các bộ vi điều khiển sớm nhất đã sử dụng ROM để lưu trữ firmware. Các bộ vi điều khiển sau này (các phiên bản đầu của Freescale 68HC11 và các bộ vi điều khiển PIC đầu tiên) có bộ nhớ EPROM , sử dụng cửa sổ cho phép xóa qua đèn UV, trong khi các phiên bản sản xuất không có cửa sổ như vậy là OTP (có thể lập trình một lần) . Các bản cập nhật firmware có thể tương đương với việc thay thế chính vi điều khiển, do đó nhiều sản phẩm không thể nâng cấp được.

Motorola MC68HC805 là bộ vi điều khiển đầu tiên sử dụng EEPROM để lưu trữ phần sụn. Bộ vi điều khiển EEPROM trở nên phổ biến hơn vào năm 1993 khi Microchip giới thiệu PIC16C84 và Atmel giới thiệu bộ vi điều khiển 8051, lần đầu tiên sử dụng bộ nhớ NOR Flash để lưu trữ firmware. Các bộ vi điều khiển ngày nay hầu như chỉ sử dụng bộ nhớ flash, với một số MCU sử dụng FRAM và một số bộ phận có chi phí cực thấp vẫn sử dụng OTP hoặc Mask-ROM.

Nguồn: biên tập thiebiketnoi.com

Xem thêm :