ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
PHẠM VĂN HƯỞNG
MÔI TRƯỜNG PHÁT TRIỂN
PHẦN MỀM NHÚNG CHO CÁC
THIẾT BỊ DI ĐỘNG
Ngành:
Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
Mã số:
60 48 10
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. Nguyễn Ngọc Bình
Hà Nội-2008
MỤC LỤC
BẢNG KÝ HIỆU ............................................................................ 4
BẢNG CÁC HÌNH VẼ ................................................................... 5
MỞ ĐẦU ………………………………………………………….7
Chương 1. Tổng quan về hệ thống nhúng ........................................ 9
1.1. Các khái niệm ........................................................................................................ 9
1.1.1. Hệ thống nhúng ............................................................................................... 9
1.1.3. Phần mềm nhúng ............................................................................................. 9
1.1.3. Hệ thống nhúng thời gian thực ...................................................................... 10
1.2. Đặc điểm khác biệt giữa phần mềm nhúng và phần mềm thơng thường trên máy
tính cá nhân ................................................................................................................ 12
1.3. Ứng dụng của hệ nhúng ....................................................................................... 13
Chương 2. Hệ điều hành thời gian thực ......................................... 14
2.1. Khái niệm ............................................................................................................ 14
2.2. Kiến trúc nhân RTOS ........................................................................................... 15
2.3. Các vấn đề cơ bản của RTOS ............................................................................... 16
2.3.1. Hệ thống tiền cảnh/hậu cảnh.......................................................................... 16
2.3.2. Miền găng ..................................................................................................... 17
2.3.3. Tài nguyên .................................................................................................... 17
2.3.4. Tính đa nhiệm ............................................................................................... 17
2.3.5. Tác vụ và trạng thái tác vụ............................................................................. 17
2.3.6. Chuyển ngữ cảnh .......................................................................................... 18
2.3.7. Nhân thời gian thực ....................................................................................... 19
2.3.8. Bộ lập lịch ..................................................................................................... 21
2.4. Phát triển các ứng dụng thời gian thực trên RTOS ................................................ 22
2.4.1. Mơ hình tích hợp ........................................................................................... 22
2.4.2. Phát triển ứng dụng nhúng thời gian thực trên C/OS.................................... 22
Chương 3. Môi trường phát triển phần mềm nhúng cho các thiết bị
di động ………………………………………………………...24
3.1. Hệ điều hành trên thiết bị di động ........................................................................ 24
3.2. Mơi trường lập trình trong Symbian ..................................................................... 26
3.2.1. Hệ điều hành Symbian .................................................................................. 26
3.2.2. Thực thi ứng dụng trên Symbian ................................................................... 28
3.2.2.1. Phân loại ứng dụng ................................................................................. 28
3.2.2.2. Cấu trúc ứng dụng .................................................................................. 29
3.2.2.3. Thực thi ứng dụng trên Symbian............................................................. 29
3.2.3. Xây dựng ứng dụng trên Symbian với C/C++ ................................................ 32
3.2.3.1. Symbian Flatform ................................................................................... 32
3.2.3.2. Các SDK và IDE phổ biến ...................................................................... 32
3.2.3.3. Các bước xây dựng ứng dụng trên Series 60 với Carbide C/C++............. 33
3.3. Môi trường .NET Compact Framework trong Windows Mobile ........................... 37
3.3.1. Hệ điều hành Windows Mobile ..................................................................... 37
3.3.2. .NET Compact Framework............................................................................ 37
Luận văn Thạc sĩ
2
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
3.3.2.1. Kiến trúc tổng quan .NET Compact Framework ..................................... 37
3.3.2.2. Mơi trường lập trình trong .NET Compact Framework ........................... 40
3.3.2.3. Các bước xây dựng ứng dụng .NET Compact Framework với Visual
Studio.net............................................................................................................ 42
3.4. J2ME ................................................................................................................... 45
3.4.1. Kiến trúc J2ME ............................................................................................. 45
3.4.1.1. Máy ảo Java (KVM) ............................................................................... 47
3.4.1.2. Tầng CLDC (Connected Limited Device Configuration): ....................... 48
3.4.1.3. MIDP (Mobile Information Device Profile) ............................................ 50
3.4.2. Phát triển ứng dụng nhúng trên thiết bị di động với J2ME ............................. 50
3.4.2.1. MIDlet ................................................................................................... 50
3.4.2.2. Tệp tin .JAR ........................................................................................... 51
3.4.3. Xây dựng ứng dụng và chạy mô phỏng.......................................................... 52
Chương 4. Xây dựng ứng dụng nhận dạng chữ NƠM trên Pocket
PC
………………………………………………………...56
4.1. Bài tốn nhận dạng chữ NƠM .............................................................................. 56
4.2. Giải pháp cơng nghệ ............................................................................................ 56
4.3. Phân tích thiết kế hệ thống ................................................................................... 59
4.3.1. Biểu đồ Use Case .......................................................................................... 59
4.3.1.1. Biểu đồ ca sử dụng cho gói Desktop ....................................................... 59
4.3.1.2. Biểu đồ ca sử dụng cho gói Mobile ......................................................... 60
4.3.2. Biểu đồ lớp phân tích .................................................................................... 61
4.3.2.1. Phân tích các ca sử dụng trong gói Desktop ............................................ 61
4.3.2.2. Phân tích các ca sử dụng trong gói Mobile .............................................. 62
4.3.3. Biểu đồ lớp thiết kế ....................................................................................... 63
4.3.3.1. Biểu đồ lớp thiết kế cho gói Desktop ...................................................... 63
4.3.3.2. Biểu đồ lớp thiết kế cho gói Mobile ........................................................ 64
4.3.4. Biểu đồ tuần tự .............................................................................................. 65
4.3.4.1. Biểu đồ tuần trong gói Desktop .............................................................. 65
4.3.4.2. Biểu đồ tuần tự trong gói Mobile ............................................................ 66
4.4. Cài đặt ................................................................................................................. 69
4.4.1. Cài đặt gói huấn luyện trên Desktop .............................................................. 69
4.4.2. Cài đặt gói nhận dạng trên Mobile ................................................................. 71
4.5. Kết quả thực nghiệm ............................................................................................ 74
KẾT LUẬN ................................................................................... 78
TÀI LIỆU THAM KHẢO ............................................................. 79
PHỤ LỤC A. Windows Embedded CE 6.0 ................................... 81
A.1. Các hệ điều hành họ Windows CE ...................................................................... 81
A.2. Windows Embedded CE 6.0................................................................................ 83
A.2.1. Tính năng của Windows Embedded CE 6.0 .................................................. 83
A.2.2. Kiến trúc Windows Embedded CE 6.0.......................................................... 83
A.2.3. Lập trình ứng dụng trên Windows Embedded CE 6.0 ................................... 85
PHỤ LỤC B. Mã nguồn các lớp gói Mobile ................................. 87
B.1. Lớp giao diện gói Mobile: frmMainApp .............................................................. 87
B.2. Lớp lưu kết quả đầu vào đã xử lý: MobileInputResult ......................................... 90
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
3
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
B.3. Lớp xử lý đầu vào: MobileInputProcess .............................................................. 91
B.4. Lớp cấu hình mạng: NetworkConfig.................................................................... 95
B.5. Lớp lưu kết quả nhận dạng: RecognitionProcessResult ........................................ 97
B.6. Lớp nhận dạng: RecognitionProcess .................................................................... 98
B.7. Lớp lưu ngữ nghĩa và kết quả tra cứu nghĩa từ: SemanticMap ........................... 102
B.8. Lớp tra cứu nghĩa từ: LookupSemantic .............................................................. 104
PHỤ LỤC C. Mã nguồn các phương thức cơ bản gói Desktop.... 106
Khoa Cơng Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
4
BẢNG KÝ HIỆU
Ký hiệu
Thuật ngữ
Ý nghĩa
Mục tham chiếu
ANN
Artifical Neural
Network
Application User
Interface class
Center Processor Unit
Dynamic link library
Data Object Model
Mạng nơ-ron nhân tạo
4.2
AppUI
CPU
DLL
DOM
GUI
IDE
ISR
ISS
J2ME
JVM
KVM
MIDLet
RAM
ROM
RTOS
SDK
SOAP
Lớp giao diện người
dùng ứng dụng
Bộ xử lý trung tâm
Thư viện liên kết động
Mơ hình đối tượng dữ
liệu
Graphic User Interface Giao diện người dùng
đồ hoạ
Intergrated
Môi trường phát triển
Development
tích hợp
Environment
Interrupt Service
Chương trình con phục
Routine
vụ ngắt
Intergrated System
Phần mềm hệ thống tích
Software
hợp
Java to Micro Edition Nền tảng Java cho thiết
bị di động
Java Virtual Machine
Máy ảo Java
K Virtual Machine
Máy ảo Java cho thiết bị
di động
Mobile Information
Ứng dụng Java aplet
Device applet
trên thiết bị di động
Random Access
Bộ nhớ truy cập ngẫu
Memory
nhiên
Read Only Memory
Bộ nhớ chỉ đọc
Real time operating
Hệ điều hành thời gian
system
thực
Software Development Gói cơng cụ phát triển
Kit
phần mềm
Simple Object Access Giao thức truy cập đối
Protocol
tượng
Model Ngơn ngữ mơ hình hố
UML
Uniform
Language
XML
Extensible Markup
Language
Khoa Cơng Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Ngôn ngữ đánh dấu mở
rộng
3.2.2.2
2.3.7
3.2.2.3
3.3.2.2
3.3.3.2
2.4.1
2.2
3.2.3.1
3.4.1
3.4.1
3.4.1
3.4.2.1
2.3.7
2.3.7
1.1
3.2.3.2
3.3.2.2
4.2
3.3.2.2
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
5
BẢNG CÁC HÌNH VẼ
Số thứ
tự
1
2
3
4
5
Hình 1.1
Hình 2.1
Hình 2.2
Hình 2.3
Hình 2.4
Mơ tả hệ nhúng thời gian thực
Khung nhìn tổng quan vể RTOS
Kiến trúc nhân RTOS
Hệ thống tiền cảnh/hậu cảnh
Trạng thái tác vụ
6
7
8
Hình 2.5
Hình 2.6
Hình 2.7
2.3.5
2.3.5
2.4.1
9
Hình 2.8
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
27
28
Hình 3.1
Hình 3.2
Hình 3.3
Hình 3.4
Hình 3.5
Hình 3.6
Hình 3.7
Hình 3.8
Hình 3.9
Hình 3.10
Hình 3.11
Hình 3.12
Hình 3.13
Hình 3.14
Hình 3.15
Hình 3.16
Hình 3.17
Hình 3.18
29
Hình 3.19
Minh hoạ nhân khơng ưu tiên
Minh hoạ nhân ưu tiên
Mơ hình phát triển ứng dụng nhúng trên
RTOS
Cấu trúc chương trình nhúng sử dụng
µC/OS
Tổng quan vai trị hệ điều hành
Kiến trúc Symbian
Cơng nghệ tích hợp trong Series 60
Mở một dự dán Symbian mới
Hoàn tất tạo dự án
Xây dựng mã nguồn ứng dụng
Giao diện Symbian Series 60
Giao diện ứng dụng console trên Symbian
Kiến trúc .NET Compact Framework
Tạo project cho thiết bị di động
Thiết kế giao diện ứng dụng
Biên dịch ứng dụng
Chạy mô phỏng ứng dụng
Kiến trúc J2ME
Tiến trình xây dựng ứng dụng
Ứng dụng java trên thiết bị di động
Cấu trúc và vòng đời MIDlet
Tạo mới hoặc mở dự án trên J2ME
Wireless Toolkit
Cấu hình dự án
30
31
32
Hình 3.20
Hình 3.21
Hình 4.1
3.4.3
3.4.3
4.2
33
34
35
36
Hình 4.2
Hình 4.3
Hình 4.4
Hình 4.5
37
Hình 4.6
Biên dịch dự án
Chạy mô phỏng MIDlet
Cấ u trúc ma ̣ng Perceptron đa tầ ng cho bài
tốn nhận dạng chữ Nơm
Các gói chương trình
Biểu đồ ca sử dụng trong gói Desktop
Biểu đồ ca sử dụng trong gói Mobile
Biểu đồ lớp phân tích thực thi ca sử dụng
InputProcess
Biểu đồ lớp phân tích thực thi ca sử dụng
Hình
Khoa Cơng Nghệ Thơng Tin
Học viên: Phạm Văn Hưởng
Mô tả
Mục tham
chiếu
1.3.1
2.1
2.2
2.3.1
2.3.5
2.4.2
3.1
3.2.1
3.2.3.1
3.2.3.3
3.2.3.3
3.2.3.3
3.2.3.3
3.2.3.3
3.3.2.1
3.3.2.3
3.3.2.3
3.3.2.3
3.3.2.3
3.4.1
3.4.1.1
4.4.1.2
3.4.2.1
3.4.3
3.4.3
4.3.1
4.3.1.1
4.3.1.1
4.3.2.1
4.3.2.1
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
38
Hình 4.7
39
Hình 4.8
40
Hình 4.9
41
42
43
Hình 4.10
Hình 4.11
Hình 4.12
44
Hình 4.13
45
Hình 4.14
46
Hình 4.15
47
48
49
50
51
Hình 4.16
Hình 4.17
Hình 4.18
Hình 4.19
Hình 4.20
52
53
54
Hình 4.21
Hình 4.22
Hình 4.23
55
56
57
Hình A.1
Hình A.2
Hình A.3
58
Hình A.4
59
Hình A.5
60
Hình A.6
61
62
Hình A.7
Hình A.8
Khoa Cơng Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
6
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
NetworkTrainning
Biểu đồ lớp phân tích thực thi ca sử dụng
MobileInputProcess
Biểu đồ lớp phân tích thực thi ca sử dụng
Recognition
Biểu đồ lớp phân tích thực thi ca sử dụng
LookupSemantic
Biểu đồ lớp thiết kế gói Desktop
Biểu đồ lớp thiết kế cho gói Mobile
Biểu đồ tuần tự thực hiện phương thức
TrainingNetwork()
Biểu đồ tuần tự thực hiện phương thức
Recognition()
Biểu đồ tuần tự thực hiện phương thức
CreateSetMatrixPixelOfCharacter()
Biểu đồ tuần tự thực hiện phương thức
LookupMeanning()
Giao diện gói Desktop
Giao diện và cấu trúc các lớp gói Mobile
Giao diện huấn luyện mạng trên Desktop
Form ứng dụng trên PocketPC
Giao diện nạp các file: trọng số và ngữ
nghĩa
Giao diện nạp ảnh nhận dạng
Kết quả nhận dạng trên Pocket PC
Thống kê kết quả thử nghiệm nhận dạng
chữ Nôm trên Desktop
Lịch sử Windows CE
Lịch sử Windows Mobile
Tính năng của một số phiên bản Windows
Mobile
Quan hệ giữa Windows CE và Windows
Mobile
Mơ hình bộ nhớ ảo trong Windows
Embedded CE 6.0
Không gian địa chỉ logic và không gian
địa chỉ vật lý
Kiến trúc Windows Embedded CE 6.0
Mơ hình lời gọi hệ thống trong Windows
Embedded CE 6.0
4.3.2.2
4.3.2.2
4.3.2.2
4.3.3.1
4.3.3.2
4.3.4.1
4.3.4.2
4.3.4.2
4.3.4.2
4.4.1
4.4.2
4.5
4.5
4.5
4.5
4.5
4.5
Phụ lục A
Phụ lục A
Phụ lục A
Phụ lục A
Phụ lục A
Phụ lục A
Phụ lục A
Phụ lục A
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
7
MỞ ĐẦU
Trong sự phát triển của công nghệ thông tin, sau giai đoạn bùng nổ của
internet từ 1980-2000 [2], thì cơng nghệ nhúng được xem là xu thế của công nghệ
thông tin hiện nay. Hệ thống nhúng là phần cốt lõi tạo lên các sản phẩm nhúng và
các môi trường thông minh. Thị trường của các hệ thống nhúng lớn gấp khoảng
100 lần thị trường của PC và mạng LAN, PC và Internet chỉ là bề nổi của cơng
nghệ thơng tin cịn phần chìm của cơng nghệ thơng tin chiếm 99% số vi xử lý trên
tồn cầu này nằm trong các hệ nhúng thì cịn ít được biết đến [2]. Các sản phẩm
nhúng có mặt trong mọi lĩnh vực đời sống kinh tế xã hội từ giải trí đến các thiết bị
gia dụng, thiết bị cơng nghiệp.
Sự hội tụ của công nghệ truyền thông không dây với thiết bị tính tốn cầm
tay, sức đẩy của cơng nghệ vi điện tử, các công nghệ vi cơ điện, công nghệ sinh học
hội tụ tạo nên các chip của công nghệ nano, là nền tảng cho những thay đổi cơ bản
trong công nghệ thông tin và truyền thông. Sức kéo của thị trường địi hỏi các thiết
bị phải có nhiều chức năng thân thiện với người dùng, có mức độ thơng minh ngày
càng cải thiện đưa đến vai trị và tầm quan trọng của các hệ thống nhúng ngày càng
cao trong nền kinh tế quốc dân.
Từ tất yếu khách quan, công nghệ phần mềm nhúng đã trở thành lĩnh vực
công nghệ then chốt cho sự phát triển kinh tế của nhiều quốc gia trên thế giới tiêu
biểu như Mỹ, Nhật Bản, Hàn Quốc, Phần Lan và Trung quốc. Tại Mỹ có nhiều
chương trình hỗ trợ của Nhà nước để phát triển các hệ thống và phần mềm nhúng.
Hàn Quốc có những dự án lớn nhằm phát triển cơng nghệ phần mềm nhúng như các
thiết bị gia dụng nối mạng Internet, hệ thống phần mềm nhúng cho phát triển thành
phố thông minh, dự án phát triển ngành công nghiệp phần mềm nhúng, trung tâm
hỗ trợ các ngành công nghiệp hậu PC. Phần Lan có những chính sách quốc gia tích
cực cho nghiên cứu phát triển các hệ nhúng đặc biệt là các phần mềm nhúng.
Những quốc gia này còn thành lập nhiều viện nghiên cứu và trung tâm phát triển
các hệ nhúng [2].
Ở Việt Nam, hầu hết các công ty phần mềm đều tập trung xây dựng phần
mềm ứng dụng mà phần nhiều là các ứng dụng quản lý và ứng dụng web. Một số ít
các cơng ty phát triển phần mềm hệ thống hoặc phát triển hệ nhúng chủ yếu làm
theo yêu cầu của các đối tác nước ngoài. Nghĩa là chúng ta đa khai thác trên bề nổi
của cơng nghệ thơng tin đang dần bão hồ. Do vậy, chính phủ, các ngành cơng
nghiệp, các viện nghiên cứu, trường đại học của Việt Nam có chiến lược phát triển
cơng nghệ thơng tin và truyền thơng của mình và có những điều chỉnh phù hợp để
có thể theo kịp, rút ngắn khoảng cách tụt hậu trong lĩnh vực công nghệ thông tin và
truyền thông đối với các nước trong khu vực và trên thế giới trong q trình hội
Khoa Cơng Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
8
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
nhập nền kinh tế toàn cầu. Cần đưa chính sách thính đáng để nghiên cứu, xây dựng
các hệ thống nhúng mà ban đầu cần tập trung vào phát triển các phần mềm nhúng
[1].
Từ xu thế phát triển khách quan của công nghệ thông tin và hiện trạng công
nghệ nước ta việc nghiên cứu, phát triển hệ nhúng là tất yếu. Phạm vi nghiên cứu
cũng như tầm ứng dụng của hệ nhúng rất lớn, trong giới hạn luận văn, chúng tơi tập
trung trình bày các vấn đề về môi trường phát triển phần mềm nhúng cho các thiết
bị di động (mobile). Cấu trúc luận văn gồm các phần như sau:
Phần mở đầu: Nội dung phần mở đầu chỉ ra vai trị và tầm quan trọng của
cơng nghệ nhúng, hiện trạng phát triển công nghệ nhúng trên thế giới và ở Việt
Nam.
Chương 1. Tổng quan về hệ thống nhúng: Nội dung chương 1 trình bày
tổng quan về hệ thống nhúng, các khái niệm liên quan như: hệ thống nhúng, phần
mềm nhúng, hệ thời gian thực, hệ nhúng thời gian thực; so sánh ứng dụng trên
desktop và ứng dụng nhúng.
Chương 2. Hệ điều hành thời gian thực: Nội dung chương 2 trình bày các
vấn đề về phát triển các phần mềm nhúng trong môi trường hệ điều hành thời gian
thực.
Chương 3. Môi trường phát triển ứng dụng nhúng cho các thiết bị di
động: Nội dung chương 3 trình bày về các môi trường phát triển ứng dụng nhúng
trên thiết bị di động như: môi trường hệ điều hành Symbian, môi trường .NET
Compact Framework, môi trường java J2ME.
Chương 4. Xây dựng ứng dụng nhận dạng chữ Nôm trên Pocket PC: Nội
dung chương 4 trình bày thực nghiệm xây dựng ứng dụng nhận dạng chữ Nôm trên
Pocket PC. Hệ thống sử dụng ngơn ngữ UML để phân tích thiết kế và được cài đặt
bằng ngôn ngữ C# trên nền tảng .NET Compact Framework. Đồng thời trong ứng
dụng cũng sử dụng kỹ thuật mạng nơ-ron Perceptron đa tầng để nhận dạng.
Phần kết luận: Nội dung phần này tổng kết, đánh giá về luận văn cũng như
phần mềm thực nghiệm và đưa ra một số hướng phát triển.
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
9
Chương 1. Tổng quan về hệ thống nhúng
1.1. Các khái niệm
1.1.1. Hệ thống nhúng
Hệ thống nhúng (Embedded system) là một hệ thống tính toán có khả năng
tự trị được nhúng vào trong một môi trường hay một hệ thống lớn hơn . Đó là các
hệ thống tích hợp cả phần cứng và phần phềm phục vụ các bài tốn chun dụng.
Một hệ thống được nhúng có thể chứa nhiều hệ thống nhúng khác [7].
Hệ thống nhúng thường được thiết kế để thực hiện một chức năng chun 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.
Trong một số trường hợp, hệ nhúng cũng có thể hoạt động như một hệ thống
tồn tại độc lập. Ví dụ như bộ định tuyến router. Bộ định tuyến được xây dựng sử
dụng bộ vi xử lý đặc biệt, bộ nhớ, các cổng giao tiếp mạng và phần mềm cài đặt
thuật tốn định hướng các gói tin. Theo đó, bộ định tuyến làm nhiệm vụ là định
hướng các gói tin đến từ một cổng và tới một cổng khác, có thể tồn tại độc lập [9].
1.1.3. Phần mềm nhúng
Phần mềm nhúng là phần mềm tích hợp trong các hệ thống nhúng. Mục đích
của phần mềm nhúng nhằm điều khiển phần cứng, cho phép đáp ứng tương tác
người dùng hoặc cung cấp môi trường để phát triển các phần mềm nhúng tích hợp
khác.
Phần mềm nhúng tạo nên phần hồn, phần trí tuệ của các sản phẩm nhúng.
Phần mềm nhúng ngày càng có tỷ lệ giá trị cao trong giá trị của các sản phẩm
nhúng.
Hiện nay phần lớn các phần mềm nhúng nằm trong các sản phẩm truyền
thông và các sản phẩm điện tử tiêu dùng (consumer electronics), tiếp đến là trong
các sản phẩm ô tô, phương tiện vận chuyển, máy móc thiết bị y tế, các thiết bị năng
lượng, các thiết bị cảnh báo bảo vệ và các sản phẩm đo và điều khiển.
Phần mềm nhúng có thể có các mức kiến trúc khác nhau tuỳ theo yêu cầu cụ
thể của hệ thống. Dưới đây là một số kiến trúc phần mềm nhúng với độ phức tạp
tăng dần [7]:
-
Kiến trúc xoay vòng RR (Round-Robin).
-
Kiến trúc xoay vòng kết hợp với ngắt.
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
10
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
-
Kiến trúc lập lịch hàng đợi chức năng.
-
Kiến trúc hệ điều hành thời gian thực: là kiến trúc phức tạp đóng vai
trị trung gian giao tiếp với phần cứng và làm môi trường cung cấp các
dịch vụ để tích hợp các phần mềm nhúng khác.
1.1.3. Hệ thống nhúng thời gian thực
Hệ thống thời gian thực: là hệ thống phải đáp ứng công việc trong một giới
hạn thời gian nào đó, việc vượt quá thời gian có thể gây ra hậu quả nghiêm trọng
hoặc kết quả công việc khơng có ý nghĩa. Do đó tính đúng đắn của tồn bộ hệ
thống phụ thuộc cả vào tính đúng đắn về chức năng và tính đúng đắn về thời gian.
Ở dạng đơn giản, các hệ thống thời gian thực có thể được định nghĩa là hệ
thống đáp ứng các sự kiện bên ngoài trong một khoảng thời gian nào đó, và thời
gian đáp ứng phải được đảm bảo.
Các sự kiện bên ngồi có thể là sự kiện đồng thời hoặc không đồng thời. Việc
đáp ứng các sự kiện bên ngoài bao gồm: phát hiện sự kiện, xử lý sự kiện và đưa ra
các kết quả cần thiết trong một ràng buộc thời gian cho trước. Các ràng buộc thời
gian bao gồm thời gian kết thúc hoặc cả thời gian bắt đầu và kết thúc.
Hệ thời gian thực còn được gọi là hệ thống xác định bởi vì thời gian đáp ứng
cho một sự kiện được giới hạn. Các tác vụ đáp ứng cho sự kiện còn được gắn với
một độ ưu tiên cho trước. Hơn nữa, hệ thống thời gian thực có khả năng khả
chuyển kém khi thay đổi môi trường.
Phân loại hệ thống thời gian thực [17]:
Trong hệ thời gian thực, mọi cơng việc tính tốn đều phải hoàn thành trước
thời gian cho phép, được gọi là deadline. Nói cách khác, hệ thống thời gian thực bị
ràng buộc về thời gian và được điều khiển bởi các deadline. Về mặt này, hệ thời
gian thực có thể được chia thành hệ thời gian thực mềm và hệ thời gian thực cứng.
-
Hệ thống thời gian thực cứng: chỉ cho phép chênh lệch với deadline
trong một mức độ dao động gần như bằng khơng. Nếu khơng hồn
thành đúng so với deadline thảm họa có thể xảy ra và khơng cịn cách
nào có thể khơi phục được hệ thống. Ví dụ hệ thống nhúng trong điều
khiển máy bay là hệ thời gian thực cứng.
-
Hệ thống thời gian thực mềm: cho phép một mức độ chênh lệch nhất
định. Ví dụ đầu đọc DVD là hệ thời gian thực mềm.
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
11
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
Hệ nhúng thời gian thực: là một hệ thống nhúng đáp ứng tính thời gian thực.
Có thể hiểu hệ thống nhúng thời gian thực là phần giao nhau giữa hệ thống
nhúng và hệ thống thời gian thực. Môi trường của hệ thống tạo ra các sự kiện bên
ngoài. Những sự kiện này được nhận bởi một vài thành phần của hệ thống. Việc xử
lý có thể do các thành phần khác đảm nhiệm. Hệ nhúng thời gian thực được mơ tả
một cách trực quan trong Hình 1.1 sau:
Hệ nhúng
Hệ thời
Hệ nhúng thời gian
thực
gian thực
Hình 1.1. Mơ tả hệ nhúng thời gian thực
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
12
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
1.2. Đặc điểm khác biệt giữa phần mềm nhúng và phần mềm
thơng thường trên máy tính cá nhân
Phạm vi ứng dụng của phần mềm nhúng đa dạng hơn nhiều so với các ứng
dụng trên máy tính thông thường. Phần mềm nhúng tồn tại trong mọi lĩnh vực đời
sống, nó có các mức kiến trúc phức tạp khác nhau cũng như chạy trên rất nhiều các
kiến trúc phần cứng khác nhau. Sự khác nhau giữa việc phát triển các phần mềm
nhúng và phần mềm chạy trên máy tính thơng thường có thể liệt kê một số điểm
sau [7]:
-
Hệ thống nhúng được thiết kế cho các tác vụ đặc biệt, trong khi các
máy tính là các nền tảng tính tốn và xử lý chung. Một số phần mềm
nhúng đơn giản được lập trình chỉ để thực hiện một vài tác vụ. Thay
đổi các tác vụ có thể địi hỏi phải thiết kế lại hệ thống và thay đổi toàn
bộ hệ thống.
-
Hệ thống nhúng được hỗ trợ bởi một số lượng lớn các vi xử lý và kiến
trúc vi xử lý.
-
Hệ thống nhúng thường được cân nhắc cùng với chi phí phát triển.
-
Các hệ thống nhúng được thiết kế cùng với phần cứng được chỉ định
sẵn. Chính vì thế, tính năng của hệ thống ln được cân nhắc cùng với
chi phí phát triển. Ngồi ra, với một số tác vụ cần phải có những phần
cứng chuyên biệt.
-
Hệ thống nhúng yêu cầu khả năng đáp ứng nhanh và phần nhiều có các
ràng buộc thời gian thực.
-
Nếu hệ thống nhúng sử dụng hệ điều hành, thì hầu như nó phải sử dụng
hệ điều hành thời gian thực. Giống như vi xử lý nhúng, hệ điều hành
nhúng cũng có rất nhiều và có cách quản lý khác nhau. Tuy nhiên, mục
tiêu quan trọng là nó phải giải quyết các vấn đề khắt khe về mặt thời
gian và chia sẻ tài nguyên.
-
Khó khăn khi xử lý lỗi phần mềm nhúng: Với phần mềm nhúng, việc
dị lỗi chương trình thường thơng qua các bộ mơ phỏng thiết bị.
-
Hệ thống nhúng có ràng buộc về điện năng: Với nhiều hệ thống nhúng,
vấn đề năng lượng được coi là quan trọng hàng đầu. Phương pháp đầu
tiên để duy trì năng lượng là tắt bớt các phần hoặc cả hệ thống khi có
thể tắt được. Có thể là cả vi xử lý. Hầu hết các vi xử lý cho hệ thống
nhúng, có ít nhất một kiểu tiết kiệm năng lượng. Phần mềm thường đặt
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
13
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
vi xử lý trong những chế độ này với các chỉ thị đặc biệt hoặc ghi một
giá trị tới thanh ghi điều khiển bên trong vi xử lý.
-
Hệ thống nhúng chạy trong mơi trường có điều kiện khắt khe: Hệ
thống nhúng có mặt ở mọi nơi và có thể được thiết kế để làm mọi thứ.
Chính vì thế, khi thiết kế hệ thống, phải đặc biệt chú trọng tới các yếu
tố phần cứng có khả năng chịu được điều kiện môi trường.
1.3. Ứng dụng của hệ nhúng
Hiện nay các phần mềm nhúng có mặt hầu hết trong các sản phẩm truyền
thông, các sản phẩm điện tử tiêu dùng, các phương tiện vận chuyển, máy móc thiết
bị y tế, các thiết bị năng lượng, các thiết bị cảnh báo bảo vệ và các sản phẩm đo và
điều khiển. Các sản phẩm công nghiệp và tiêu dùng thường xuyên đổi mới và ngày
càng có nhiều chức năng tiện dụng và thông minh hơn. Các chức năng này phần
lớn do các chương trình nhúng tạo nên [2].
Một số lĩnh vực điển hình có thể liệt kê dưới đây:
-
Hệ thống nhúng trong các thiết bị gia dụng như: điều khiển ti vi, điều
hồ, hệ thống camera, hệ thống chng cảnh báo, …
-
Trong lĩnh vực trí tuệ nhân tạo: tàu vũ trụ không người lái, robot, …
-
Trong các phương tiện vận chuyển: lái xe tự động, điều khiển máy bay.
-
Trong các cơ quan, doanh nghiệp: hệ thống đọc thẻ ra vào, …
-
Trong thương mại: máy ATM, smart Card, …
-
Trong thông tin liên lạc: các ứng dụng nhúng đa dạng trên điện thoại di
động.
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
14
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
Chương 2. Hệ điều hành thời gian thực
2.1. Khái niệm
Hệ điều hành thời gian thực (RTOS: Real Time Operating System) là một
phần mềm hệ thống nhúng thời gian thực giao tiếp với một số kiến trúc phần cứng
và cung cấp mơi trường tích hợp cho các ứng dụng thời gian thực.
Mục tiêu của RTOS là cung cấp một nền tảng làm việc với nhiều thiết bị phần
cứng khác nhau đồng thời cho phép xây dựng các ứng dụng độc lập phần cứng dựa
trên việc sử dụng các dịch vụ của RTOS. Vai trò tổng quan của RTOS được chỉ ra
trong Hình 2.1:
Real-time app
Hình 2.1. Khung nhìn tổng quan về RTOS
Một RTOS cho phép tạo một hệ thống thời gian thực nhưng khơng đảm bảo
hồn tồn rằng ứng dụng cuối sẽ là ứng dụng thời gian thực; điều này địi hỏi tính
đúng đắn của phát triển phần mềm. Một RTOS khơng nhất thiết phải địi hỏi thơng
lượng hệ thống cao, hơn nữa, nếu sử dụng đúng khả năng mà RTOS cung cấp, có
thể đảm bảo các deadline (hệ thời gian thực mềm) hoặc có thể xác định được nó (hệ
thời gian thực cứng). Một RTOS điển hình sẽ sử dụng một thuật toán lập lịch đặc
biệt để cung cấp cho người phát triển hệ thời gian thực những công cụ cần thiết để
xây dựng nên những tác vụ có thể xác định được (thời gian thực thi) trong hệ thống
cuối cùng (hệ thống hồn thành). Trong cơng việc địi hỏi độ nhanh và độ chính xác
để đáp ứng một sự kiện thì cần dùng RTOS hơn là công việc chỉ yêu cầu làm được
bao nhiêu công việc theo thời gian. Yếu tố quan trọng trong một RTOS là thời gian
xử lý ngắt và thời gian chuyển luồng thực hiện ngắn nhất [8].
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
15
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
2.2. Kiến trúc nhân RTOS
Nhân hệ điều hành thời gian thực cung cấp năm loại dịch vụ [23] chính thể
hiện trong Hình 2.2:
Hình 2.2. Kiến trúc nhân RTOS
-
Quản lý tác vụ (Task Management): cung cấp các chức năng lập lịch
tác vụ, chuyển trạng thái tác vụ cũng như thiết lập độ ưu tiên cho tác
vụ.
-
Truyền thông tác vụ (Intertask Comunication & Synchronization):
cung cấp một số kỹ thuật cho phép các tác vụ có thể trao đổi thông tin
với nhau và một số cơ chế đồng bộ tác vụ.
-
Cấp phát bộ nhớ động (Dynamic Memory Allocation): hỗ trợ các
chức năng cấp phát và thu hồi bộ nhớ động một cách linh động để đảm
bảo tối ưu sử dụng bộ nhớ trong các ứng dụng thời gian thực vì bộ nhớ
trong các hệ nhúng thường rất nhỏ.
-
Dịch vụ hỗ trợ vào/ra (Device I/O Supervisor): nhiều nhân RTOS
cho phép làm việc với nhiều loại thiết bị vào ra khác nhau. Các dịch vụ
này cung cấp một khung thống nhất cho việc thiết lập và truy cập nhiều
trình điều khiển phần cứng điển hình của một hệ thống nhúng. Phần
mềm nhúng chạy trên nền RTOS chỉ sử dụng các hàm vào/ra hệ điều
hành cung cấp mà không quan tâm đến cấu trúc phần cứng của các loại
thiết bị vào/ra.
-
Dịch vụ định thời (Timer): vì hệ thời gian thực địi hỏi nghiêm nghặt
về thời gian nên hầu hết các nhân RTOS đều cung cấp bộ đếm thời
gian cơ cho phép tính toán trễ chuyển trạng thái, thời gian chờ, thời
gian thực thi để đảm bảo tác vụ hoàn thành đúng thời hạn (deadtime).
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
16
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
2.3. Các vấn đề cơ bản của RTOS
2.3.1. Hệ thống tiền cảnh/hậu cảnh
Hệ thống tiền cảnh/hậu cảnh (background/foreground): là một hệ thống có
kiến trúc gồm vịng lặp vơ hạn, và trong vịng lặp đó gọi các module để thực hiện
các tác vụ mong muốn.
Những hệ thống nhỏ có độ phức tạp thấp thường được thiết kế theo kiến trúc
tiền cảnh/hậu cảnh. Kiến trúc của hệ thống này được minh hoạ trong Hình 2.3 [8]:
Hình 2.3. Hệ thống tiền cảnh/hậu cảnh
Trong mơ hình trên, dịch vụ ngắt nắm giữ các sự kiện rời rạc ứng với phần
tiền cảnh. Tiền cảnh cũng còn được gọi là mức ngắt trong khi hậu cảnh được gọi là
mức tác vụ. Một hậu cảnh mức tác vụ có thể gọi nhiều ngắt trong tiền cảnh mức
ngăt. Các thao tác trong miền găng được thực thi bởi ISR để đảm bảo thời gian thi
hành của chúng nằm trong một khoảng thời gian không chia cắt. Vì thế, các ISR
thường có xu hướng chiếm nhiều thời gian trong chương trình. Hơn nữa, thơng tin
cho một module hậu cảnh được tạo bởi ISR không được xử lý cho tới khi tiến trình
hậu cảnh nhận nó và thực thi. Điều này được gọi là đáp ứng ở mức tác vụ. Trong
trường hợp xấu nhất, thời gian đáp ứng ở mức tác vụ phụ thuộc vào thời gian mà
tiến trình hậu cảnh lặp chiếm để thực thi. Vì thời gian thi hành của một mã điển
hình khơng phải là hằng số nên thời gian cho một đoạn mã lặp là không thể xác
định được. Hơn nữa, nếu như thay đổi mã thì thời gian lặp cũng bị thay đổi.
Hầu hết các ứng dụng dựa trên các vi xử lý giống như trong lị vi sóng, điện
thoại, đồ chơi đều được thiết kế theo hệ thống tiền cảnh/hậu cảnh. Trong những
ứng dụng này, theo quan điểm tiết kiệm điện, hệ thống sẽ ngắt vi xử lý và thực thi
tất cả các quá trình xử lý trong các ngắt.
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
17
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
2.3.2. Miền găng
Miền găng (Critical Session) là đoạn mã lệnh có khả năng xảy ra mâu thuẫn
khi truy xuất tài nguyên chung. RTOS cần cài đặt các giải pháp đồng bộ để giải
quyết vấn đề độc quyền truy xuất: quyết định tiến trình nào sẽ được vào miền găng
(thực hiện các lệnh trong miền này); khi một tiến trình đang ở miền găng thì các
tiến trình khác không thể vào miền găng.
Đa số các RTOS đều hỗ trợ một số giải pháp đảm bảo đồng bộ tác vụ cũng
như truy xuất tài nguyên chung trong miền găng. Một số giải pháp thường được cài
đặt như: simaphore, test & set, queue, mailbox,… [7].
2.3.3. Tài nguyên
Tài nguyên là bất kì đối tượng nào được sử dụng bởi các tác vụ. Tài nguyên
có thể là thiết bị vào/ra như máy in, bàn phím, màn hình hay bộ nhớ, …
Tài nguyên chia sẻ có thể được sử dụng bởi nhiều tác vụ. Điều này địi hỏi
phải có cơ chế chia sẻ tài nguyên sao cho đảm bảo vấn đề toàn vẹn dữ liệu và đồng
bộ hố các tác vụ.
2.3.4. Tính đa nhiệm
Tính đa nhiệm là việc lập lịch và luân chuyển CPU giữa các tác vụ sao cho
nhiều tác vụ có thể cùng hoạt động tại một thời điểm.
Với hệ thống đơn CPU, tuy nhiều tác vụ hoạt động đồng thời nhưng tại một
thời điểm chỉ có một tác vụ được sử dụng CPU. Đa nhiệm cũng giống như tiến
trình tiền cảnh/hậu cảnh với nhiều hậu cảnh. Đa nhiệm tối ưu hoá hiệu suất của
CPU và cho phép các ứng dụng khả năng mơ-đun hố. Do đó, chương trình ứng
dụng sẽ dễ thiết kế và bảo trì hơn nếu sử dụng đa nhiệm [7].
2.3.5. Tác vụ và trạng thái tác vụ
Tác vụ, cịn gọi là tiến trình, là một thể hiện của chương trình trong quá trình
thực hiện.
Quá trình thiết kế cho các ứng dụng thời gian thực liên quan tới việc chia
công việc thành các tác vụ, mỗi tác vụ đáp ứng một phần của vấn đề. Mỗi tác vụ
được ấn định một mức ưu tiên, sở hữu 1 tập các thanh ghi,và miền ngăn xếp của nó.
Khoa Cơng Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
18
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
Mỗi tác vụ có các trạng thái được chỉ ra trong Hình 2.4 [7]:
Hình 2.4. Trạng thái tác vụ
-
Running – có nghĩa bộ vi xử lý đang thực thi các chỉ lệnh tạo nên tác
vụ. Vì chỉ có một bộ vi xử lý nên tại một thời điểm bất kì nhất định chỉ
có một tác vụ ở trạng thái running
-
Ready – có nghĩa là tác vụ đã có đủ tài nguyên để thực thi nếu bộ vi xử
lý sẵn có. Số tác vụ có thể ở trong trạng thái này là bất kì
-
Blocked – có nghĩa là tác vụ này khơng có bất cứ tài ngun nào để
hiện ngay bây giờ, thậm chí bộ vi sử lý đang sẵn dùng. Các tác vụ rơi
vào trạng thái này bởi vì chúng đang đợi vài sự kiện bên ngồi. Số tác
vụ trong trạng thái này có thể là bất kỳ.
2.3.6. Chuyển ngữ cảnh
Ngữ cảnh của tác vụ là tồn bộ các thơng tin mơ tả tác vụ ở một thời điểm cụ
thể bao gồm: giá trị các thanh ghi, trạng thái tiến trình và thơng tin quản lý bộ
nhớ.
Khi nhân đa nhiệm quyết định chạy một tác vụ khác, nó lưu ngữ cảnh của tác
vụ hiện thời trong miền chứa ngữ cảnh của tác vụ hiện thời. Sau đó, nó khơi phục
ngữ cảnh của tác vụ mới từ miền lưu ngữ cảnh và thực thi mã của tác vụ mới. Quá
trình này được gọi là chuyển ngữ cảnh hoặc chuyển tác vụ. Quá trình này dễ làm
tràn bộ nhớ của ứng dụng vì nó địi hỏi nhiều thanh ghi hơn. Thời gian cần thiết để
thực hiện chuyển ngữ cảnh được xác định bằng cách đo số lần lưu hoặc khơi phục
các thanh ghi. Điều này có liên quan tới khả năng xử lý của nhân (thực thi được bao
nhiêu q trình chuyển ngữ cảnh trong một giây).
Khoa Cơng Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
19
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
2.3.7. Nhân thời gian thực
Nhân thời gian thực là thành phần cốt lõi của hệ thống thời gian thực đáp
ứng cho việc quản lý các tác vụ và giao tiếp giữa các tác vụ [23].
Các dịch vụ nền tảng được cung cấp bởi nhân là việc chuyển ngữ cảnh. Tác
dụng của nhân thời gian thực sẽ làm đơn giản hố q trình thiết kế hệ thống bằng
cách cho phép ứng dụng có thể chia thành nhiều tác vụ được nhân quản lý. Một
nhân sẽ làm hệ thống nặng hơn vì nó địi hỏi thêm ROM cho không gian mã, thêm
RAM cho cấu trúc dữ liệu nhân nhưng quan trọng nhất, mỗi tác vụ yêu cầu stack
của nó. Điều này làm tiêu tốn dung lượng nhớ RAM. Nhân cũng tiêu thụ thời gian
của CPU.
Mục đích của nhân nhằm tăng tác dụng của CPU bằng cách cung cấp các dịch
vụ cần thiết như quản lý semaphore, mailbox, queue, trễ thời gian,… Khi thiết kế
sử dụng nhân thời gian thực, người thiết kế hầu như không muốn quay lại hệ thống
tiền cảnh/hậu cảnh.
Nhân không ưu tiên (Non-preemptive) – Nhân độc quyền [25]:
Nhân không ưu tiên cho phép khi một tác vụ đang sử dụng CPU và thực hiện
thì nó khơng bị tác vụ khác có mức ưu tiên cao hơn chiếm quyền sử dụng CPU.
Nghĩa là khi một tác vụ đang thực hiện, khơng tác vụ nào có thể đẩy nó ra khỏi
trạng thái Run trừ khi nó tự nguyện giải phóng CPU. Giả sử ISR làm cho tác vụ có
độ ưu tiên cao hơn tác vụ đang chạy chuyển trạng thái Ready thành Run, nhưng tác
vụ đang chạy chưa trả quyền điều khiển CPU, ISR cũng chỉ trả về một tác vụ có
trạng thái bị ngắt. Khi tác vụ hiện thời trả quyền điều khiển CPU, tác vụ ngắt này
mới có thể được thực thi. Lợi ích của kiều nhân này là làm giảm thời gian trễ của
ngắt (ngắt có thể kết thúc ngay sau khi gán thơng tin cho tác vụ), và nhân không
phải quan tâm nhiều tới vấn đề miền găng. Hình 2.5 dưới đây là hình ảnh minh hoạ
cho hoạt động của nhân khơng ưu tiên:
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
20
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
Hình 2.5. Minh họa nhân khơng ưu tiên
Hạn chế lớn nhất của nhân không ưu tiên là tính đáp ứng kịp thời. Để chạy tác
vụ có độ ưu tiên cao, có khi phải đợi rất lâu đến khi tác vụ đang chạy trả quyền điều
khiển CPU.
Nhân ưu tiên (preemptive) [25]:
Nhân ưu tiên được sử dụng khi việc đáp ứng hệ thống là quan trọng. Vì thế,
μC/OS và hầu hết các nhân thời gian thực thương mại đều là preemptive. Tác vụ có
độ ưu tiên cao nhất ln nhận được ngay quyền điều khiển CPU. Hình 2.6 minh
hoạ hoạt động của nhân ưu tiên:
Hình 2.6. Minh họa nhân ưu tiên
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
21
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
Với nhân ưu tiên, có thể xác định được sự thực thi của tác vụ có độ ưu tiên
cao nhất, xác định được khi nào tác vụ thực thi, và tối thiểu hoá được thời gian đáp
ứng.
Trong kiểu nhân ưu tiên, cả tác vụ có độ ưu tiên thấp và tác vụ có độ ưu tiên
cao đều sử dụng hàm chung nên cần đảm bảo vấn để chia sẻ dữ liệu và miền găng.
2.3.8. Bộ lập lịch
Bộ lập lịch còn gọi là bộ điều phối là một phần mà nhân đáp ứng cho việc xác
định tác vụ nào sẽ chạy tiếp sau tác vụ hiện thời. Hầu hết các nhân thời gian thực
đều dựa trên độ ưu tiên để lập lịch tác vụ. Mỗi tác vụ được gán một độ ưu tiên.
CPU luôn chọn tác vụ có độ ưu tiên cao nhất nằm trong trạng thái ready để chạy.
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
22
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
2.4. Phát triển các ứng dụng thời gian thực trên RTOS
2.4.1. Mơ hình tích hợp
Hầu hết các hệ nhúng thời gian thực đều hạn chế về khả năng xử lý của
CPU, dung lượng lưu trữ của bộ nhớ, hạn chế về năng lượng và có các yêu cầu về
khả năng đáp ứng, yêu cầu về hiệu năng. Do đó các hệ điều hành thời gian thực
cũng cần nhỏ gọn để phù hợp với các giới hạn của hệ nhúng. Hầu hết các hệ điều
hành thời gian thực đều cung cấp dưới dạng các thư viện tối giản làm việc với một
số vi xử lý cụ thể cho các ứng dụng nhúng. Việc phát triển các ứng dụng nhúng
thời gian thực dựa trên hệ điều hành thời gian thực thường tn theo mơ hình tổng
quan trong Hình 2.7 dưới đây:
Ứng dụng nhúng thời gian thực:
- Sử dụng các hàm của RTOS
- Sử dụng các hàm IDE
IDE:
- Cung cấp thư viện các
hàm
- Biên dịch cả hàm của
ứng dụng và hàm của
RTOS
RTOS cung cấp:
- Các hàm thời gian thực
- Các hàm tối giản làm
việc với phần cứng
Hình 2.7. Mơ hình phát triển ứng dụng nhúng trên RTOS
2.4.2. Phát triển ứng dụng nhúng thời gian thực trên C/OS
Hệ điều hành µC/OS:
µC/OS được phát triển bởi Jean J. Labrosse [10], là nhân hệ điều hành thời
gian thực có tính khả chuyển cao, mềm dẻo, có tính năng lập lịch ưu tiên hoặc độc
quyền, có thời gian thực và đa tác vụ. µC/OS hỗ trợ nhiều bộ vi xử lý và rất gọn
nhẹ để sử dụng cho nhiều hệ thống nhúng. Phiên bản µC/OS-II tăng cường thêm
khả năng làm việc với nhiều vi xử lý khác nhau thông qua các cổng mà nhân hỗ trợ,
mỗi cổng giao tiếp với một môi trường có vi xử lý riêng. Mã nguồn của µC/OS
được viết bằng ngôn ngữ C trong môi trường phát triển Borland C/C++ phiên bản
từ 3.1.
Khoa Công Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
23
Đặc điểm nổi bật của µC/OS là tính gọn nhẹ và hỗ trợ nhiều vi xử lý. Các
ứng dụng nhúng trên µC/OS vừa sử dụng các hàm thư viện do và các hàm của môi
trường lập trình [9]. Hình 2.8 sau đây sẽ minh hoạ cấu trúc ứng dụng nhúng trên
µC/OS.
Chương trình nhúng sử dụng µC/OS
Thư viện chuẩn C
µC/OS
Port
Device 1
Device 2
Device 3
Hình 2.8. Cấu trúc chương trình nhúng sử dụng µC/OS
Sử dụng dịch vụ của µC/OS:
Một ứng dụng nhúng đóng gói sẽ bao gồm mã của µC/OS và các hàm chức
năng khác. Với các hệ điều hành trên desktop, khi máy làm việc, hệ điều hành sẽ
được nạp và chạy, nó ln chủ động kích hoạt và lập lịch cho các tiến trình người
dùng cũng như tiến trình hệ thống. Ngược lại, với µC/OS khi hệ thống làm việc,
chương trình nhúng sẽ bắt đầu trước và khởi tạo hệ điều hành; sau đó các tác vụ
người dùng thực hiện và kích hoạt hệ điều hành. Đoạn mã sau chỉ ra hoạt động của
một chương trình nhúng đơn giản có hai tácvụ [7]:
Khoa Cơng Nghệ Thơng Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ
Môi trường phát triển phần mềm
nhúng cho các thiết bị di động
24
Chương 3. Môi trường phát triển phần mềm nhúng
cho các thiết bị di động
3.1. Hệ điều hành trên thiết bị di động
Tốc độ phát triển vượt bậc của các thiết bị di động kéo theo sự phát triển các
hệ điều hành cho các thiết bị này. Hệ điều hành cho thiết bị di động không ngừng
cải tiến và mở rộng về khả năng kết hợp với các hệ thống khác, khả năng tích hợp
ứng dụng và hỗ trợ nhiều nền tảng phần cứng khác nhau. Hiện nay có các hệ điều
hành phổ biến sau [12], [13]:
-
Symbian: được dùng nhiều cho các máy Nokia, Ericsson, Motorola,
Panasonic, Psion, Lenovo, Siemens, NEC, Toshiba.
-
Windows Mobile:dùng cho các máy Compad, Dell và Motorola.
-
Palm OS: cho các máy Samsung, Sony, PalmOne, Foundertech.
-
Hệ điều hành phát triển trên Linux: được dùng trong các máy
Motorola, Nexterm, ELT, Samsung, Sony, Panasonic, Philips, NEC,
Toshiba. Hệ điều hành này có ưu điểm là mã nguồn mở nhưng hạn chế
về mặt hỗ trợ công nghệ.
Hệ điều hành trên thiết bị di động là một hệ điều hành nhúng bao gồm các
module hệ thống điều khiển phần cứng và cung cấp giao diện thông dịch lệnh cho
phép các chương trình người dùng. Điều này được chỉ ra trong Hình 3.1:
Ứng dụng 1
Hệ điều hành
Ứng dụng 2
Ứng dụng 3
Giao diện lập trình ứng dụng
Các khối điều khiển phần cứng
Máy Nokia
Máy Motorola,…
Hình 3.1. Tổng quan vai trị hệ điều hành
Khoa Cơng Nghệ Thông Tin
Học viên: Phạm Văn Hưởng
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội