Tổng quát về ARM Cortex M3 STM32F103
Như đã thấy trong phần giới thiệu, bộ xử lý Cortex là thế hệ lõi nhúng kế tiếp từ ARM. Cortex thừa kế các ưu điểm từ các bộ xử lí ARM trước đó, nó là một lõi xử lý hoàn chỉnh, bao gồm bộ xử lí trung tâm Cortex và một hệ thống các thiết bị ngoại vi xung quanh, Cortex cung cấp phần xử lí trung tâm của một hệ thống nhúng. Để đáp ứng yêu cầu khắc khe và đa dạng của các hệ thống nhúng, bộ xử lý Cortex gồm có 3 nhánh, được biểu hiện bằng các ký tự sau tên Cortex như sau:
Cortex-A : bộ vi xử lý dành cho hệ điều hành và các ứng dụng của người dùng phức tạp. Hỗ trợ các tập lệnh ARM, Thumb và Thumb-2.
Cortex-R : bộ xử lí dành cho các hệ thống đòi hỏi khắc khe về tính thời gian thực. Hỗ trợ các tập lệnh ARM, Thumb, và Thumb-2.
Cortex-M : bộ xử lí dành cho dòng vi điều khiển, được tối ưu hóa cho các ứng dụng nhạy cảm về chi phí. Chỉ hỗ trợ tập lệnh Thumb-2.
Con số nằm cuối tên Cortex cho biết mức độ hiệu suất tương đối, với 1 là thấp nhất và 8 là cao nhất. Hiện nay dòng Cortex-M có mức hiệu suất cao nhất là mức 3. STM32 dựa trên bộ xử lý Cortex-M3.
1.1. Các phiên bản cấu trúc ARM
Tính đến thời điểm hiện tại thì phiên bản kiến trúc mới nhất của lõi ARM là ARMv7 (Trước đó có ARMv4, ARMv5, ARMv6). Bộ xử lý Cortex-M3 dựa trên kiến trúc ARMv7 M và có khả năng thực hiện tập lệnh Thumb-2.
Hình 1.1: Các phiên bản kiến trúc của lõi ARM
Các tài liệu hướng dẫn kỹ thuật cho Cortex-M3 và kiến trúc ARMv7-M có thể được tải về từ website của ARM tại www.arm.com
1.1.1 Bộ xử lý và đơn vị xử lý trung tâm Cortex
Trong suốt phần còn lại của tài liệu này, các thuật ngữ bộ xử lí Cortex (Cortex processor) và đơn vị xử lí trung tâm Cortex (Cortex CPU) sẽ được sử dụng để phân biệt giữa nhúng lõi Cortex hoàn chỉnh và bộ xử lí trung tâm RISC nội (internal RISC CPU). Trong phần tiếp theo ta sẽ xem xét các đặc điểm chính của đơn vị xử lí trung tâm Cortex, tiếp theo là hệ thống thiết bị ngoại vi bên trong bộ xử lý Cortex.
1.1.2 Đơn vị xử lý trung tâm Cortex ( Cortex CPU )
Trung tâm của bộ xử lý Cortex là một CPU RISC 32-bit. CPU này có một phiên bản được đơn giản hóa từ mô hình lập trình (programmer’s model) của ARM7/9 , nhưng có một tập lệnh phong phú hơn với sự hỗ trợ tốt cho các phép toán số nguyên, khả năng thao tác với bit tốt hơn và khả năng đáp ứng thời gian thực tốt hơn.
a. Kiến trúc đường ống
CPU Cortex có thể thực thi hầu hết các lệnh trong một chu kì đơn. Giống như CPU của ARM7 và ARM9, việc thực thi này đạt được với một đường ống ba tầng. Tuy nhiên Cortex-M3 khả năng dự đoán việc rẽ nhánh để giảm thiểu số lần làm rỗng (flush) đường ống.
Hình 1.2: Kiến trúc đường ống của ARM Cortex-M3
Trong khi một lệnh đang được thực thi, thì lệnh tiếp theo sẽ được giải mã và lệnh tiếp theo nữa sẽ được lấy về từ bộ nhớ. Phương thức hoạt động này sẽ phát huy hiệu quả tối đa cho mã tuyến tính (linear code), nhưng khi gặp phải một rẽ nhánh (ví dụ cấu trúc lệnh if…else) thì các đường ống phải được làm rỗng (flush) và làm đầy (refill) trước khi mã có thể tiếp tục thực thi.
b. Mô hình lập trình
CPU Cortex là bộ xử lý dựa trên kiến trúc RISC, do đó hỗ trợ kiến trúc nạp và lưu trữ (load and store architecture). Để thực hiện lệnh xử lý dữ liệu, các toán hạng phải được nạp vào một tập thanh ghi trung tâm, các phép tính dữ liệu phải được thực hiện trên các thanh ghi này và kết quả sau đó được lưu lại trong bộ nhớ.
Hình 1.3: Kiến trúc load và store của ARM Cortex-M3
c. Các chế độ hoạt động
Bộ vi xử lý Cortex được thiết kế với mục tiêu giảm số bóng bán dẫn, nhanh chóng và dễ sử dụng lõi vi điều khiển, nó có được thiết kế để hỗ trợ việc sử dụng hệ điều hành thực hành thời gian. Bộ xử lý Cortex có hai chế độ hoạt động: chế độ Thread và chế độ Handler. CPU sẽ chạy ở chế độ Thread trong khi nó đang thực thi ở chế độ nền không có ngắt xảy ra và sẽ chuyển sang chế độ Handler khi nó đang thực thi các ngắt đặc biệt (exceptions). Ngoài ra, CPU Cortex có thể thực thi mã trong chế độ đặc quyền hoặc không đặc quyền (privileged or non-privileged mode).
d. Bản đồ bộ nhớ
Bộ xử lý Cortex-M3 là một lõi vi điều khiển được tiêu chuẩn hóa, như vậy nó có một bản đồ bộ nhớ cũng được xác định. Mặc dù có nhiều bus nội, bản đồ bộ nhớ này là một không gian địa chỉ 4 Gbyte tuyến tính. Bản đồ bộ nhớ này là chung cho tất cả các thiết bị dựa trên lõi Cortex.
Hình 1.4: Bản đồ bộ nhớ tuyến tính 4Gbyte của bộ xử lí Cortex-M3
e. Truy cập bộ nhớ không xếp hàng
Bộ xử lí Cortex-M3 có thể truy cập bộ nhớ không xếp hàng, việc đó đảm bảo rằng SRAM được sử dụng một cách hiệu quả.
CPU Cortex có các chế độ định địa chỉ cho word, half word và byte, nhưng có thể truy cập bộ nhớ không xếp hàng (unaligned memory). Điều này cho phép trình liên kết của trình biên dịch tự do sắp xếp dữ liệu chương trình trong bộ nhớ. Việc bổ sung hỗ trợ tính năng dải bit (bit banding) vào CPU Cortex cho phép các cờ chương trình được đóng gói vào một biến word hoặc half-word hơn là sử dụng một byte cho mỗi cờ.
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 ...