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ị
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2BẢ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
Trang 33.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 toá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
Trang 4B.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
Trang 5BẢNG KÝ HIỆU
Ký hiệu Thuật ngữ Ý nghĩa Mục tham chiếu
ANN Artifical Neural
Network
Mạng nơ-ron nhân tạo 4.2
AppUI Application User
Interface class
Lớp giao diện người dùng ứng dụng
3.2.2.2
CPU Center Processor Unit Bộ xử lý trung tâm 2.3.7
DLL Dynamic link library Thư viện liên kết động 3.2.2.3
DOM Data Object Model Mô hình đối tượng dữ
3.2.3.1
J2ME Java to Micro Edition Nền tảng Java cho thiết
bị di động
3.4.1
JVM Java Virtual Machine Máy ảo Java 3.4.1
KVM K Virtual Machine Máy ảo Java cho thiết bị
3.4.2.1
RAM Random Access
Memory
Bộ nhớ truy cập ngẫu nhiên
2.3.7
ROM Read Only Memory Bộ nhớ chỉ đọc 2.3.7
RTOS Real time operating
3.3.2.2
Trang 61 Hình 1.1 Mô tả hệ nhúng thời gian thực 1.3.1
2 Hình 2.1 Khung nhìn tổng quan vể RTOS 2.1
4 Hình 2.3 Hệ thống tiền cảnh/hậu cảnh 2.3.1
6 Hình 2.5 Minh hoạ nhân không ưu tiên 2.3.5
7 Hình 2.6 Minh hoạ nhân ưu tiên 2.3.5
8 Hình 2.7 Mô hình phát triển ứng dụng nhúng trên
16 Hình 3.7 Giao diện Symbian Series 60 3.2.3.3
17 Hình 3.8 Giao diện ứng dụng console trên Symbian 3.2.3.3
18 Hình 3.9 Kiến trúc NET Compact Framework 3.3.2.1
19 Hình 3.10 Tạo project cho thiết bị di động 3.3.2.3
20 Hình 3.11 Thiết kế giao diện ứng dụng 3.3.2.3
21 Hình 3.12 Biên dịch ứng dụng 3.3.2.3
22 Hình 3.13 Chạy mô phỏng ứng dụng 3.3.2.3
24 Hình 3.15 Tiến trình xây dựng ứng dụng 3.4.1.1
25 Hình 3.16 Ứng dụng java trên thiết bị di động 4.4.1.2
27 Hình 3.17 Cấu trúc và vòng đời MIDlet 3.4.2.1
28 Hình 3.18 Tạo mới hoặc mở dự án trên J2ME
Wireless Toolkit
3.4.3
30 Hình 3.20 Biên dịch dự án 3.4.3
31 Hình 3.21 Chạy mô phỏng MIDlet 3.4.3
32 Hình 4.1 Cấu trúc ma ̣ng Perceptron đa tầng cho bài
toán nhận dạng chữ Nôm
4.2
33 Hình 4.2 Các gói chương trình 4.3.1
34 Hình 4.3 Biểu đồ ca sử dụng trong gói Desktop 4.3.1.1
35 Hình 4.4 Biểu đồ ca sử dụng trong gói Mobile 4.3.1.1
36 Hình 4.5 Biểu đồ lớp phân tích thực thi ca sử dụng
InputProcess
4.3.2.1
37 Hình 4.6 Biểu đồ lớp phân tích thực thi ca sử dụng 4.3.2.1
Trang 741 Hình 4.10 Biểu đồ lớp thiết kế gói Desktop 4.3.3.1
42 Hình 4.11 Biểu đồ lớp thiết kế cho gói Mobile 4.3.3.2
43 Hình 4.12 Biểu đồ tuần tự thực hiện phương thức
47 Hình 4.16 Giao diện gói Desktop 4.4.1
48 Hình 4.17 Giao diện và cấu trúc các lớp gói Mobile 4.4.2
49 Hình 4.18 Giao diện huấn luyện mạng trên Desktop 4.5
50 Hình 4.19 Form ứng dụng trên PocketPC 4.5
51 Hình 4.20 Giao diện nạp các file: trọng số và ngữ
nghĩa
4.5
52 Hình 4.21 Giao diện nạp ảnh nhận dạng 4.5
53 Hình 4.22 Kết quả nhận dạng trên Pocket PC 4.5
54 Hình 4.23 Thống kê kết quả thử nghiệm nhận dạng
chữ Nôm trên Desktop
4.5
55 Hình A.1 Lịch sử Windows CE Phụ lục A
56 Hình A.2 Lịch sử Windows Mobile Phụ lục A
57 Hình A.3 Tính năng của một số phiên bản Windows
61 Hình A.7 Kiến trúc Windows Embedded CE 6.0 Phụ lục A
62 Hình A.8 Mô hình lời gọi hệ thống trong Windows
Embedded CE 6.0
Phụ lục A
Trang 8MỞ ĐẦ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 toà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 toá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 hoà 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 quá trình hội
Trang 9nhậ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
Trang 10Chươ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 toán chuyên 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 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
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 toá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
Trang 11- 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 toà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 ngoà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 toá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 hoà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
Trang 12Hệ 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 1.1 Mô tả hệ nhúng thời gian thực
gian thực
Hệ nhúng thời gian thực
Trang 131.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 toá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 luôn được cân nhắc cùng với chi phí phát triển Ngoà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
Trang 14vi 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
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 hoà, hệ thống camera, hệ thống chuông 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
Trang 15Chươ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:
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 hoàn toà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 hoà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]
Real-time app
Trang 162.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)
Trang 172.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
Trang 182.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ộ hoá 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 hoá 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]
Trang 19Mỗ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 nguyên 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 ngoà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à toà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 quá trình chuyển ngữ cảnh trong một giây)
Trang 202.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 hoá quá 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:
Trang 21Hì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 luôn 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
Trang 22Vớ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
Trang 232.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 tuân theo mô hình tổng quan trong Hình 2.7 dưới đây:
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
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
Ứ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
Trang 24Đặ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
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ó luôn 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]:
Chương trình nhúng sử dụng µC/OS
Thư viện chuẩn C µC/OS
Device 1 Device 2 Device 3
Port
Trang 25Chươ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:
Hình 3.1 Tổng quan vai trò hệ điều hành
Ứng dụng 1 Ứng dụng 2 Ứng dụng 3
Hệ điều hành Giao diện lập trình ứng dụng
Các khối điều khiển phần cứng
Trang 26Việc tìm hiểu môi trường phát triển ứng dụng nhúng trên thiết bị di động cần hiểu hệ điều hành sử dụng cho thiết bị cũng như tìm hiểu các thư viện lập trình hệ điều hành cung cấp Ngoài ra, để mở rộng khả năng tích hợp ứng dụng, một số hệ điều hành có thể tích hợp thêm các nền tảng công nghệ mới cho các ứng dụng trên thiết bị di động Hai nền tảng phổ biến nhất hiện nay là NET Framework của Microsoft tích hợp trong Windows Mobile và nền tảng J2ME của Sun [11]
Trong các phần sau sẽ tìm hiểu về môi trường lập trình C/C++ trên hệ điều hành Symbian, NET Compact Framework trong Windows Mobile và J2ME
Trang 273.2 Môi trường lập trình trong Symbian
3.2.1 Hệ điều hành Symbian
Hệ điều hành Symbian là một hệ điều hành được thiết kế riêng để hoạt động tối ưu trên các thiết bị di động vốn hạn chế về tài nguyên Lịch sử của Symbian khởi nguồn từ nền tảng EPOC – đó là hệ điều hành sử dụng để điều khiển các thiết
bị nhỏ do công ty Psion đưa ra Sau đó một số công ty di đô ̣ng hàng đầu (Nokia, Siemen, …) mua lại P sion, thành lập lên Symbian EPOC phát triển với tên mới Symbian OS [22]
Hệ điều hành Symbian cung cấp một chuẩn mở Các nhà sản xuất muốn chạy Symbian cho thiết bị của mình cần tuân theo các chuẩn này Bất kỳ nhà sản xuất nào cũng có thể đươ ̣c cấp bản quyền sử du ̣ng Symbian
Symbian có mô ̣t số đă ̣c điểm cơ bản [29]:
- Tiết kiệm năng lươ ̣ng
- Đa nhiệm: nhiều chương trình hoa ̣t đô ̣ng đồng thời
- Chuẩn: cung cấp chuẩn mở Muốn sử du ̣ng Symbian, thiết bi ̣ phải tuân theo chuẩn này
- Hướ ng đối tươ ̣ng: Symbian đươ ̣c thiết kế theo phương pháp hướng đối tươ ̣ng
- Quản lý bộ nhớ: được tối ưu, thích hợp cho các hệ nhúng
- Bảo mật
- Hỗ trợ mã unicode
Kiến trúc Symbian gồm năm thành phần được chỉ ra trong Hình 3.2 dưới đây [29]:
Hình 3.2 Kiến trúc Symbian
Trang 28Nhân Symbian: bao gồm các module cốt yếu , hoạt động thường xuyên của
hệ điều hành và thường trực trong bô ̣ nhớ từ khi bâ ̣t máy đến khi tắt Nhân làm nhiệm vụ quản lý các dịch vụ và các bả ng dữ liê ̣u của symbian Nhân bao gồm các thành phần [21]:
- Tập hợp các trình điều khiển phần cứng
- Các bảng dữ liệu: thông tin cấu hình hê ̣ thống…
- Chương trình cho phép giao tiếp với phần cứng
Tầng hệ thống [21]:
- Là phần mềm hệ trung gian, cung cấp các thư viê ̣n , kho dữ liê ̣u , các chương trình hê ̣ thống: quản lý dữ liệu, giao tiếp, đồ ho ̣a
- Không cần thiết phải đă ̣t trong nhân, đươ ̣c go ̣i khi cần
- Mục đích: thiết kế các di ̣ch vu ̣ hê ̣ thống mới , nâng cấp các di ̣ch vu ̣ hê ̣ thống cũ mà không cần viết la ̣i nhân
- Tầng hệ thống cung cấp các dịch vu phổ biến:
o Hê ̣ thống cửa sổ
o Giao tiếp ma ̣ng, cổng nối tiếp, bluetooth, hồng ngoa ̣i
o Quản lý đa phương tiện
o Cơ sở dữ liê ̣u
Tầng vận hành ứng dụng (Application Engine)[21]:
- Quản lý dữ liệu, ứng dụng người dùng, không liên quan đến hệ thống
- Các ứng dụng người dùng tương tác với application engine , application engine tương tác với middleware
Tầng giao diện người dùng (User Interface Framework) [14]:
- Yêu cầu giao diện người dùng: dễ sử du ̣ng, dễ thay đổi, dễ lâ ̣p trình
- Mỗi thiết bị khác nhau cần mô ̣t kiểu giao diê ̣n phù hợp
- Framework giao diện người dùng được thiết kế như mô ̣t phần của nhân Symbian Mục đích của nền giao diện nhằm cung cấp các lớp thao tác giao diê ̣n người dùng
- Kỹ thuật đồng bộ ứng dụng (Synchronization technology ): Kỹ thuật cho phép đồng bô ̣ dữ liê ̣u với các máy khác nhau Kỹ thuật đồng bộ gồm 3 nô ̣i dung chính:
Trang 29o Quản lý kết nối: tiến trình người dùng trên symbian phát hiê ̣n và
đồng bô ̣ hóa kết nối khi có yêu cầu kết nối
o Thực hiê ̣n di ̣ch vụ khi kết nối : các dịch vụ như duyệt file , sao
lưu, phục hồi
o Chuyển dạng file: cho phép chuyển đổi đi ̣nh da ̣ng file khác nhau
giữa các ứng du ̣ng
Tầng máy ảo Java (JVM – java virtual machine):
- Symbian OS hỗ trợ framework J2ME( java to micro edition)
- J2ME: do sun phát triển để lâ ̣p trình java trên các thiết bi ̣ cầm tay 3.2.2 Thực thi ứng dụng trên Symbian
3.2.2.1 Phân loại ứng dụng
Trên Symbian, ứng dụng được chia thành hai loại: ứng dụng hướng file based application) và ứng dụng không hướng file [29]:
(file Ứng dụng không hướng file: là các ứng dụng không yêu cầu lưu trữ
dữ liệu lâu dài như: các ứng dụng tính toán (calculator), các trò chơi
- Ứng dụng hướng file: là các ứng dụng cần lưu trữ thông tin lâu dài
như: xử lý văn bản, quản lý liên lạc, … Khi phát triển các ứng dụng hướng file cần quan tâm đến vấn đề quản lý dữ liệu lưu trữ lâu dài Theo đó, ứng dụng hướng file cũng được chia thành hai loại:
là cơ sở để xác định tài liệu thuộc ứng dụng nào, chúng không dựa trên phần mở rộng của tên như trên các hệ điều hành khác Một số file tài liệu dạng này có thể cho phép nhúng một tài liệu của một ứng dụng khác, biến tài liệu tồn tại độc lập này thành một phần tài liệu của nó Ví dụ file hình ảnh có thể nhúng vào một file danh bạ
Trang 30o Ứng dụng file cơ sở dữ liệu: là các ứng dụng file nhưng tài liệu
của nó là các file cơ sở dữ liệu Tại mỗi thời điểm sử dụng, chỉ nạp và lưu các bản ghi có cấu trúc trên cơ sở dữ liệu qua việc sử dụng các đầu vào tương ứng nhờ các chỉ mục Đối với các ứng dụng file này, dữ liệu thật lại nằm trên đĩa trong các file cơ sở
dữ liệu, còn trên RAM chỉ là các đoạn dữ liệu sao chép từ file
cơ sở dữ liệu
3.2.2.2 Cấu trúc ứng dụng
Cấu trúc một ứng dụng trên Symbian thường bao gồm bốn lớp [29]:
- Lớp ứng dụng (Application): lớp ứng dụng định nghĩa các thuộc tính
ứng dụng, và tạo ra các file mới cho ứng dụng Trong trường hợp đơn giản nhất, nó chỉ bao gồm định danh ứng dụng UID
- Lớp tài liệu (Document): đại diện cho mô hình dữ liệu của ứng dụng
Nếu ứng dụng là ứng dụng file, các ứng dụng phục vụ chính cho việc tạo các file tài liệu, lớp này sẽ đảm nhận việc nạp và lưu trữ các file tài liệu cho ứng dụng Với các ứng dụng không phải là ứng dụng file, lớp tài liệu vẫn tồn tại với mục đích để nạp phần giao diện ứng dụng
- Lớp giao diện ứng dụng (AppUI – application user interface):
Nhiệm vụ chính của lớp này là cung cấp sự tương tác giữa ứng dụng với người dùng qua các đối tượng điều khiển như toolbar hay menu, đồng thời cho phép tạo các khung nhìn giao tiếp giữa ứng dụng và người dùng
- Lớp hiển thị (AppView): đây thực chất là một điều khiển, mục đích
chính của nó là thể hiện các dữ liệu của ứng dụng lên màn hình và cho phép người dùng tương tác với nó
3.2.2.3 Thực thi ứng dụng trên Symbian
a) Các kiểu thực thi ứng dụng:
Trên Symbian hỗ trợ hai hệ thống chương trình ứng dụng với các kiểu file khác nhau:
- Chương trình exe: được lưu trữ trong các file thực thi có phần mở
rộng là exe Đây là chương trình với một đầu vào chính từ hàm E32Main() Khi hệ thống nạp một chương trình exe mới, đầu tiên nó tạo một tiến trình mới Trong luồng chính của tiến trình này, điểm vào
sẽ được gọi để thực thi chương trình
Trang 31- Thư viện liên kết động (Dynamic link library-DLL): một thư viện
chứa các mã chương trình với nhiều điểm đầu vào Hệ thống sẽ nạp một DLL vào trong ngữ cảnh hoạt động của tiểu trình Có 2 loại DLL quan trọng:
o Shared DLL: cung cấp một nhóm hàm API nhất định cho một
hay nhiều chương trình sử dụng Hầu hết các thư viện này nằm trong các file có phần mở rộng là dll Một chương trình thực thi
sẽ được nối với thư viện dùng chung mà nó yêu cầu và khi hệ thống nạp chương trình thực thi, thư viện dùng chung cần cho chương trình này sẽ được nạp tự động
o Polymorphic DLL: cung cấp một nhóm hàm API được lưu trữ
trong các file có phần mở rộng khác nhau phục vụ cho các chức năng riêng như điều khiển máy in (.prn), giao thức socket (.prt), hay đó là một ứng dụng đồ họa GUI (.app) Trong hệ điều hành Symbian, polymorphic DLL thường chỉ có một điểm vào, nó khai báo và khởi tạo một lớp dẫn xuất từ các lớp cơ sở trong DLL này Thư viện DLL loại này được nạp bởi chương trình sử dụng nó
b) Nạp chương trình:
Các file thực thi chứa ba loại dữ liệu nhị phân: mã chỉ thị, dữ liệu chỉ đọc và
dữ liệu thay đổi được [21]
- Chương trình exe: Khi chương trình exe được nạp vào RAM từ file
.exe được lưu trên RAM (đĩa C) hoặc từ thẻ nhớ (đĩa D), thì nó được cấp một vùng nhớ riêng cho mã, dữ liệu chỉ đọc, dữ liệu động Nếu một phiên bản thứ 2 của chương trình được nạp vào RAM thì một vùng nhớ mới sẽ được cấp cho nó Với file chương trình exe chứa trong ROM (ổ đĩa Z) thì chỉ có dữ liệu động được nạp vào RAM, mã chỉ thị và dữ liệu chỉ đọc được đọc trực tiếp từ ROM
- Thư viện DLL: Khi một thư viện DLL lần đầu tiên được nạp vào
RAM, nó được cấp một vùng nhớ riêng, khi được yêu cầu sử dụng lần thứ hai, nó không nạp tiếp DLL này vào RAM mà đơn giản chỉ gắn địa chỉ nó trên RAM cho luồng yêu cầu Hệ điều hành Symbian kiểm tra
số lượng luồng tham chiếu đến DLL này và giải phóng nó khi không còn luồng nào sử dụng nó nữa Với các DLL chứa trên ROM thì không cần nạp vào RAM nữa mà được sử dụng trực tiếp trên ROM
Trang 32c) Thực thi ứng dụng:
Ứng dụng dòng lệnh được thực thi qua file chương trình exe Các ứng dụng dạng này phải tạo một giao diện dòng lệnh riêng để tương tác với người dùng Các ứng dụng có giao diện đồ họa là những thư viện polymorphic DLL với phần mở rộng là app Tiến trình ứng dụng được tạo bởi một chương trình nhỏ là Apprun.exe, , tên của file chương trình ứng dụng app được chuyển làm tham số cho Apprun.exe
Trang 333.2.3 Xây dựng ứng dụng trên Symbian với C/C++
Như đã đề cập trong phần trước, có thể phát triển ứng dụng trên Symbian với hai môi trường lập trình chủ yếu là Java và C/C++ Tuy nhiên Symbian cung cấp nhiều thư viện lập trình và cung cấp giao diện API tốt hơn cho các ứng dụng C/C++ Hơn nữa các thiết bị sử dụng hệ điều hành Symbian thường hạn chế về khả năng phần cứng do đó khi phát triển ứng dụng trên Symbian thì lựa chọn môi trường C/C++ tối ưu hơn Trong phần này sẽ trình bày về nền tảng Symbian và môi trường phát triển tích hợp C/C++ trên Symbian [13]
3.2.3.1 Symbian Flatform
Các hãng sản xuất điện thoại khi sử dụng hệ điều hành Symbian cho thiết bị của mình thường tích hợp thêm một số phần mềm hệ thống cho các công nghệ mới tạo thành các nền tảng Symbian Có thể tổng quát như sau [29]:
Symbian Flatform = Hệ điều hành Symbian + Phần mềm hệ thống tích hợp (ISS - Intergrated System Software)
Các nền tảng Symbian phổ biến hiện nay là: Series 60, Symbian UIQ, Series
80 và Series 90, trong đó phổ biến nhất là Series 60 với Nokia 7650,3650,3660 Một số công nghệ tích hợp trong Series 60 được mô tả trong Hình 3.3:
Hình 3.3 Công nghệ tích hợp trong Series 60
3.2.3.2 Các SDK và IDE phổ biến
Công việc xây dựng ứng dụng trên Symbian là tương đối phức tạp, trước hết cần phân biệt rõ thuật ngữ SDK và IDE Symbian SDK là bộ công cụ phát triển được dùng cho việc phát triển ứng dụng chạy trên điện thoại Symbian Mỗi một nền hệ thống sẽ có bộ SDK (Software Development Kit) riêng với nhiều phiên bản theo các phiên bản hệ điều hành và các IDE hỗ trợ Mỗi bộ Symbian SDK bao gồm các thành phần sau [20]:
Trang 34- Một chương trình giả lập Emulator của điện thoại Symbian mà bộ SDK
hỗ trợ chạy trên hệ điều hành Windows Các chương trình ứng dụng sẽ được kiểm lỗi và chạy thử trước khi được cài đặt trên điện thoại Symbian Chương trình Emulator và các phần liên quan được lưu trữ trong thư mục Epoc32
- Các file header và thư viện phục vụ cho phát triển ứng dụng chứa trong thư mục con Epoc32\include
- Một trình biên dịch dựa trên GCC để biên dịch ứng dụng cho điện thoại Symbian chứa trong thư mục con Epoc32\gcc
- Các công cụ bổ sung dùng cho quá trình phát triển, biên dịch và triển khai ứng dụng nằm trong thư mục Epoc32\tool
- Tài liệu tham khảo và các ví dụ tham khảo cho các lập trình viên nằm trong thư mục con Documentation và Example
Trong khi đó, IDE (Integrated Development Environment) là môi trường phát triển tích hợp cho một hoặc một số ngôn ngữ lập trình nhất định, nó thường tích hợp: môi trường soạn thảo, trình biên dịch hoặc thông dịch Các IDE choC/C++ trên Symbian thường không chứa các SDK mà nó làm việc với một số SDK nhất định Một số IDE cho Symbian phổ biến: MS Visual C++ 6.0 hay NET, Borland C++ Builer 6.0, BuilderX và Metrowerks Code Warrior, … trong đó mới nhất và được dùng phổ biến là Carbide C/C++ do Nokia phát triển [14]
3.2.3.3 Các bước xây dựng ứng dụng trên Series 60 với Carbide C/C++
Trong phần này trình bày các sử dụng IDE Carbide C/C++ để phát triển ứng dụng Thiết lập môi trường này cần cài đặt thêm SDK: S60-SDK-200634-3.1-Cpp-f.1090b và cài đặt ActivePerl-5.6.1.638-MSWin32-x86.msi Các bước xây dựng một chương trình đơn giản được trình bày như sau [15]:
Trang 35- Tạo một dự án Symbian mới như Hình 3.4 và Hình 3.5:
Hình 3.4 Mở một dự dán Symbian mới
Hình 3.5 Hoàn tất tạo dự án
Trang 36- Xây dựng mã nguồn ứng dụng như Hình 3.6:
Trang 37Hình 3.8 Giao diện ứng dụng console trên Symbian
Trang 383.3 Môi trường NET Compact Framework trong Windows Mobile
3.3.1 Hệ điều hành Windows Mobile
Windows Mobile có nguồn gốc từ Windows CE Windows CE 1.0 được dùng trong Palm-Size PC từ năm 1998, nhưng trước đó nó đã được dùng trong các Handheld PC từ năm 1996 Handheld PC có dạng như một laptop thu nhỏ với đầy
đủ bàn phím, chuột,… và chưa có màn hình cảm ứng như trên Pocket PC [22] Máy Handheld PC Pegasus sản xuất năm 1996 của hãng HP, sử dụng Windows CE 1.0, màn hình đơn sắc Monochrome và bán được hơn nửa triệu thiết
bị trong năm đầu tiên Giao diện Windows CE 1.0 được thiết kế theo giao diện của Windows 95
Năm 1997, Handheld PC Mercury ra đời với HĐH Windows CE 2.0, màn hình VGA 256 màu tích hợp ứng dụng Office và vẫn giữ giao diện của Windows
Năm 2003, Windows CE được nâng cấp lên phiên bản 4.x khá hoàn thiện và
đủ sức cạnh tranh với hệ điều hành Symbian nhờ vào các tính năng Bluetooth, công nghệ NET Compact Framework, không dây và chương trình Windows Media Player 9.0 Windows CE 4.x được đổi tên thành Windows Mobile Cũng giống như Windows trên PC, Windows Mobile cũng dùng năm ra đời để đánh dấu các phiên bản khác nhau như: Windows Mobile 2003, Windows Mobile 2003 Second Edition (2004), Windows Mobile 5.0 (2005) [22]
Hiện nay, hệ điều hành Windows Mobile 5.0 tích hợp sẵn NET Compact Framework đã cung cấp môi trường nền tảng và tiện lợi cho việc tích hợp các ứng dụng nhúng trên Pocket PC hoặc các thiết bị cầm tay thông minh
3.3.2 .NET Compact Framework
3.3.2.1 Kiến trúc tổng quan NET Compact Framework
a) Kiến trúc
.Net Compact Framework kế thừa từ nền tảng Net Framework đầy đủ của ngôn ngữ chung thời gian chạy (common runtime language - CRL), nền tảng này được tích hợp sẵn trong môi trường phát triển tích hợp Visual Studio.net .Net
Trang 39Compact Framework cung cấp các khả năng làm việc tốt với hệ điều hành Window
CE bằng cách sử dụng các dịch vụ hệ điều hành cung cấp
Kiến trúc của Net Compact Framework được chỉ rõ trong Hình 3.9 [16]:
Hình 3.9 Kiến trúc NET Compact Framework
Windows CE làm việc với phần cứng của một vài loại thiết bị cầm tay và cung cấp thư viện API cho các chương trình ứng dụng làm việc độc lập phần cứng Thành phần CLR của NET Compact Framework sử dụng thư viện của Windows
CE để giao tiếp với thiết bị đồng thời quản lý và thực thi các ứng dụng đã được biên dịch sang CLR
So với NET Framework, tầng CRL của NET Compact Framework cũng được xây dựng lại cho phù hợp với những hạn chế về bộ nhớ, vi xử lý của thiết bị cầm tay cũng như vấn đề tiết kiệm năng lượng Giữa tầng CRL và Windows CE có một phần nhỏ của NET Compact đóng vai trò tầng tương thích nền tảng cho phép ánh xạ các dịch vụ và giao diện thiết bị của NET Compact Framework sang dịch
vụ và giao diện thiết bị của Windows CE
Tầng Framework là một phần của nền tảng NET đầy đủ, cung cấp thư viện các lớp để phát triển ứng dụng chạy trên NET Compact Framework Tầng này cũng chứa các đặc tính cho phép thiết kế các lớp dễ dàng bằng giao diện đồ hoạ, cũng như việc chuyển đổi linh động giữa ứng dụng trên desktop sang thiết bị cầm tay
b) Tiến trình (Miền ứng dụng)
Tiến trình NET Compact Framework là một quá trình thực hiện của một ứng
Trang 40Framework cho phép quản lý tài nguyên chặt chẽ, đảm bảo khi tiến trinh kết thúc các tài nguyên nó sử dụng phải được giải phóng hoặc trả về cho hệ điều hành quản
c) Yêu cầu bộ nhớ thiết bị
Kích thước lưu trữ Net Compact Framework:
- Tiết kiệm năng lượng
- Khoảng 5-10 lần, NET Compact Framework và ứng dụng đang chạy
sẽ được tái lưu trữ vào DRAM
- Không gian làm việc nhỏ: từ 128 KB đến 1 MB trong DRAM
- Không cần thiết ổ cứng
Sử dụng RAM:
- RAM được sử dụng để lưu trữ các cấu trúc dữ liệu động và các mã đã dịch sang JIT (Just-In-Time) JIT là mã được thông dịch từ mã CRL bởi bộ phận thích nghi nền tảng của NET Compact Framework Các
mã đã sinh và các cấu trúc dữ liệu được NET Compact Framework lưu trữ đệm trong vùng nhớ riêng của ứng dụng với kích thước được giảm tới tối thiểu