Tổng quan về ARM Cortex M3
Khi tìm hiểu một dòng vi điều khiển mới điều quan tâm đầu tiên của người sử dụng đó là khả năng xử lý của chip từ đó có sự so sánh với dòng vi điều khiển đã có, sau đó là các ngoại vi hỗ trợ. Nhiều khi công nghệ sản xuất và kiến trúc bên trong không được quan tâm nhiều. Nhưng để so sánh với dòng cũ thì ko thể bỏ qua cấu trúc lõi.
Dòng ARM Cortex bao gồm ba cấu hình khác nhau của kiến trúc ARMv7:
-Cấu hình A cho các ứng dụng tinh vi, yêu cầu cao chạy trên các hệ điều hành mở và phức tạp như Linux, Android…;
-Cấu hình R dành cho các hệ thống thời gian thực và
-Cấu hình M được tối ưu cho các ứng dụng vi điều khiển, cần tiết kiệm chi phí.
Bộ vi xử lý Cortex-M3 là bộ vi xử lý ARM đầu tiên dựa trên kiến trúc ARMv7-M và được thiết kế đặc biệt để đạt được hiệu suất cao trong các ứng dụng nhúng cần tiết kiệm năng lượng và chi phí. Để đạt được hiệu suất cao hơn, bộ vi xử lý có thể làm việc nhiều hơn hoặc làm việc thông minh hơn. Đẩy tần số hoạt động cao hơn có thể làm tăng hiệu suất nhưng cũng đi kèm với việc tiêu thụ năng lượng nhiều hơn và việc thiết kế cũng phức tạp hơn. Nói cách khác, cùng thực hiện những tác vụ đó nhưng bằng cách nâng cao hiệu quả tính toán trong khi vẫn hoạt động ở tần số thấp sẽ dẫn đến sự đơn giản hóa trong việc thiết kế và ít tốn năng lượng hơn.
Trung tâm của bộ vi xử lý Cortex-M3 là một lõi có cấu trúc đường ống tiên tiến 3 tầng, dựa trên kiến trúc Harvard, kết hợp nhiều tính năng mới mạnh mẽ như suy đoán việc rẽ nhánh, phép nhân được thực thi trong một chu kỳ và phép chia được thực hiện bằng phần cứng tạo nên một hiệu năng vượt trội (điểm Dhrystone là 1,25 DMIPS/MHz). Bộ vi xử lý Cortex-M3 hỗ trợ kiến trúc tập lệnh Thumb-2, giúp nó hoạt động hiệu quả hơn 70% cho mỗi MHz so với một bộ vi xử lý ARM7TDMI-S thực thi với tập lệnh Thumb, và hiệu quả hơn 35% so với bộ xử lý ARM7TDMI-S thực thi với tập lệnh ARM.
*Lõi Cortex-M3:
-Lõi trung tâm Cortex-M3 dựa trên kiến trúc Harvard, được đặc trưng bằng sự tách biệt giữa vùng nhớ chứa dữ liệu và chương trình do đó có các bus riêng để truy cập. Đặc tính này khác với dòng ARM7 dựa trên kiến trúc Von Neumann sử dụng chung vùng nhớ để chứa dữ liệu và chương trình, do đó dùng chung bus cho việc truy xuất. Vì có thể đọc cùng lúc lệnh và dữ liệu từ bộ nhớ, bộ vi xử lý Cortex-M3 có thể thực hiện nhiều hoạt động song song, tăng tốc thực thi ứng dụng.
-Lõi Cortex có cấu trúc đường ống gồm 3 tầng: Instruction Fetch, Instruction Decode và Instruction Execute. Khi gặp một lệnh nhánh, tầng decode chứa một chỉ thị nạp lệnh suy đoán có thể dẫn đến việc thực thi nhanh hơn. Bộ xử lý nạp lệnh dự định rẽ nhánh trong giai đoạn giải mã. Sau đó, trong giai đoạn thực thi, việc rẽ nhánh được giải quyết và bộ vi xử lý sẽ phân tích xem đâu là lệnh thực thi kế tiếp. Nếu việc rẽ nhánh không được chọn thì lệnh tiếp theo đã sẵn sàng. Còn nếu việc rẽ nhánh được chọn thì lệnh rẽ nhánh đó cũng đã sẵn sàng ngay lập tức, hạn chế thời gian rỗi chỉ còn một chu kỳ.
-Bộ vi xử lý Cortex-M3 là một bộ vi xử lý 32-bit, với độ rộng của đường dẫn dữ liệu 32 bit, các dải thanh ghi và giao tiếp bộ nhớ. Có 13 thanh ghi đa dụng, hai con trỏ ngăn xếp, một thanh ghi liên kết, một bộ đếm chương trình và một số thanh ghi đặc biệt trong đó có một thanh ghi trạng thái chương trình.
-Bộ vi xử lý Cortex-M3 hỗ trợ hai chế độ hoạt động (Thread và Handler) và hai mức truy cập tài nguyên của lõi xử lí (đặc quyền và không đặc quyền), tạo điều kiện cho việc cài đặt các hệ thống mở và phức tạp nhưng vẫn bảo mật. Những dòng mã không đặc quyền bị giới hạn hoặc không cho phép truy cập vào một số tài nguyên quan trọng (một số lệnh đặc biệt và các vùng nhớ nhất định).
+Chế độ Thread là chế độ hoạt động tiêu biểu hỗ trợ cả mã đặc quyền và không đặc quyền.
+Bộ vi xử lý sẽ vào chế độ Handler khi một ngoại lệ (exception) xảy ra và tất cả các mã là đặc quyền trong chế độ này.
- Khả năng địa chỉ hóa 2^32=4gb địa chỉ: các địa chỉ định nghĩa sẵn, dành riêng cho mã lệnh (vùng mã lệnh), SRAM (vùng nhớ), bộ nhớ/thiết bị bên ngoài, thiết bị ngoại vi bên trong và bên ngoài. Ngoài ra còn có một vùng nhớ đặc biệt dành riêng cho nhà cung cấp.
- NVIC (Nested Vectored Interrupt Controller) là thành phần tích hợp của bộ vi xử lý Cortex-M3 có khả năng xử lý ngắt rất linh hoạt và nhanh chóng. Trong cài đặt chuẩn, nó cung cấp một NMI (Non-Maskable Interrupt) và 32 ngắt vật lý đa dụng với 8 mức ưu tiên pre-emption. Nó có thể được cấu hình từ 1 đến 240 ngắt vật lý với tối đa 256 mức độ ưu tiên. Bộ vi xử lý Cortex-M3 sử dụng một bảng vector có thể tái định vị được, dùng để chứa địa chỉ của hàm xử lý ngắt. Khi nhận một ngắt, bộ xử lý sẽ lấy địa chỉ từ bảng vector thông qua bus chương trình. Bảng vector ngắt được đặt ở địa chỉ 0 khi reset, nhưng có thể được di chyển đến vị trí khác bằng cách lập trình một thanh ghi điều khiển
Đôi khi chúng ta quan niệm nhầm về cái tên Cortex M3. Cortex M3 không phải là một vi điều khiển cụ thể, nó là tên một lõi vi xử lý của arm được đăng ký bản quyền. Các nhà sản xuất mua lõi này và thêm vào các ngoại vi sau đó đóng vỏ thành các vi điều khiển cụ thể. Chính vì vậy có rất nhiều các chip cụ thể của dòng arm Cortex M3 như chip của NXP LPC(LPC1768,..), của STMicroelectronics Stm32f(stm32f103c8t6,...) việc tìm hiểu chính là học việc sử dụng các ngoại vi của chip. Thực ra với người sử dụng, sau khi biết được sức mạnh và khả năng của lõi thì cái họ quan tâm là ngoại vi, việc chọn chip quyết định nhiều bởi ngoại vi trên nó. Các ngoại vi trên chip của các hãng có cách cấu hình và sử dụng rất khác nhau, chính vì vậy tuy có cũng lõi nhưng một chương trình ko thể nạp trên các chip khác nhau được. Việc tìm hiểu lõi giờ đây ít có ý nghĩa thay vào đó là việc học cách sử dụng ngoại vi.
(Còn tiếp)
BÀI VIẾT LIÊN QUAN:
Bài báo đăng Tạp chí ngành cơ khí Việt Nam
The paper presents the researched results on design and manufacture of ...
Sửa lỗi USB hoặc thẻ nhớ SD không thể format ở Windows 10
Nếu bạn đang gặp phải vấn đề với việc format USB hay thẻ nhớ SD thì bài viết ...