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

Nghiên cứu, triển khai môi trường phát triển hệ thống nhúng trong bài toán điều khiển nhà kính

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 (1.48 MB, 102 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

LUẬN VĂN THẠC SĨ KHOA HỌC
NGÀNH: CÔNG NGHỆ THÔNG TIN

NGHIÊN CỨU, TRIỂN KHAI MÔI TRƯỜNG
PHÁT TRIỂN HỆ THỐNG NHÚNG TRONG BÀI TOÁN
ĐIỀU KHIỂN NHÀ KÍNH

TRỊNH THỊ PHÚ

Người hướng dẫn khoa học: TS. CAO TUẤN DŨNG

HÀ NỘI 2010


1

LỜI CAM ĐOAN
Tôi xin cam đoan luận văn “Nghiên cứu, triển khai môi trường phát triển hệ
thống nhúng” là do tôi thực hiện dưới sự hướng dẫn của TS. Cao Tuấn Dũng –
Khoa Công nghệ thông tin, trường Đại học Bách khoa Hà Nội. Mọi trích dẫn và
tài liệu tham khảo được sử dụng trong luận văn đều được tôi chỉ rõ nguồn gốc.
Tôi xin hoàn toàn chịu trách nhiệm về lời cam đoan trên.
Hà Nội, ngày 2 tháng 4 năm 2010
Tác giả luận văn

Trịnh Thị Phú

Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của luận văn tốt nghiệp


và cho phép bảo vệ.
Hà Nội, ngày tháng 4 năm 2010
Giáo viên hướng dẫn

TS. Cao Tuấn Dũng


2

MỤC LỤC
LỜI CAM ĐOAN......................................................................................................1
MỤC LỤC ................................................................................................................2
DANH MỤC CÁC TỪ VIẾT TẮT.............................................................................4
DANH MỤC BẢNG BIỂU .......................................................................................5
DANH MỤC HÌNH VẼ ............................................................................................6
MỞ ĐẦU ..................................................................................................................8
CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHÚNG ...........................................10
1.1. Hệ thống nhúng (Embedded System) ...............................................................10
1.1.1. Khái niệm ..................................................................................................10
1.1.2. Các ví dụ ...................................................................................................11
1.1.3. Đặc điểm của hệ nhúng ..................................................................................12
1.1.4. Tổng quan về kiến trúc phần mềm ....................................................................16

1.2. Hệ thống thời gian thực (Real-Time Systems) ...................................................18
1.2.1. Khái niệm ..................................................................................................18
1.2.2. Các đặc điểm của hệ thống thời gian thực ...........................................................19
1.2.3. Các dạng của hệ thống thời gian thực .................................................................20
1.2.4. Xử lý thời gian thực ......................................................................................22
1.2.5. Ứng dụng ..................................................................................................23


1.3. Thiết kế và phát triển ứng dụng cho hệ thống nhúng .........................................24
1.3.1. Thiết kế hệ thống nhúng.................................................................................24
1.3.2. Phần mềm nhúng .........................................................................................27
1.3.3. Các công cụ phát triển phần mềm nhúng .............................................................33
1.3.4. Các kỹ thuật gỡ rối .......................................................................................33

1.4. Xu hướng phát triển của các hệ nhúng .............................................................34
1.5. Những thách thức và các vấn đề tồn tại của các hệ nhúng ..................................34
1.5. Kết chương....................................................................................................35

CHƯƠNG 2: VI ĐIỀU KHIỂN AVR ......................................................................37
2.1. Vi điều khiển .................................................................................................37
2.2. Kiến trúc của vi điều khiển AVR .....................................................................38
2.2.1. Tổ chức của AVR ........................................................................................40
2.2.2. Hoạt động của AVR .....................................................................................44
2.2.3. Thanh ghi trạng thái – SREG (STATUS REGISTER) .............................................46

2.3. Bộ truyền nhận dữ liệu nối tiếp USART ...........................................................47
2.3.1. Truyền thông nối tiếp ....................................................................................48
2.3.2. Truyền thông nối tiếp không đồng bộ với AVR (UART) .........................................51


3

2.4. Chuyển đổi ADC trên AVR.............................................................................59
2.4.1. Chuyển đổi dữ liệu tương tự (analog) sang dữ liệu số (digital)...................................59
2.4.2. Chuyển đổi ADC trên AVR ............................................................................60

2.5. Quy trình thiết kế một mạch ứng dụng dùng vi điều khiển .................................66
2.6. Các công cụ dùng với AVR .............................................................................68

2.6.1. Trình biên dịch: ...........................................................................................68
2.6.2. Chương trình nạp (Chip Programmer) ................................................................69
2.6.3. Mạch nạp...................................................................................................70
2.6.4. Phần mềm mô phỏng ....................................................................................70
2.6.4. Giao tiếp với máy tính ...................................................................................72

2.7. Kết chương....................................................................................................73

CHƯƠNG 3: ĐIỀU KHIỂN MÔI TRƯỜNG CHO .................................................75
NHÀ KÍNH ............................................................................................................75
3.1. Tổng quan về môi trường nhà kính ..................................................................75
3.1.1. Vai trò của nhà kính trong sản xuất nông nghiệp ...................................................75
3.1.2. Công nghệ nhà kính trong thực tế .....................................................................75
3.1.3. Nhiệt độ nhà kính.........................................................................................76

3.2. Điều khiển môi trường cho nhà kính ................................................................78
3.2.1. Mô tả bài toán .............................................................................................78
3.2.2. Kiến trúc hệ thống điều khiển nhà kính...............................................................78
3.2.2. Ghép nối các thiết bị cảm biến trong hệ thống với vi điều khiển.................................80
3.2.3. Ghép nối với các thiết bị điều khiển...................................................................83

3.3. Điều khiển nhiệt độ môi trường nhà kính .........................................................84
3.3.1. Các khối chức năng trong vi điều khiển ..............................................................88
3.3.3. Giao tiếp giữa PC và vi điều khiển ....................................................................91

3.4. Kết chương....................................................................................................95

KẾT LUẬN ............................................................................................................97
TÀI LIỆU THAM KHẢO .......................................................................................99



4

DANH MỤC CÁC TỪ VIẾT TẮT
STT

Từ viết tắt

1

ADC

Analog to Digital
Converter

Bộ chuyển đổi tương tự - số

2

BCD

Binary Coded Decimal

Thập phân được mã hóa nhị
phân

3

CPU


Central Processing Unit

Đơn vị xử lý trung tâm

4

DAC

Digital to Analog
Converter

Bộ biến đổi số sang tương tự

5

EEPROM

Electrically Erase and
Programmable Read
Only Memory

Bộ nhớ ROM có thể lập trình và
xóa

6

EPROM

Electrically
Programmable Read

Only Memory

Bộ nhớ ROM có thể lập trình

7

I/O

Input/Output

Vào/ra hoặc nhập/xuất

8

ISR

Interrupt SubRoutine

Đoạn chương trình xử lý ngắt

9

RAM

Random Access
Memory

Bộ nhớ dùng để đọc

10


Thuật ngữ Tiếng Anh

Thuật ngữ Tiếng Việt

Một tiêu chuẩn quy định giao
thức truyền dữ liệu nối tiệp,
không đồng bộ

RS232
Universal
Asynchrounous
Receiver Transmitter

Bộ truyền nhận không đồng bộ

11

UART

12

HW

Hardware

Phần cứng

13


SW

Software

Phần mềm

14


5

DANH MỤC BẢNG BIỂU
Bảng 2.1: Chọn kiểm tra parity. ............................................................................... 55
Bảng 2.2: Độ dài dữ liệu truyền. .............................................................................. 56
Bảng 2.3: Tính tốc độ baud. ..................................................................................... 57
Bảng 2.4: Một số tốc độ baud mẫu........................................................................... 58
Bảng 2.5: Chọn điện áp tham chiếu ......................................................................... 62
Bảng 2.4: Hệ số chia xung nhịp cho ADC. .............................................................. 65
Bảng 2.5: Nguồn kích ADC trong chế độ Auto Trigger. ......................................... 66


6

DANH MỤC HÌNH VẼ
Hình 1.1: Cấu trúc của các hệ thống thời gian thực.............................................18
Hình 2.1: Cấu trúc bộ nhớ của AVR....................................................................40
Hình 2.2: Thanh ghi 8 bits. ..................................................................................41
Hình 2.3: Register file. .........................................................................................43
Hình 2.4. Cấu trúc bên trong AVR ......................................................................45
Hình 2.5. Thanh ghi trạng thái .............................................................................46

Hình 2.6. Truyền 8 bit theo phương pháp song song và nối tiếp.........................49
Hình 2.7: Thanh ghi UDR....................................................................................52
Hình 2.8: Thanh ghi UCSRA...............................................................................53
Hình 2.9: Thanh ghi UCSRB...............................................................................53
Hình 2.10: Thanh ghi UCSRC .............................................................................55
Hình 2.11: Tạo nguồn AVCC từ VCC.................................................................61
Hình 2.12: Thanh ghi ADMUX ...........................................................................62
Hình 2.13: Thanh ghi ADCSRA ..........................................................................64
Hình 2.14: Một hệ thống phát triển dựa trên vi điều khiển..................................68
Hình 2.15: Giao diện chương trình CodevisionAVR...........................................69
Hình 2.16: Giao diện phần mềm mô phỏng Proteus............................................71
Hình 2.17: Giao diện phần mềm Virtual Serial Port Driver. ...............................71
Hình 2.18: Giao diện của phần mềm LabVIEW..................................................73
Hình 3.1. Mô tả hệ thống nhà kính ......................................................................79
Hình 3.2: Cảm biến nhiệt độ LM35. ....................................................................82
Hình 3.3: Cảm biến độ ẩm SHT10.......................................................................82
Hình 3.4: Mạch mô phỏng việc điều khiển thông số nhiệt độ, đồng thời gửi giá
trị này lên PC. ...............................................................................................86
Hình 3.5: Ghép nối cảm biến nhiệt độ với vi điều khiển. ....................................87
Hình 3.6: Ghép nối vi điều khiển với các thiết bị mô phỏng đầu ra. ...................87
Hình 3.7: Ghép nối vi điều khiển với cổng COM................................................88
Hình 3.8. Giao diện chương trình giao tiếp giữa PC và vi điều khiển.................92
Hình 3.9: Khối chương trình trong LabVIEW.....................................................93


7

Hình 3.10: Khối khai báo các thông số giao tiếp cổng COM trong LabVIEW...93
Hình 3.11: Khối đọc dữ liệu và hiển thị lên đồ thị...............................................94
Hình 3.12: Kết quả thực hiện giao tiếp giữa PC và vi điều khiển .......................95



8

MỞ ĐẦU
Xã hội càng phát triển, công nghệ thông tin càng giữ vị trí quan trọng
trong đời sống và kỹ thuật. Cùng với xu hướng phát triển của công nghệ thông
tin, việc xây dựng các hệ thống điều khiển trở thành một vấn đề tất yếu, một nhu
cầu cấp thiết, đặc biệt đối với những ứng dụng là các hệ thống phục vụ đời sống.
Nước ta là một nước nông nghiệp nên vai trò của nông nghiệp có ý nghĩa
vô cùng quan trọng trong việc làm tiền đề để thúc đẩy nền công nghiệp hóa, hiện
đại hóa phát triển. Ngược lại công nghiệp hóa, hiện đại hóa sẽ làm thay đổi cách
thức lao động và trang thiết bị máy móc trong nông nghiệp, để cho ra xã hội
những sản phẩm nông nghiệp phong phú, đa dạng và đảm bảo chất lượng. Khó
khăn lớn nhất của ngành nông nghiệp nước ta là thời thiết thất thường, các sản
phẩm nông nghiệp không được bảo vệ trước yếu tố thiên nhiên. Vì vậy mô hình
nhà kính, nhà lưới được áp dụng trong nông nghiệp để nâng cao sản lượng và
chất lượng của các sản phẩm nông nghiệp, giúp vượt qua các trở ngại về mặt khí
hậu. Một trong những mục đích chính của nhà kính là kiểm soát được các thông
số như nhiệt độ, độ ẩm, ánh sáng,... cho phù hợp với yêu cầu sinh trưởng của cây
trồng. Để kiểm soát được các thông số này một cách tự động hoặc bán tự động
cần có sự can thiệp của các thiết bị điện tử.
Với mục đích nghiên cứu, triển khai môi trường phát triển hệ thống nhúng
tác giả lựa chọn đề tài này với mong muốn có một cái nhìn tổng quan về việc
phát triển hệ thống nhúng và bước đầu thực hiện triển khai áp dụng cho việc điều
khiển các thông số cho môi trường nhà kính.
Luận văn được trình bày trong ba chương với nội dung mỗi chương như
sau:
Chương 1 Trình bày các nội dung tìm hiểu về hệ thống nhúng, hệ thống
thời gian thực, phần mềm nhúng, các vấn đề về thiết kế và phát triển hệ thống

nhúng, những khác biệt so với vấn đề thiết kế và phát triển ứng dụng.


9

Tiếp theo, Chương 2 Trình bày cấu trúc tổng quát về vi điều khiển AVR,
là một họ vi điều khiển do hãng Atmel sản xuất. AVR là chip vi điều khiển 8 bits
với cấu trúc tập lệnh đơn giản hóa – RISC (Reduced Instruction Set Computer),
một kiểu cấu trúc đang thể hiện ưu thế trong các bộ xử lí. Đồng thời giới thiệu
một số công cụ để làm việc với vi điều khiển.
Trong Chương 3, Trình bày tổng quan về môi trường nhà kính và việc
điều khiển các thông số cho môi trường nhà kính có thể áp dụng trong mô hình
thực nghiệm đối với việc nuôi trồng các cây nông nghiệp. Một số kết quả đạt
được trng việc điều khiển thông số nhiệt độ của môi trường nhà kính.
Tôi xin trân trọng cảm ơn Viện Đào tạo Sau đại học - Trường Đại học
Bách Khoa Hà Nội, các thầy cô giáo, cùng toàn thể các bạn đồng nghiệp. Đặc
biệt tôi xin chân thành cảm ơn PGS. TS. Nguyễn Ngọc Bình, TS. Cao Tuấn
Dũng người đã trực tiếp hướng dẫn và cho tôi những ý kiến quý báu để tôi có thể
hoàn thành luận văn này.
Chắc chắn, luận văn còn có những thiếu sót trong nội dung cũng như
trong trình bày. Tác giả của luận văn rất mong nhận được sự đóng góp ý kiến của
các thầy cô giáo và của các anh, chị học viên.


10

CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHÚNG

1.1. Hệ thống nhúng (Embedded System)
1.1.1. Khái niệm

Chúng ta có thể hiểu hệ thống nhúng là một phần hệ thống xử lý thông
minh nằm trong sản phẩm, tạo thành một phần của hệ thống lớn hơn và thực hiện
một số chức năng của hệ thống. Nói một cách đơn giản khi một hệ tính toán được
nhúng vào trong một sản phẩm hay một hệ thống một cách hữu cơ và thực hiện
một số chức năng cụ thể của hệ thống thì ta gọi đó là một hệ thống nhúng [1].
Hệ thống nhúng thường được thiết kế để thực hiện một chức năng chuyên
biệt nào đó. Khác với các máy tính đa chức năng, chẳng hạn như máy tính cá
nhân, một hệ thống nhúng chỉ thực hiện một hoặc một vài chức năng nhất định,
thường đi kèm với những yêu cầu cụ thể và bao gồm một số thiết bị máy móc và
phần cứng chuyên dụng mà ta không tìm thấy trong một máy tính đa năng nói
chung. Vì hệ thống chỉ được xây dựng cho một số nhiệm vụ nhất định nên các
nhà thiết kế có thể tối ưu hóa nó nhằm giảm thiểu kích thước và chi phí sản xuất.
Các hệ thống nhúng thường được sản xuất hàng loạt với số lượng lớn. Hệ thống
nhúng rất đa dạng, phong phú về chủng loại. Đó có thể là những thiết bị cầm tay
nhỏ gọn như đồng hồ kĩ thuật số và máy chơi nhạc MP3, hoặc những sản phẩm
lớn như đèn giao thông, bộ kiểm soát trong nhà máy hoặc hệ thống kiểm soát các
máy năng lượng hạt nhân. Xét về độ phức tạp, hệ thống nhúng có thể rất đơn
giản với một vi điều khiển hoặc rất phức tạp với nhiều đơn vị, các thiết bị ngoại
vi và mạng lưới được nằm gọn trong một lớp vỏ máy lớn.
Các hệ nhúng được tích hợp trong các thiết bị đo lường điều khiển và các
sản phẩm cơ điện tử tạo nên đầu não và linh hồn của sản phẩm.
Trong các hệ nhúng, hệ thống điều khiển nhúng đóng một vai trò hết sức
quan trọng.


11

Hệ điều khiển nhúng là hệ thống mà máy tính được nhúng vào vòng điều
khiển của sản phẩm nhằm điều khiển một đối tượng, điều khiển một qúa trình
công nghệ đáp ứng các yêu cầu đặt ra. Hệ thống điều khiển nhúng lấy thông tin

từ các cảm biến, xử lý tính toán các thuật điều khiển và phát tín hiệu điều khiển
cho các cơ cấu chấp hành.
1.1.2. Các ví dụ
Ngày nay hệ thống nhúng đã trở thành một khuynh hướng giải pháp được
áp dụng rộng rãi trong công nghệ kỹ thuật, kết hợp toàn diện cả phần cứng và
phần mềm. Trong mỗi hệ nhúng đều có những phần mang tính đặc trưng và
riêng biệt về thiết kế phần cứng và phần mềm. Sự khác biệt này là kết quả của sự
thỏa hiệp về giải pháp thiết kế nhằm ưu tiên thỏa mãn các yêu cầu và thực hiện
chức năng cụ thể của hệ nhúng.
Các hệ thống nhúng điển hình
Không gian vũ trụ

Các hệ thống hàng hải, các hệ thống tiếp đất tự động,
điều khiển bay, điều khiển động cơ, thám hiểm không
gian…

Máy móc tự động

Điều khiển phun nhiên liệu, điều khiển môi trường
hành khách, các hệ thống kiểm tra khóa, điều khiển túi
khí, sắp xếp GPS,…

Các

phương

tiện Vệ tinh nhân tạo, network router, các switch, các

truyền thông


hub,…

Các thiết bị ngoại vi

Máy in, máy quét, bàn phím, màn hình, modem, các ổ
đĩa cứng, các ổ đĩa CD-ROM

Các thiết bị trong gia Máy giặt, lò vi sóng, tivi, VCRs, stereo, các hệ thống
đình

báo cháy/báo trộm, điều khiển máy tưới cỏ, máy điều
nhiệt, clock radio, máy trả lời tự động,…

Trong công nghiệp

Điều khiển thang máy, các hệ thống giám sát, robots,…

Trong nông nghiệp

Nhà kính vi tính hóa,…


12

Thiết bị đo đạc

Tập hợp dữ liệu, máy hiện sóng, máy phát tín hiệu,
máy phân tích tín hiệu, cung cấp năng lượng,..

Trong y tế


Các hệ thống ảnh hóa (như XRAY, MRI và siêu âm),
các máy theo dõi bệnh nhân, đo nhịp tim,…

Các thiết bị văn phòng Máy FAX, máy copy, điện thoại, máy chấm công,…
Thiết bị cá nhân

Personal Digital Assistants (PDAs), pagers, cell
phones, wrist watches, video games, portable MP3
players, GPS,…

1.1.3. Đặc điểm của hệ nhúng
Các hệ nhúng là những hệ kết hợp phần cứng và phần mềm một cách tối
ưu. Một số đặc trưng cơ bản của hệ nhúng ngoài tính chuyên dụng nó còn bị ràng
buộc về hoạt động trong chế độ thời gian thực, hạn chế về bộ nhớ, năng lượng và
giá thành mà lại đòi hỏi hoạt động tin cậy và tiêu tốn ít năng lượng.
Hệ thống nhúng thường có một số đặc điểm chung như sau:
• Các hệ thống nhúng được thiết kế để thực hiện một số nhiệm vụ
chuyên dụng chứ không phải đóng vai trò là các hệ thống máy tính đa
chức năng. Một số hệ thống đòi hỏi ràng buộc về tính hoạt động thời gian
thực để đảm bảo độ an toàn và tính ứng dụng; một số hệ thống không đòi
hỏi hoặc ràng buộc chặt chẽ, cho phép đơn giản hóa hệ thống phần cứng
để giảm thiểu chi phí sản xuất.
• Một hệ thống nhúng thường không phải là một khối riêng biệt mà là
một hệ thống phức tạp nằm trong thiết bị mà nó điều khiển.
• Phần mềm được viết cho các hệ thống nhúng được lưu trữ trong các
chip bộ nhớ chỉ đọc (read-only memory) hoặc bộ nhớ flash chứ không phải
là trong một ổ đĩa. Phần mềm thường chạy với số tài nguyên phần cứng
hạn chế: không có bàn phím, màn hình hoặc có nhưng với kích thước nhỏ,
bộ nhớ hạn chế.

Một hệ thống nhúng cần có một bộ xử lý và bộ nhớ. Hầu hết các hệ thống
nhúng không có các phần sau:


13

- Bàn phím (keyboard). Một vài hệ thống có thể có một ít nút bấm cho
người sử dụng.
- Màn hình (screen). Nhiều hệ thống, đặc biệt trong các sản phẩm người
tiêu dùng, có một màn hình tinh thể lỏng hiển thị các thông số giúp người
sử dụng theo dõi dễ dàng hơn.
- Ổ đĩa (disk drive). Chương trình được lưu trữ trong bộ nhớ, và hầu hết
các hệ thống nhúng không cần thiết phải lưu trữ nhiều dữ liệu một cách cố
định.
Tiếp theo, ta sẽ xem xét cụ thể đặc điểm của các thành phần của hệ thống
nhúng.
1.1.3.1. Giao diện
Các hệ thống nhúng có thể không có giao diện (đối với những hệ thống
đơn nhiệm) hoặc có đầy đủ giao diện giao tiếp với người dùng tương tự như các
hệ điều hành trong các thiết bị để bàn. Đối với các hệ thống đơn giản, thiết bị
nhúng sử dụng nút bấm, đèn LED và hiển thị chữ cỡ nhỏ hoặc chỉ hiển thị số,
thường đi kèm với một hệ thống menu đơn giản [5].
Còn trong một hệ thống phức tạp hơn, một màn hình đồ họa, cảm ứng
hoặc có các nút bấm ở lề màn hình cho phép thực hiện các thao tác phức tạp mà
tối thiểu hóa được khoảng không gian cần sử dụng; ý nghĩa của các nút bấm có
thể thay đổi theo màn hình và các lựa chọn. Các hệ thống nhúng thường có một
màn hình với một nút bấm dạng cần điểu khiển (joystick button). Sự phát triển
mạnh mẽ của mạng internet đã mang đến cho những nhà thiết kế hệ nhúng một
lựa chọn mới là sử dụng một giao diện web thông qua việc kết nối mạng. Điều
này có thể giúp tránh được chi phí cho những màn hình phức tạp nhưng đồng

thời vẫn cung cấp khả năng hiển thị và nhập liệu phức tạp khi cần đến, thông qua
một máy tính khác. Điều này là hết sức hữu dụng đối với các thiết bị điều khiển
từ xa, cài đặt vĩnh viễn.


14

1.1.3.2. Kiến trúc CPU
Các bộ xử lý trong hệ thống nhúng có thể được chia thành hai loại: vi xử
lý và vi điều khiển. Các vi điều khiển thường có các thiết bị ngoại vi được tích
hợp trên chip nhằm giảm kích thước của hệ thống. Có rất nhiều loại kiến trúc
CPU được sử dụng trong thiết kế hệ nhúng như ARM, MIPS, Coldfire/68k,
PowerPC, x86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R,
Z80, Z8 … Điều này trái ngược với các loại máy tính để bàn, thường bị hạn chế
với một vài kiến trúc máy tính nhất định. Các hệ thống nhúng có kích thước nhỏ
và được thiết kế để hoạt động trong môi trường công nghiệp thường lựa chọn
PC/104 và PC/104++ làm nền tảng. Những hệ thống này thường sử dụng DOS,
Linux, NetBSD hoặc các hệ điều hành nhúng thời gian thực như QNX hay
VxWorks. Còn các hệ thống nhúng có kích thước rất lớn thường sử dụng một cấu
hình thông dụng là hệ thống on chip (System on a chip – SoC), một bảng mạch
tích hợp cho một ứng dụng cụ thể (an application-specific integrated circuit –
ASIC). Sau đó nhân CPU được mua và thêm vào như một phần của thiết kế chip.
Một chiến lược tương tự là sử dụng FPGA (field-programmable gate array) và
lập trình cho nó với những thành phần nguyên lý thiết kế bao gồm cả CPU [5].
1.1.3.3. Thiết bị ngoại vi
Hệ thống nhúng giao tiếp với bên ngoài thông qua các thiết bị ngoại vi, ví
dụ như:
• Serial Communication Interfaces (SCI): RS-232, RS-422, RS-485...
• Synchronous Serial Communication Interface: I2C, JTAG, SPI, SSC
và ESSI

• Universal Serial Bus (USB)
• Networks: Controller Area Network, LonWorks...
• Bộ định thời: PLL(s), Capture/Compare và Time Processing Units
• Discrete IO: General Purpose Input/Output (GPIO)


15

1.1.3.4. Công cụ phát triển
Tương tự như các sản phẩm phần mềm khác, phần mềm hệ thống nhúng
cũng được phát triển nhờ việc sử dụng các trình biên dịch (compilers), chương
trình dịch hợp ngữ (assembler) hoặc các công cụ gỡ rối (debuggers). Tuy nhiên,
các nhà thiết kế hệ thống nhúng có thể sử dụng một số công cụ chuyên dụng như:
• Bộ gỡ rối mạch hoặc các chương trình mô phỏng (emulator)
• Tiện ích để thêm các giá trị checksum hoặc CRC vào chương trình,
giúp hệ thống nhúng có thể kiểm tra tính hợp lệ của chương trình đó.
• Đối với các hệ thống xử lý tín hiệu số, người phát triển hệ thống có thể
sử dụng phần mềm workbench như MathCad hoặc Mathematica để mô
phỏng các phép toán.
• Các trình biên dịch và trình liên kết (linker) chuyên dụng được sử dụng
để tối ưu hóa một thiết bị phần cứng.
• Một hệ thống nhúng có thể có ngôn ngữ lập trình và công cụ thiết kế
riêng của nó hoặc sử dụng và cải tiến từ một ngôn ngữ đã có sẵn.
Các công cụ phần mềm có thể được tạo ra bởi các công ty phần mềm
chuyên dụng về hệ thống nhúng hoặc chuyển đổi từ các công cụ phát triển phần
mềm GNU. Đôi khi, các công cụ phát triển dành cho máy tính cá nhân cũng được
sử dụng nếu bộ xử lý của hệ thống nhúng đó gần giống với bộ xử lý của một máy
PC thông dụng.
1.3.5. Độ tin cậy
Các hệ thống nhúng thường nằm trong các cỗ máy được kỳ vọng là sẽ

chạy hàng năm trời liên tục mà không bị lỗi hoặc có thể khôi phục hệ thống khi
gặp lỗi. Vì thế, các phần mềm hệ thống nhúng được phát triển và kiểm thử một
cách cẩn thận hơn là phần mềm cho máy tính cá nhân. Ngoài ra, các thiết bị rời
không đáng tin cậy như ổ đĩa, công tắc hoặc nút bấm thường bị hạn chế sử dụng.
Việc khôi phục hệ thống khi gặp lỗi có thể được thực hiện bằng cách sử dụng các


16

kỹ thuật như watchdog timer – nếu phần mềm không đều đặn nhận được các tín
hiệu watchdog định kì thì hệ thống sẽ bị khởi động lại.
Một số vấn đề cụ thể về độ tin cậy như:
• Hệ thống không thể ngừng để sửa chữa một cách an toàn, ví dụ như ở
các hệ thống không gian, hệ thống dây cáp dưới đáy biển, các đèn hiệu dẫn
đường,… Giải pháp đưa ra là chuyển sang sử dụng các hệ thống con dự trữ
hoặc các phần mềm cung cấp một phần chức năng.
• Hệ thống phải được chạy liên tục vì tính an toàn, ví dụ như các thiết bị
dẫn đường máy bay, thiết bị kiểm soát độ an toàn trong các nhà máy hóa
chất,… Giải pháp đưa ra là lựa chọn backup hệ thống.
• Nếu hệ thống ngừng hoạt động sẽ gây tổn thất rất nhiều tiền của ví dụ
như các dịch vụ buôn bán tự động, hệ thống chuyển tiền, hệ thống kiểm
soát trong các nhà máy …
1.1.4. Tổng quan về kiến trúc phần mềm
Yếu tố quan trọng nhất để xác định kiểu kiến trúc thích hợp nhất cho mỗi
hệ thống được đưa ra là cách điều khiển cần phải có để đáp ứng trên hệ thống.
Đạt được đáp ứng tốt là khó, phụ thuộc vào không chỉ đáp ứng tuyệt đối các yêu
cầu thời gian mà còn phụ thuộc vào tốc độ của bộ vi xử lý và các yêu cầu xử lý
khác. Một hệ thống ít thực hiện các yêu cầu đáp ứng thời gian của nó và đặc biệt
không chặt chẽ có thể được viết với một kiến trúc rất đơn giản. Một hệ thống
phải đáp ứng nhanh chóng nhiều sự kiện khác nhau và có nhiều yêu cầu xử lý

khác nhau, tất cả các giới hạn và các mức ưu tiên khác nhau, sẽ đòi hỏi một kiến
trúc phức tạp hơn.
Ở đây có 4 kiến trúc:
• Round-Robin:

Kiến trúc Round-Robin chỉ có duy nhất một ưu điểm

so với các kiến trúc khác là đơn giản, trong khi có một số vấn đề làm cho
nó không thích hợp với nhiều hệ thống.


17

Kiến trúc Round-Robin chỉ có thể thích hợp cho các thiết bị rất đơn
giản như đồng hồ số và các lò vi sóng và không thể thích hợp cho các hệ
thống khác.
• Round-Robin với các ngắt (Round-Robin-with-Interrupts): thiếu sót
cơ bản của kiểu kiến trúc này là tất cả các mã lệnh tác vụ thực thi ở cùng
một mức ưu tiên (nhưng hơn kiến trúc Round-Robin là không đơn giản
quá)
• Function-queue-scheduling: Kiến trúc function-queue-scheduling là
một kiến trúc cũng không phức tạp hơn nhiều.
• Hệ điều hành thời gian thực (real-time operating): Sự khác nhau giữa
hệ điều hành thời gian thực và các hệ thống trước là:
- Việc cần thiết báo hiệu giữa các trình ngắt và các mã lệnh
tác vụ được xử lý bằng hệ điều hành thời gian thực.
- Không lặp trong mã lệnh quyết định cần phải thực hiện
tiếp theo. Mã lệnh bên trong hệ điều hành thời gian thực quyết định
kiểu hàm mã lệnh tác vụ nên thực hiện. Hệ điều hành thời gian thực
biết về nhiều trình con mã lệnh-tác vụ khác nhau và sẽ thực hiện

bất kỳ một trình con khẩn cấp nhất trong số chúng tại thời điểm đã
đưa ra.
- Hệ điều hành thời gian thực có thể hoãn một trình con mã
lệnh tác vụ ở giữa tiến trình xử lý của nó để thực hiện một trình con
khác.
Nhược điểm chính của kiến trúc hệ điều hành thời gian thực
là bản thân hệ điều hành thời gian thực sử dụng một lượng thời
gian xử lý nhất định. Sẽ thu được đáp ứng tốt hơn nếu chịu phí tổn
về thông lượng.


18

1.2. Hệ thống thời gian thực (Real-Time Systems)
1.2.1. Khái niệm
Một hệ thống thời gian thực có đặc điểm sau:
Thực hiện được một hoặc một số nhiệm vụ (task) trong một thời gian qui
định. Đảm bảo được dù có bất kỳ điều gì xảy ra đối với hệ thống thì số nhiệm vụ
trên vẫn hoàn thành trong đúng thời gian đó. Cần nhớ hệ RTS gồm: Phần mềm
RT (real-time software hoặc real-time module hay RT toolkit) và Phần cứng RT
(real-time hardware) [5].
Một ví dụ kinh điển về một RTS: túi khí (airbag) trên xe hơi là một RTS.
Vì khi có cảm biến tai nạn được kích hoạt. Túi khí sẽ được bung ra trong một
khoảng thời gian rất ngắn (được định trước bởi kỹ sư lập trình). Giả sử nếu túi
khí không là một RTS thì tài xế sẽ chết trước khi túi khí bung. Ví dụ khác về
RTS là bộ điều khiển đánh lửa trong động cơ xăng. Tia lửa cần được điều khiển
chính xác ở chu kỳ đốt (tức sau khi chu kỳ hút đã hút hỗn hợp ký và xăng vào
rồi, tới chu kỳ nén, nén hòa khí xăng-khí lên áp xuất cáo, thì tia lửa mới được
phát ra bởi bộ điều khiển RTS). Nếu không đúng thời điểm này thì động cơ sẽ
không hoạt động được hoặc hoạt động với hiệu suất rất thấp.

Như vậy chúng ta có thể xem, hệ thống thời gian thực là một hệ thống mà
sự hoạt động tin cậy của nó không chỉ phụ thuộc vào sự chính xác của kết quả,
mà còn phụ thuộc vào thời điểm đưa ra kết quả, hệ thống có lỗi khi yêu cầu về
thời gian không được thoả mãn.

Hình 1.1: Cấu trúc của các hệ thống thời gian thực


19

Như vậy, vấn đề của lập trình thời gian thực chính là việc thiết kế hệ
thống sao cho nó có thể tiếp nhận một cách chính xác các ràng buộc về mặt thời
gian trong suốt quá trình các sự kiện ngẫu nhiên và không đồng bộ xảy ra.
1.2.2. Các đặc điểm của hệ thống thời gian thực
Một hệ thống thời gian thực có các đặc trưng tiêu biểu sau:
• Ràng buộc thời gian (timing constrainst): Đặc trưng đầu tiên của hệ thống
thời gian thực là ràng buộc thời gian hay tính phản ứng nhanh. Hệ thống
phải xử lý thông tin một cách nhanh chóng để có thể đưa ra kết quả một
cách kịp thời. Một chương trình không những phải đưa ra kết quả tính
toán đúng mà còn phải đưa ra kết quả đúng thời gian. Hay nói một cách
khác, tính đúng đắn của một chương trình không chỉ phụ thuộc vào kết
quả tính toán logic mà còn phụ thuộc vào thời gian mà kết quả này được
sinh ra. Tổng quát hơn, phần mềm thời gian thực phải thỏa mãn các khẳng
định (assertion) thời gian, khẳng định này bao gồm cả quan hệ đối với thời
gian tuyệt đối và thời gian tương đối. Cách xác nhận đơn giản nhất và phổ
biến nhất là một mốc tới hạn (thời hạn) - giới hạn về thời gian tương đối
hoặc tuyệt đối mà một tính toán phải hoàn thành.
• Tính bị động: Hệ thống phải phản ứng với các sự kiện xuất hiện vào các
thời điểm thường không biết trước. Ví dụ, sự vượt ngưỡng của một giá trị
đo, sự thay đổi trạng thái của một thiết bị quá trình phải dẫn đến các phản

ứng trong bộ điều khiển.
• Tính đồng thời (conccurency): Hệ thống phải có khả năng phản ứng và xử
lý đồng thời nhiều sự kiện diễn ra. Có thể, cùng một lúc một bộ điều khiển
được yêu cầu thực hiện nhiều vòng điều chỉnh, giám sát ngưỡng giá trị
nhiều đầu vào, cảnh giới trạng thái làm việc của một số động cơ. Đa số
các hệ thống thời gian thực thực hiện một hoặc một tập nhỏ các nhiệm vụ
mức cao. Sự thực thi các nhiệm vụ mức cao này yêu cầu đồng thời nhiều
hoạt động mức thấp hơn. Và đây được gọi là tính đồng thời, các hệ thống


20

máy tính sử dụng tính đồng thời để cải thiện thực thi và điều này hoàn
toàn có thể thực hiện được trong cả các hệ thống đơn và đa bộ xử lý. Các
hệ thống gồm một bộ xử lý chỉ có thể thực hiện được một công việc tại
một thời điểm, chúng thực hiện chiến lược lập lịch để điều khiển khi các
nhiệm vụ thực thi. Còn trong các hệ thống đa bộ xử lý, các bộ xử lý thực
thi không đồng bộ, từng bộ xử lý riêng lẻ tạo lập một số luồng giả trùng
hợp, chỉ một luồng đơn có thể được thực hiện tại một thời điểm bất kỳ đã
cho, nhưng các luồng hoạt động thay đổi theo một số chiến lược lập lịch.
Nhiều hệ thống cũng sử dụng tính đồng thời như một mô hình để mô tả
các hoạt động song song về mặt logic, ngay cả khi các hoạt động này được
thực thi bằng cách xen kẽ từng hành động trên một bộ xử lý đơn. Hơn nữa,
các hệ thống thời gian thực cũng phải giải quyết tính đồng thời về vật lý
vốn có và các trùng hợp này là một bộ phận của thế giới thực mà hệ thống
được kết nối. Các tín hiệu đến từ môi trường có thể đến đồng thời; tách rời
theo quy luật tự nhiên và các hành động đồng thời có thể được giám sát và
điều khiển bởi một hệ thống máy tính đơn; cần thiết phải biết thời điểm tín
hiệu được nhận; và các tín hiệu ra có thể phải được phát tại thời điểm xấp
xỉ với ràng buộc thời gian.

• Tính tiền định: Dự đoán trước được thời gian phản ứng tiêu biểu, thời gian
phản ứng chậm nhất cũng như trình tự đưa ra các phản ứng. Nếu một bộ
điều khiển phải xử lý đồng thời nhiều nhiệm vụ, ta phải tham gia quyết
định được về trình tự thực hiện các công việc và đánh giá được thời gian
xử lý mỗi công việc. Như vậy người sử dụng mới có cơ sở để đánh giá về
khả năng đáp ứng tính thời gian thực của hệ thống.
1.2.3. Các dạng của hệ thống thời gian thực
Về cơ bản, chương trình có tính thời gian thực phải có khả năng phản ứng
lại các sự kiện trong môi trường mà hệ thống làm việc trong khoảng thời gian
nhất định cho trước. Những hệ thống như vậy được gọi là hệ thống "điều khiển
sự kiện" (hay hệ thống hướng sự kiện event-driven) và có thể được mô tả bằng


21

thời gian trễ tính từ khi sự kiện xảy ra tới khi hệ thống có hoạt động phản ứng lại
sự kiện đó.
Thời gian thực, mặt khác, đòi hỏi một giới hạn cao hơn về thời gian trễ,
được gọi là "thời hạn lập lịch" (scheduling deadline) hoặc gọi tắt là thời hạn. Hệ
thống thời gian thực thường được phân thành hai loại: hệ thống thời gian thực
cứng (hard real-time system) và hệ thống thời gian thực mềm (soft real- time
system).
Hệ thống thời gian thực cứng là hệ thống mà các hành động của nó phải
không bao giờ được vi phạm các ràng buộc thời gian trong đó có thời hạn lập
lịch, hệ thống phải tiếp nhận và nắm bắt được thời hạn lập lịch của nó tại mọi
thời điểm. Hệ thống có lỗi hoặc sai sót trong việc tiếp nhận thời hạn sẽ gây ra các
hậu quả rất nghiêm trọng, thiệt hại về vật chất, gây ảnh hưởng xấu đến sức khoẻ,
đời sống của con người, thậm chí chết người. Với hệ thống thời gian thực cứng,
dữ liệu trễ là dữ liệu tồi. Một ví dụ về hệ thống thời gian thực cứng là hệ thống
kiểm soát không lưu. Trong hệ thống này, một phân phối đường bay, thời gian

cất cánh, thời gian hạ cánh không hợp lý, không đúng lúc có thể gây ra tai nạn
máy bay mà hậu quả của nó khó mà lường trước được. Một ví dụ khác, máy hỗ
trợ nhịp tim cho bệnh nhân khi phẫu thuật. Thuật toán điều khiển phụ thuộc vào
thời gian nhịp tim của người bệnh, nếu thời gian này bị trễ, tính mạng của người
bệnh sẽ bị ảnh hưởng.
Ngược lại, hệ thống thời gian thực mềm là hệ thống có các ràng buộc về
thời gian, tuy nhiên, trong trường hợp các ràng buộc này bị vi phạm, tức là thời
gian trả lời của hệ thống vượt quá thời hạn đặt ra, hệ thống vẫn hoạt động được
tiếp và kết quả nó tạo ra bị giảm “giá trị” theo một nghĩa nào đó. Nói cách khác,
những kết quả tạo ra không đúng hạn tuy không hữu ích/không làm hài lòng
người sử dụng bằng khi nó được tạo ra đúng hạn nhưng vẫn được chấp nhận.
Chúng ta mong muốn hệ thống phản ứng lại các sự kiện trong thời gian cho phép
nhưng không có gì thực sự nghiêm trọng xảy ra nếu hệ thống thỉnh thoảng bị trễ.


22

Lỗi về mặt thời gian có thể chỉ đơn giản là dẫn đến hậu quả giảm độ tin cậy của
đối tượng đối với hệ thống mà không có hậu quả thê thảm nào khác xảy ra.
Trên thực tế có rất nhiều hệ thống phối hợp cả hai loại trên, trong đó, một
phần nào đó của hệ thống làm việc dựa trên hệ thống thời gian thực cứng, một số
phần khác lại dựa trên hệ thống thời gian thực mềm.
Ta có thể quan niệm hệ thống thời gian thực cứng là hệ thống phải thỏa
mãn các ràng buộc cứng về thời gian - ràng buộc thời gian không được phép vi
phạm. Tương tự, hệ thống thời gian thực mềm là hệ thống phải thỏa các ràng
buộc mềm về thời gian - ràng buộc thời gian được phép vi phạm, nhưng các vi
phạm sẽ làm giảm giá trị của kết quả. Một hệ thống có thể có cả các ràng buộc
cứng lẫn ràng buộc mềm về thời gian.
1.2.4. Xử lý thời gian thực
Xử lý thời gian thực là hình thức xử lý thông tin trong một hệ thống để đảm

bảo tính năng thời gian thực của nó. Như vậy, xử lý thời gian thực cũng có các
đặc điểm tiêu biểu nêu trên như tính bị động, tính nhanh nhạy, tính đồng thời và
tính tiền định. Để có thể phản ứng với nhiều sự kiện diễn ra cùng một lúc, một hệ
thống xử lý thời gian thực sử dụng các quá trình tính toán đồng thời.
Quá trình tính toán là một tiến trình thực hiện một hoặc một phần chương
trình tuần tự do hệ điều hành quản lý trên một máy tính, có thể tồn tại đồng thời
với các quá trình khác kể cả trong thời gian thực hiện lệnh và thời gian xếp hàng
chờ đợi thực hiện.
Các hình thức tổ chức các quá trình tính toán đồng thời:
- Xử lý tương tranh: Nhiều quá trình tính toán chia sẻ thời gian xử lý thông
tin của một bộ xử lý.
- Xử lý song song: Các quá trình tính toán được phân chia thực hiện song
song trên nhiều bộ xử lý của hệ thống máy tính.
- Xử lý phân tán: Mỗi quá trình tính toán được thực hiện riêng trên một máy
tính.


23

Trong các hình thức trên đây thì hình thức xử lý tương tranh có vai trò chủ
chốt. Mặc dù hệ thống điều khiển có thể có nhiều trạm, và mỗi trạm có thể là một
hệ đa vi xử lý, số lượng các quá trình tính toán cần thực hiện thường bao giờ
cũng lớn hơn số lượng vi xử lý. Trong khi một vi xử lý không thể thực hiện song
song nhiều lệnh, nó phải phân chia thời gian để thực hiện xen kẽ nhiều nhiệm vụ
khác nhau theo thứ tự tùy theo mức ưu tiên và phương pháp lập lịch.
Trong các hệ thống điều khiển, khái niệm tác vụ (task) cũng hay được sử
dụng bên cạnh quá trình tính toán. Có thể nói, tác vụ là một nhiệm vụ xử lý thông
tin trong hệ thống có thể thực hiện theo cơ chế tuần hoàn (periodic task) hoặc
theo sự kiện (event task). Các dạng tác vụ qui định trong chuẩn IEC 61131-3
(Programmable Controllers – Part3: Programming Languages). Ví dụ, một tác vụ

thực hiện nhiệm vụ điều khiển cho một hoặc nhiều mạch vòng kín có chu kỳ trích
mẫu giống nhau. Hoặc, một tác vụ có thể thực hiện nhiệm vụ điều khiển logic,
điều khiển trình tự theo các sự kiện xảy ra. Tác vụ có thể thực hiện dưới dạng
một quá trình tính toán duy nhất, hoặc một dãy các quá trình tính toán khác nhau.
1.2.5. Ứng dụng
Có thể nói, tất các các hệ thống điều khiển là hệ thời gian thực. Ngược lại,
một số lớn các hệ thống thời gian thực là các hệ thống điều khiển. Không có hệ
thống điều khiển nào có thể hoạt động bình thường nếu như nó không đáp ứng
được các yêu cầu về thời gian, bất kể là hệ thống điều khiển nhiệt độ, điều khiển
áp suất, điều khiển lưu lượng hay điều khiển chuyển động. Một bộ điều khiển
phải đưa ra được tín hiệu điều khiển kịp thời sau một thời gian nhận được tín
hiệu đo để đưa quá trình kỹ thuật về trạng thái mong muốn. Một mạng truyền
thông trong một hệ thống điều khiển có tính năng thời gian thực phải có khả năng
truyền tin một cách tin cậy và kịp thời đối với các yêu cầu của các bộ điều khiển,
các thiết bị vào/ra, các thiết bị đo và thiết bị chấp hành. Tính năng thời gian thực
của một hệ thống điều khiển phân tán không chỉ phụ thuộc vào tính năng thời
gian thực của từng thành phần trong hệ thống, mà còn phụ thuộc vào sự phối hợp
hoạt động giữa các thành phần đó [5].


24

Hệ thống thời gian thực được ứng dụng phổ biến trong rất nhiều lĩnh vực,
như thương mại, quân đội, y tế, giáo dục, cơ sở hạ tầng,… và hiện nay đang phát
triển rất mạnh mẽ. Ta có thể kể ra một số lĩnh vực ứng dụng tiêu biểu:
- Các hệ thống phương tiện như: xe ô tô, xe điện ngầm, máy bay, tàu hỏa,
tàu thủy, ….
- Hệ thống điều khiển giao thông trên đường cao tốc, không phận, đường
ray, đường dành riêng cho tàu biển, …, ví dụ, hệ thống kiểm soát không
lưu

- Hệ thống điều khiển trong các nhà máy: như nhà máy năng lượng, nhà máy
hóa chất và các nhà máy sản xuất bia và nước uống có ga, ….
- Hệ thống y tế như hệ thống chữa bệnh bằng bức xạ, giám sát bệnh nhân,
phục hồi nhịp đập bình thường của tim.
- Hệ thống vũ khí quân sự sử dụng trong quân đội tạo các vũ khí cháy nổ,
hiệu chỉnh tín hiệu, ….
- Hệ thống chế tạo sử dụng robot.
- Hệ thống xử lý các luồng Video và Audio.
....

1.3. Thiết kế và phát triển ứng dụng cho hệ thống nhúng
Trong phần này trình bày các vấn đề về thiết kế và phát triển phần mềm
nhúng, những khác biệt so với vấn đề thiết kế và phát triển ứng dụng, vấn đề
kiểm thử phần mềm nhúng…
1.3.1. Thiết kế hệ thống nhúng
1.3.1.1. Vấn đề chung về thiết kế hệ nhúng
Thiết kế các hệ thống nhúng là thiết kế phần cứng và phần mềm phối hợp
bao gồm những bước sau:
- Mô hình hoá hệ thống: Mô tả các khối chức năng với các đặc tính và
thuật toán xử lý.
- Chi tiết hoá các khối chức năng.


×