LẬP TRÌNH HỆ THỐNG
NHÚNG
BÙI QUỐC BẢO
What is ARM?
ARM là từ viết tắt của: Advanced RISC
Machine.
Cấu trúc dựa trên cấu trúc RISC
(Reduced Instruction Set Computer)
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
2
1
RISC Architecture
Cấu trúc RISC ñược ñưa ra nhằm mục ñích:
ðạt tốc ñộ xử lý cao bằng cách:
Giảm số luợng lệnh
Có tập thanh ghi lớn
Xử lý theo dạng load-store
Các mã lệnh có ñộ dài bằng nhau
Sử dụng cấu trúc pipelines
Cấu trúc ñơn giản, cho phép dễ dàng thay ñổi
ñể có tần số hoạt ñộng cao hơn
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
3
The ARM Processor
ðược thiết kế cho các ứng dụng nhúng,
là CPU cho các hệ thống system-on-chip
Hỗ trợ tập lệnh 16 bit và 32 bit
Cấu trúc không thuần túy là RISC.
Vi xử lý ARM ñược bán dưới dạng 1 lõi
IP (intellectual property core)
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
4
2
Main features of ARM Processor
-
-
Tốc ñộ thấp, khoảng vài trăm
Mhz. Tuy nhiên 1 số dòng ARM
mới có thể chạy với tốc ñộ
khoảng 2Ghz
Tập lệnh 32 bit, hỗ trợ tập lệnh
Thumb và Thumb2 (16 bit).
Chỉ có 1 không gian bộ nhớ
Công suất thấp
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
5
ARM Processor families
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
6
3
ARM-cortex M3
Là vi ñiều khiển 32 bit.
Cấu trúc Havard
Công suất thấp.
Chuyên dùng cho các ứng dụng nhúng.
Giá rẻ
ðáp ứng interrupt nhanh (low interrupt
latency).
Chỉ hỗ trợ tập lệnh Thumb-2
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
7
Cấu trúc Von Neumann
Code và data chứa trong cùng không gian ñịa chỉ.
•Chỉ có 1 bus giao tiếp bộ nhớ.
•Tận dụng ñược không gian nhớ.
•Chương trình có thể thiết kế mềm dẻo hơn.
•Data có thể bị chép ñè lên chương trình.
•Bị bottle neck trong quá trình truyền data và dữ liệu
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
8
4
Cấu trúc Harvard
Dùng 2 bus riêng ñể truy cập code và data
Code và data có thể nằm chung trong 1 không gian nhớ
Truy cập code và data cùng lúc
Cho phép ñộ dài code và data khác nhau
Code không bị ghi ñè bởi data
Phần cứng CPU phức tạp hơn
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
9
Pipeline
Cấu trúc pipeline cho phép một lệnh ñược
thực thi trong lúc nạp và giải mã các lệnh
khác.
Với cấu trúc này, một lệnh có thể ñược
thực thi trong 1 chu kỳ clock
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
10
5
ARM Cortex M3 block diagram
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
11
Memory endian
ARMv7-M cho phép chọn endian mode
cho các tác vụ truy cập data.
Các mã lệnh luôn ở dạng little endian
Các lệnh load và store vào không gian
ñiều khiển hệ thống (system control
space) luôn ở dạng little endian
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
12
6
Processor operating mode
Handle mode: Khi CPU chạy 1 chương trình xử
lý exception (ví dụ: trình phục vụ ngắt).
Thread mode: Khi chạy một chương trình bình
thường.
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
13
Privileged access level
Trong chế ñộ truy cập ưu tiên (Privileged
access level), CPU ñược truy cập toàn
bộ tài nguyên hệ thống.
Sau khi reset, CPU sẽ ñi vào trạng thái
này.
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
14
7
User access level
Trong trạng thái này, CPU không ñược
truy cập vào 1 số tài nguyên hệ thống
(VD: thanh ghi cấu hình).
Sử dụng chạy 1 chương trình dưới sự
ñiều khiển của 1 hệ ñiều hành.
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
15
Mode transition
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
16
8
Chương trình với hệ ñiều hành
Hệ ñiều hành chạy ở chế ñộ thread
mode với privileged access level.
Khi một exception (VD: ngắt timer) xảy
ra, hệ ñiều hành ñi vào chế ñộ handle
mode.
Các tác vụ ñược thực thi ở thread mode
với user access level.
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
17
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
18
9
Stack Pointer Register
Thanh ghi R13 ñược sử dụng như là thanh ghi
stack pointer cho tác vụ ñang tích cực.
Bit [1:0] luôn luôn bằng 00
SP_main:
Là thanh ghi SP mặc ñịnh, sử dụng trong handle
mode hoặc trong thread mode khi chương trình
hoặc OS chạy ở chế ñộ Privileged level.
SP_Process:
ðược sử dụng trong thread mode
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
19
PUSH {R0} ; R13=R13-4, then Memory[R13] = R0
POP {R0} ; R0 = Memory[R13], then R13 = R13 + 4
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
20
10
Link Register
Thanh ghi R14 chứa ñịa chỉ quay về khi
lệnh BL (Branch and Link) hay BLX
(Branch and Link with Exchange) ñược
thực thi.
Có thể ñược sử dụng trong các lệnh
quay về từ trình phục vụ ngoại lệ.
Bit thấp nhất luôn luôn bằng 0.
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
21
main ; Main program
…
BL function1 ; Call function1 using Branch with Link
; instruction.
; PC = function1 and
; LR = the next instruction in main
…
function1
…
; Program code for function 1
BX LR
; Return
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
22
11
Program Counter Register
Thanh ghi R15 ñược dùng như Program
Counter.
Bit thấp nhất phải ñược set lên 1 khi 1
lệnh rẽ nhánh ñược thực thi ñể chỉ ra
mode ñang chạy là Thumb mode
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
23
Program Status Registers
ESPR và ISPR là thanh ghi chỉ ñọc. Ta truy cập PSR bằng lệnh MSR:
MRS
MRS
MRS
MSR
r0, APSR ; Read Flag state into R0
r0, IPSR ; Read Exception/Interrupt state
r0, EPSR ; Read Execution state
APSR, r0 ; Write Flag state
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
24
12
Combined Program Status Registers
MRS
MSR
r0, PSR
PSR, r0
; Read the combined program status word
; Write combined program state word
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
25
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
26
13
Mask register
Dùng ñể cấm các exception:
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
MRS
MRS
MRS
MSR
MSR
MSR
27
r0, BASEPRI ; Read BASEPRI register into R0
r0, PRIMASK ; Read PRIMASK register into R0
r0, FAULTMASK ; Read FAULTMASK register
;into R0
BASEPRI, r0 ; Write R0 into BASEPRI register
PRIMASK, r0 ; Write R0 into PRIMASK register
FAULTMASK, r0 ; Write R0 into FAULTMASK
;register
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
28
14
Thanh ghi ñiều khiển (CONTROL)
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
29
Bit CONTROL[1]
Luôn bằng 0 ở handle mode
Trong thread mode, nó có thể bằng 0
hay 1
Chỉ có thể ghi khi CPU ở Thread mode
và privileged state
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
30
15
Bit CONTROL[0]
Chỉ có thể ghi khi CPU ở privileged state
MRS
MSR
r0, CONTROL ; Read CONTROL
;register into R0
CONTROL, r0 ; Write R0 into
;CONTROL register
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
31
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
32
Exception
16
Exception
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
33
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
34
Exception
17
Vector table
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
35
Vector table
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
36
18
Vector table
EXPORT __Vectors
__Vectors
DCD StackMem + Stack
; Top of Stack
DCD Reset_Handler
; Reset Handler
DCD NmiSR
; NMI Handler
DCD
FaultISR
; Hard Fault Handler
DCD IntDefaultHandler
; MPU Fault Handler
DCD IntDefaultHandler
; Bus Fault Handler
DCD IntDefaultHandler
; Usage Fault Handler
DCD
0
; Reserved
DCD
0
; Reserved
DCD
0
; Reserved
DCD
0
; Reserved
DCD IntDefaultHandler
; SVCall Handler
DCD IntDefaultHandler
; Debug Monitor Handler
DCD
0
; Reserved
DCD IntDefaultHandler
; PendSV Handler
DCD SysTickHandler
; SysTick Handler
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
37
Vector table
IntDefaultHandler
B
IntDefaultHandler
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
38
19
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
39
Exception with CONTROL[1]=0
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
40
20
Exception with CONTROL[1]=1
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
41
Reset sequence
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
42
21
Reset sequence
BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM
43
22