Title Image

Blog Logo

Core 3. Core Registers

🌱 Core 3. Core Registers

    👉 Cortex - M4 Processor Core Registers

    Như ở bài core 2 đã nói về Cortex - M4 Processor & Core, thì Cortex - M4 Core bao gồm ALU (bộ tính toán số học và logic), Address Register và bộ tăng địa chỉ, cùng với đó, nó bao gồm 16 thanh ghi core để thực hiện các chức năng khác nhau. Các thanh ghi này được đặt tên từ R0 đến R15 và đều có độ rộng 32 bits.
Core

    ➤ Về cơ bản, để hiểu được về cách hoạt động của Core và hỗ trợ cho quá trình debug chương trình sau này, các bạn cần nắm được tác dụng của các thanh ghi Core này. 16 thanh ghi từ R0 đến R15 bao gồm 15 thanh ghi cho User và 1 thanh ghi PC (Program Counter). 

Core
Core Register in Arm Cortex-M4
  • Các thanh ghi từ R0 đến R12 là các thanh ghi mục đích chung (General Purpose Registers), có tác dụng trong quá trình xử lý data, tính toán. Tức các phép tính toán, toán tử, toán hạng, kết quả, ... sẽ được ALU tối ưu để đặt trên những thanh ghi này (hoặc người dùng lập trình - ngôn ngữ Assembly).
  • R13 (SP - Stack Pointer) trỏ đến một vùng nhớ đặc biệt gọi là Stack. Thanh ghi này có thể là MSP (Main SP) hoặc PSP (Process SP), dùng cho các Task trong RTOS.
    MSP hay PSP được quy định bởi bit[1] của thanh ghi CONTROL.
  • R14 (LR - Link Register) là thanh ghi chứa địa chỉ trả về của các lệnh rẽ nhánh (ví dụ như khi gọi 1 hàm thì LR sẽ chứa địa chỉ của lệnh tiếp theo sau khi hàm đó trả về).
  • R15 (PC - Program Counter) sử dụng để điều khiển quá trình thực thi các lệnh trong chương trình, PC sẽ chứa địa chỉ của lệnh tiếp theo mà Processor sẽ xử lý.

    👉 Một ví dụ để làm rõ hơn về hoạt động của LR và PC

Core
Ví dụ function call

    ➤ Khi hàm fun1() gọi tới hàm fun2()
  • PC sẽ nhảy đến địa chỉ của hàm fun2()
  • Lúc này LR sẽ chứa địa chỉ của lệnh tiếp theo, tức là lệnh fun1_ins_2; 
  • Và sau khi thực hiện xong hàm fun2() thì PC sẽ lấy giá trị của thanh ghi LR để trỏ đến lệnh tiếp theo (fun1_ins_2) để tiếp tục thực hiện.

    👉 Một số thanh ghi chức năng đặc biệt 

    Một trong những thanh ghi quan trọng của Core là tập thanh ghi xPSR (Program Status Registers), bao gồm 3 thanh ghi:

Core

  • Application Program Status Register (APSR)

    Core

    Thanh ghi APSR chứa tất cả các cờ điều kiện N,Z,C,V,Q phục vụ cho quá trình tính toán của chương trình, chi tiết chức năng của từng cờ có trong hình trên.

  • Interrupt Program Status Register (IPSR) 
    Sử dụng 9 bit LSB để chứa exception của chương trình hiện tại.
    Ví dụ:

    Core

  • Execution Program Status Register (EPSR)
    Bit quan trọng nhất của thanh ghi này là T bit (Bit[24]) dùng để xác định tập lệnh mà Processor đang sử dụng.
    T = 1 : Tập lệnh Thumb ISA
    T = 0 : Tập lệnh ARM ISA
    ARM Cortex Mx chỉ hỗ trợ tập lệnh Thumb vì vậy T bit nên được duy trì là 1.
    Sự khác nhau giữa 2 tập lệnh Thumb và ARM

    Core

>>>= Follow ngay =<<<

Để theo dõi những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

                                        

Đăng nhận xét

0 Nhận xét