Tải bản đầy đủ (.pdf) (22 trang)

Lập trình hệ thống nhúng bùi quốc bảo

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (421.22 KB, 22 trang )

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



×