ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN MINH TUẤN
PHÂN TÍCH, THIẾT KẾ PHẦN MỀM NHÚNG
LUẬN VĂN THẠC SỸ
HÀ NỘI, 2008
Luận văn Thạc sĩ 2008
1
Phân tích, Thiết kế phần mềm nhúng
MỤC LỤC
DANH MỤC HÌNH VẼ BẢNG BIỂU TRONG LUẬN VĂN ................................. 3
BẢNG THUẬT NGỮ VÀ KÝ HIỆU SỬ DỤNG ..................................................... 5
LỜI GIỚI THIỆU ..................................................................................................... 6
CHƢƠNG 1: TỔNG QUAN VỀ THIẾT KẾ........................................................... 8
HỆ THỐNG NHÚNG ............................................................................................... 8
1.1 Hệ nhúng và các khái niệm ................................................................................ 8
1.1.1 Hệ thống nhúng .......................................................................................... 8
1.1.2 Hệ thống nhúng thời gian thực .................................................................... 8
1.2 Giới thiệu chung về thiết kế hệ thống nhúng .................................................... 10
1.2.1 Xác định yêu cầu sản phẩm ....................................................................... 11
1.2.2 Lựa chọn bộ vi xử lý ................................................................................. 11
1.2.2 Phân bổ giữa phần cứng và phần mềm ...................................................... 12
1.2.3 Thực hiện và lặp lại................................................................................... 14
1.2.4 Thiết kế chi tiết phần cứng và phần mềm .................................................. 14
1.2.5 Tích hợp phần cứng phần mềm ................................................................. 15
1.2.6 Kiểm thử ................................................................................................... 16
1.2.7 Bảo trì và cập nhật .................................................................................... 16
CHƢƠNG 2: THIẾT KẾ PHẦN MỀM NHÚNG ................................................. 17
2.1 Phần mềm nhúng ............................................................................................. 17
2.1.1 Sự khác biệt giữa phần mềm nhúng và phần mềm thông thường trên PC .. 18
2.1.2 Nguyên tắc thiết kế chung ......................................................................... 19
2.1.3 Thiết kế phần mềm nhúng với RTOS ........................................................ 20
2.2 Kiến trúc phần mềm nhúng.............................................................................. 24
2.2.1 Round robin .............................................................................................. 24
2.2.2 Round robin với ngắt ................................................................................ 25
2.2.3 Kiến trúc Function – Queue - Scheduling.................................................. 26
2.2.4 Kiến trúc Hệ điều hành thời gian thực (RTOS) ......................................... 27
2.3 Các phương pháp đặc tả và thiết kế phần mềm nhúng...................................... 28
2.3.1 Phương pháp đặc tả hình thức (formal method) ......................................... 28
2.3.2 Phương pháp đặc tả bán hình thức (semi-formal method).......................... 30
2.4 Công cụ phát triển phần mềm nhúng ............................................................... 35
2.5 Case study về thiết kế phần mềm nhúng .......................................................... 38
2.5.1 Phân tích yêu cầu ...................................................................................... 38
2.5.2 Thiết kế..................................................................................................... 44
2.5.3 Phân chia tác vụ ........................................................................................ 48
2.5.4 Kiến trúc phần cứng của hệ thống ............................................................. 48
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
2
Phân tích, Thiết kế phần mềm nhúng
CHƢƠNG 3: HỆ ĐIỀU HÀNH THỜI GIAN THỰC ........................................... 49
3.1 Tính đa nhiệm ................................................................................................. 49
3.1.1 Lập lịch ưu tiên (Preemptive Scheduling) ................................................. 51
3.1.2 Kích hoạt và bỏ kích hoạt tác vụ (Activation and Deactivation of Tasks) .. 51
3.1.3 Lập lịch hướng sự kiện (Event-Driven Scheduling)................................... 51
3.2 Theo dõi các tác vụ.......................................................................................... 52
3.3 Truyền thông giữa các tác vụ ........................................................................... 52
3.4 Quản lý bộ nhớ ................................................................................................ 54
3.5 Quản lý tài nguyên .......................................................................................... 54
3.6 RTOS và ngắt .................................................................................................. 55
3.7 Liên lạc trong RTOS thông dụng ..................................................................... 56
3.8 Khả năng sử dụng RTOS ................................................................................. 56
3.9 Ưu nhược điểm của hệ điều hành thời gian thực .............................................. 57
3.10 Hệ điều hành thời gian thực µC/OS ............................................................... 58
CHƢƠNG 4: CÁC CÁCH TIẾP CẬN VỚI BÀI TOÁN NHẬN DẠNG CHỮ
NÔM ........................................................................................................................ 63
4.1 Nhận dạng chữ Nôm bằng mạng nơ-ron .......................................................... 63
4.1.1 Áp dụng mạng nơ-ron trong nhận dạng chữ Nôm...................................... 63
4.1.2 Thực nghiê ̣m ............................................................................................. 64
4.2 Ứng dụng Tesseract để nhận dạng chữ Nôm .................................................... 66
4.2.1 Tóm tắt về Tesseract ................................................................................ 66
4.2.2. Áp dụng với chữ Nôm.............................................................................. 68
4.3. So sánh và thảo luận ....................................................................................... 69
CHƢƠNG 5: ỨNG DỤNG VÀ PHÁT TRIỂN PHẦN MỀM NHẬN DẠNG CHỮ
NÔM CHO THIẾT BỊ NHÚNG ............................................................................ 70
5.1 Phân tích ứng dụng trên môi trường nhúng ...................................................... 70
5.2 Thực nghiệm chương trình nhận dạng dựa trên Tesseract với môi trường µC/OS
.............................................................................................................................. 76
KẾT LUẬN ............................................................................................................. 77
TÀI LIỆU THAM KHẢO ...................................................................................... 78
PHỤ LỤC ................................................................................................................ 80
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
3
Phân tích, Thiết kế phần mềm nhúng
DANH MỤC HÌNH VẼ BẢNG BIỂU TRONG LUẬN VĂN
DANH MỤC HÌNH VẼ
Hình 1.1 Quan hệ giữa hệ nhúng và thời gian thực ...................................................... 9
Hình 1.2 Quy trình thiết kế co-design ....................................................................... 10
Hình 1.3 Thiết kế máy in laser .................................................................................. 13
Hình 1.4 Một ví dụ về vấn đề big endian/little endian ............................................... 15
Hình 1.5 Mối liên hệ về chi phí sửa lỗi cho mỗi giai đoạn......................................... 16
Hình 2.1 Phần mềm nhúng trong hệ thống ................................................................ 17
Hình 2.2 Thành phần phần mềm nhúng..................................................................... 18
Hình 2.3 Cấu trúc đề nghị của một tác vụ ................................................................. 23
Hình 2.4 Kiến trúc Round robin ................................................................................ 25
Hình 2.5. Kiến trúc Round-robin with interrupts ....................................................... 26
Hình 2.6 Kiến trúc Function-Queue-Scheduling ....................................................... 27
Hình 2.7 Kiến trúc Hệ điều hành thời gian thực ........................................................ 28
Hình 2.8 Biểu đồ luồng dữ liệu hệ thống đồng hồ báo thức ...................................... 31
Hình 2.9. Biểu đồ trạng thái ...................................................................................... 32
Hình 2.10 Đặc tả theo giả mã .................................................................................... 33
Hình 2.11 Qui trình phát triển blueprint .................................................................... 34
Hình 2.12 Cấu trúc của SPT profile .......................................................................... 35
Hình 2.13 Quá trình phát triển và biên dịch phần mềm nhúng ................................... 38
Hình 2.14 Hình dáng của thiết bị .............................................................................. 39
Hình 2.15 Biểu đồ ngữ cảnh của hệ thống ................................................................. 40
Hình 2.16 Biểu đồ Use Case ..................................................................................... 41
Hình 2.17 Biểu đồ tuần tự cho ca sử dụng Playback a message ................................. 42
Hình 2.18 Alarm while playback a message .............................................................. 43
Hình 2.19 Ngữ cảnh vào và ra khỏi chế độ stand-by ................................................. 44
Hình 2.20 Biểu đồ lớp của hệ thống .......................................................................... 46
Hình 2.21 Các hệ thống con trong Digital Sound Recorder ....................................... 46
Hình 2.22 Biểu đồ lớp hệ thống Audio ...................................................................... 47
Hình 2.23 Biểu đồ tuần tự nghe một thông điệp ........................................................ 47
Hình 2.24 Thiết kế phần cứng của hệ thống .............................................................. 48
Hình 3.1 Cấu trúc hệ điều hành thời gian thực ......................................................... 49
Hình 3.2 Hoạt động chia nhỏ thời gian và tuần tự ..................................................... 50
Hình 3.3 Một ví dụ về semaphore ............................................................................. 52
Hình 3.4 Truyền thông của RTOS............................................................................. 53
Hình 3.5 Các khối bộ nhớ được gán trong RTOS ...................................................... 55
Hình 3.6 Cấu trúc một tác vụ .................................................................................... 59
Hình 3.7 Biểu đồ chuyển trạng thái của tác vụ .......................................................... 59
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
4
Phân tích, Thiết kế phần mềm nhúng
Hình 3.8 Hàm dịch vụ ngắt trong µC/OS .................................................................. 61
Hình 4.2. Cấ u trúc mô-dun của chương trin
̀ h ............................................................ 65
Hình 4.3 Lưu đồ huấ n luyê ̣n ma ̣ng ............................................................................ 66
Hình 4.4 Kiến trúc tổng quát của Tesseract ............................................................... 67
Hình 5.1 Quá trình học chữ Nôm .............................................................................. 70
Hình 5.2 Quá trình nhận dạng ................................................................................... 70
Hình 5.3 Biểu đồ ngữ cảnh của hệ thống ................................................................... 71
Hình 5.4 Biểu đồ Use case của hệ thống ................................................................... 72
Hình 5.5 Biểu đồ tuần tự của hệ thống nhận dạng chữ Nôm ...................................... 73
Hình 5.6 Biểu đồ lớp của hệ thống nhận dạng chữ Nôm ........................................... 74
Hình 5.7 Trạng thái của tác vụ khi thực thi trong hệ thống ........................................ 75
Hình 5.8 Biểu đồ chuyển đổi giữa các tác vụ ............................................................ 75
DANH MỤC BẢNG BIỂU
Bảng 2.1 Bảng các sự kiện tác động lên hệ thống...................................................... 41
Bảng 2.2 Các đối tượng của hệ thống ........................................................................ 45
Bảng 4.1 Mô ̣t kế t quả nhận dạng ............................................................................... 65
Bảng 4.2 Kế t quả nhâ ̣n da ̣ng chữ Nôm với Tesseract................................................. 68
Bảng 5.1 Các sự kiện tác động vào chương trình ...................................................... 72
Bảng 5.2 Kết quả thực hiện tác vụ nhận dạng ........................................................... 76
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
5
Phân tích, Thiết kế phần mềm nhúng
BẢNG THUẬT NGỮ VÀ KÝ HIỆU SỬ DỤNG
ANN
Kỹ thuật nhận dạng dựa trên mạng nơ ron (Artifical neural
network)
ASIC
Vi mạch tích hợp chuyên dụng (Application Integrated IC)
CPU
Bộ xử lý trung tâm (Central Processing Unit)
CSP
Một ngôn ngữ hình thức mô tính tương tác trong các hệ
thống (Communicating Sequential Process)
DMA
Truy cập bộ nhớ trực tiếp (Direct Memory Access)
FPU
Đơn vị xử lý dấu phải động (Float Processing Unit)
IC
Mạch tích hợp (Integrated Circuit)
ISR
Hàm dịch vụ ngắt (Interrupt Service Routine)
JTAG
K-NN
Một chuẩn giao tiếp để truyền dữ liệu được đưa ra bởi
JTAG (Joint Test Action Group)
Kỹ thuật nhận dạng dựa trên láng giềng gần nhất
(K-Nearest Neighbor)
OMG
Tên của một tổ chức (Object Management Group)
PLD
Thiết bị logic khả trình (Programmable Logic Device)
ROOM
Mô hình hoá hướng đối tượng thời gian thực (Real time
Object Oriented Modelling)
RTOS
Hệ điều hành thời gian thực (Real time Operating System)
UML-SPT
Một chuẩn mô tả cho các ứng dụng thời gian thực dựa trên
UML
TCB
Khối điều khiển tác vụ (Task Control Block)
VHDL
UML
Trần Minh Tuấn
Một ngôn ngữ đặc tả phần cứng (Vhsic Hardware
Description Language)
Ngôn ngữ mô hình hoá thống nhất (Unified Modelling
Language)
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
6
Phân tích, Thiết kế phần mềm nhúng
LỜI GIỚI THIỆU
Thời gian gần đây, các Hệ thống nhúng – Thời gian thực được quan tâm nhiều hơn
ở Việt Nam, và trên thế giới thì các hệ thống này đã và đang được phát triển mạnh mẽ
và là xu hướng thịnh hành ở các nước Công nghiệp vì những lợi ích to lớn, thiết thực
mà nó mang lại. Theo các chuyên gia nhận định, sự phát triển của máy tính (PC) đã
chuyển sang giai đoạn thứ 3 - giai đoạn của môi trường thông minh mà hệ thống
nhúng là cốt lõi (còn gọi là giai đoạn hậu PC - Internet). Phát triển hệ nhúng và phần
mềm nhúng đang là quốc sách của nhiều quốc gia.
Tuy nhiên muốn xây dựng Hệ thống nhúng – Thời gian thực tốt, đáp ứng được yêu
cầu đòi hỏi người thiết kế và phát triển phải có sự hiểu biết sâu về hệ thống, thiết bị
phần cứng, những vấn đề về hệ điều hành thời gian thực (RTOS), lập trình nhúng, các
giải thuật trong lập lịch (Scheduling), cấp phát (Allocation), bố trí hệ thống (layout),
phân chia phần cứng – phần mềm (HW-SW partioning)…Việc thiết kế và xây dựng hệ
thống nhúng cần phát triển theo hướng co-design [7]. Nghĩa là phải phát triển phần
cứng và phần mềm đồng thời nhằm xác định giải pháp tối ưu nhất cho hệ thống nhúng.
Mục đích của luận văn là đi sâu nghiên cứu các phương pháp, cách thức nhằm phân
tích, thiết kế tốt phần mềm nhúng trong hệ thống nhúng - thời gian thực.
Bên cạnh mục đích trên, còn có một mục tiêu rất quan trọng và thiết thực đó là
nghiên cứu các cách tiếp cận nhận dạng chữ Nôm để xây dựng ứng dụng cho bài toán
này trên thiết bị nhúng. Về lĩnh vực nhận dạng, nhận dạng chữ là bài toán rất hữu ích
trong việc số hóa dữ liệu ở dạng văn bản giấy hoặc ảnh. Với chữ Latin bài toán đã
được nghiên cứu và phát triển từ lâu và hiện có nhiều phần mềm nhận dạng ký tự Latin
với độ chính xác cao. Gần đây một số ngôn ngữ tượng hình như chữ Trung Quốc hay
chữ Nhật Bản cũng đã được giải quyết bằng nhiều phương pháp nhận dạng khác nhau
như: láng giềng gần nhất [9], mạng nơ-ron [29].
Ở Việt Nam, vấn đề nhận dạng chữ Quốc ngữ cũng đang được nhiều tổ chức thực
hiện, ví dụ VnDOCR [5] cho phép quét, đọc ảnh văn bản với nhiều định dạng khác
nhau và kết quả nhận dạng là văn bản có kiểu phông tùy chọn. Tuy nhiên với bài toán
nhận dạng chữ Nôm, bài toán nhận dạng rất có ý nghĩa trong việc khôi phục và gìn giữ
di sản văn hóa dân tộc, hiện vẫn chưa có nhiều nghiên cứu với kết quả khả quan. Một
số tổ chức đã nghiên cứu và xây dựng một số phần mềm liên quan đến số hóa chữ
Nôm như: bộ phông chữ Nôm của Viện Hán Nôm, phần mềm Từ điển Hán Nôm trên
PDA của Trung tâm công nghệ thông tin Thừa Thiên Huế [5], phần mềm đánh văn bản
chữ Hán Nôm của tác giả Trần Uyên Thi và Alexandre Lê, phần mềm từ điển Trực
tuyến Việt-Hán-Nôm biên soạn dựa trên cuốn Tự điển Hán -Việt của Thiều Chửu do
nhóm tác giả Phan Anh Dũng và Nguyễn Thế thực hiện [4]. Đây là những nền tảng cần
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
7
Phân tích, Thiết kế phần mềm nhúng
thiết khích lệ tôi nghiên cứu bài toán nhận dạng chữ Nôm để ứng dụng vào các nguồn
văn bản đang tồn tại rất nhiều trong các thư viện, công trình văn hoá, và trong đời sống
hàng ngày cũng như xây dựng những tiện ích nhận dạng chữ Nôm trên thiết bị nhúng
để đáp ứng nhu cầu của nhân dân.
Luận văn được chia thành 5 chương và phụ lục. Trong đó:
Chƣơng 1: trình bày về hệ thống nhúng thời gian thực và tổng quan về thiết kế
những hệ thống này.
Chƣơng 2: trình bày về phần mềm nhúng và các phương pháp thiết kế.
Chƣơng 3: trình bày về hệ điều hành thời gian thực (RTOS) và các dịch vụ của
nó.
Chƣơng 4: trình bày về các cách tiếp cận với bài toán nhận dạng chữ Nôm và
những kết quả thực nghiệm của các phương pháp.
Chƣơng 5: trình bày về phân tích chương trình nhận dạng chữ Nôm dựa trên
Tesseract cho thiết bị nhúng và thực nghiệm trên hệ điều hành thời gian thực
µC/OS.
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
8
Phân tích, Thiết kế phần mềm nhúng
CHƢƠNG 1: TỔNG QUAN VỀ THIẾT KẾ
HỆ THỐNG NHÚNG
1.1 Hệ nhúng và các khái niệm
1.1.1 Hệ thống nhúng
Trong thế giới thực của chúng ta bất kỳ một thiết bị hay hệ thống điện/điện tử
có khả năng xử lý thông tin và điều khiển đều có thể tiềm ẩn trong đó một thiết bị hay
hệ nhúng, ví dụ như các thiết bị truyền thông, thiết bị đo lường điều khiển, các thiết bị
phục vụ sinh hoạt hàng ngày như lò vi sóng, máy giặt, camera…Rất dễ dàng để có thể
kể ra hàng loạt các thiết bị hay hệ thống như vậy đang tồn tại quanh ta, chúng là hệ
nhúng. Vậy hệ nhúng thực chất là gì và nên hiểu thế nào về hệ nhúng? Hiện nay cũng
chưa có một định nghĩa nào thực sự thoả đáng để được chuẩn hoá và thừa nhận rộng
rãi cho hệ nhúng mà vẫn chỉ là những khái niệm diễn tả về chúng thông qua những đặc
thù chung [25]. Tuy nhiên ở đây chúng ta có thể hiểu hệ nhúng là một phần hệ thống
xử lý thông tin tích hợp trong các hệ thống lớn, phức hợp và độc lập ví dụ như trong
ôtô, các thiết bị đo lường, điều khiển, truyền thông và thiết bị thông minh nói chung.
Chúng là những tổ hợp của phần cứng và phần mềm để thực hiện một hoặc một nhóm
chức năng chuyên biệt, cụ thể (Trái ngược với máy tính PC mà chúng ta thường thấy
được sử dụng không phải cho một chức năng mà là rất nhiều chức năng hay phục vụ
chung cho nhiều mục đích).
Chúng ta có thể kể ra rất nhiều các ứng dụng của hệ thống nhúng đang được sử
dụng hiện nay, và xu thế sẽ còn tiếp tục tăng nhanh. Một số lĩnh vực của các hệ thống
nhúng có thể được nhóm như sau:
Các thiết bị điều khiển
Ôtô, tàu điện
Truyền thông
Thiết bị y tế
Hệ thống đo lường thẩm định
Toà nhà thông minh
Thiết bị trong các dây truyền sản xuất
Rôbốt
…
1.1.2 Hệ thống nhúng thời gian thực
Hệ thống thời gian thực là hệ thống mà 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. Tính đúng đắn
về thời gian được hiểu là yêu cầu của hệ thống phải đảm bảo thoả mãn về tính tiền
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
9
Phân tích, Thiết kế phần mềm nhúng
định trong hoạt động của hệ thống. Tính tiền định nói lên hành vi của hệ thống thực
hiện đúng trong một khung thời gian cho trước hoàn toàn xác định. Khung thời gian
này được quyết định bởi đặc điểm hoặc yêu cầu của hệ thống, có thể là vài giây và
cũng có thể là vài nano giây hoặc nhỏ hơn nữa. Ở đây chúng ta phân biệt yếu tố thời
gian gắn liền với khái niệm về thời gian thực. Không phải hệ thống thực hiện rất nhanh
là sẽ đảm bảo được tính thời gian thực vì nhanh hay chậm hoàn toàn là phép so sánh
có tính tương đối vì mili giây có thể là nhanh với hệ thống điều khiển nhiệt nhưng lại
là chậm đối với các đối tượng điều khiển điện như dòng, áp…. Hơn thế nữa nếu chỉ
nhanh không thì chưa đủ mà phải đảm bảo duy trì ổn định bằng một cơ chế hoạt động
tin cậy. Chính vì vậy hệ thống không kiểm soát được hoạt động của nó thì không thể là
một hệ thống đảm bảo tính thời gian thực mặc dù hệ thống đó có thể cho đáp ứng rất
nhanh, thậm chí nhanh hơn rất nhiều so với yêu cầu đặt ra. Một ví dụ minh hoạ tiêu
biểu đó là cơ chế truyền thông dữ liệu qua đường truyền chuẩn Ethernet truyền thống,
mặc dù ai cũng biết tốc độ truyền là rất nhanh nhưng vẫn không phải hệ hoạt động thời
gian thực vì không thoả mãn tính tiền định trong cơ chế truyền dữ liệu (có thể là rất
nhanh và cũng có thể là rất chậm nếu có sự canh trạnh và giao thông đường truyền bị
nghẽn).
Người ta phân ra làm hai loại đối với khái niệm thời gian thực là cứng (hard
real-time) và mềm (soft real-time). Thời gian thực cứng là khi hệ thống hoạt động với
yêu cầu thoả mãn sự ràng buộc trong khung thời gian cứng tức là nếu vi phạm thì sẽ
dẫn đến hoạt động của toàn hệ thống bị sai hoặc bị phá huỷ. Ví dụ về hoạt động điều
khiển cho một lò phản ứng hạt nhân, nếu chậm ra quyết định có thể dẫn đến thảm hoạ
gây ra do phản ứng phân hạch và dẫn đến bùng nổ cả hệ thống. Thời gian thực mềm là
khi hệ thống hoạt động với yêu cầu thoả mãn ràng buộc trong khung thời gian mềm,
nếu vi phạm và sai lệch nằm trong khoảng cho phép thì hệ thống vẫn có thể hoạt động
được và chấp nhận được. Ví dụ như hệ thống phát thanh truyền hình, nếu thông tin
truyền đi từ trạm phát tới người nghe/nhìn chậm một vài giây thì cũng không ảnh
hưởng đáng kể đến tính thời sự của tin được truyền đi và hoàn toàn được chấp nhận
bởi người theo dõi. Thực tế thấy rằng hầu hết hệ nhúng là các hệ thời gian thực và hầu
hết các hệ thời gian thực là hệ nhúng. Điều này phản ánh mối quan hệ mật thiết giữa
hệ nhúng và thời gian thực và tính thời gian thực đã trở thành như một thuộc tính tiêu
biểu của hệ nhúng. Vì vậy hiện nay khi đề cập tới các hệ nhúng người ta đều nói tới
đặc tính cơ bản của nó là tính thời gian thực.
Hình 1.1 Quan hệ giữa hệ nhúng và thời gian thực
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
10
Phân tích, Thiết kế phần mềm nhúng
1.2 Giới thiệu chung về thiết kế hệ thống nhúng
Các kỹ sư xây dựng hệ thống nhúng luôn phải đối mặt với nhiều khó khăn trong
quá trình thiết kế hệ thống. Từ việc xác định phân bổ giữa phần cứng và phần mềm
cho đến việc tính toán để thiết kế đạt những mục tiêu về hiệu năng và chi phí. Việc xây
dựng hệ thống nhúng ngày càng trở lên phức tạp vì yêu cầu ngày càng cao. Họ phải
xây dựng những hệ thống ngày càng thông minh hơn, có nhiều chức năng hơn nhưng
lại phải được gói gọn trong một không gian nhỏ hơn, ít tiêu thụ điện năng hơn, thời
gian sản xuất nhanh hơn và chi phí cho hệ thống giảm. Có lẽ bởi vì liên quan đến sự
kết hợp của ít nhất hai nguyên tắc phức tạp và sáng tạo: kỹ nghệ phần mềm và thiết kế
logic. Vấn đề này thường liên quan đến xây dựng một cái mới mà mọi người chưa
từng xây dựng bao giờ hay đơn giản là có quá nhiều sự lựa chọn như: sử dụng bộ vi xử
lý nào cho phù hợp, cách sắp xếp các bus, triển khai bằng ngôn ngữ lập trình nào, có
sử dụng hệ điều hành hay không, môi trường phát triển …làm cho người phát triển
nhiều lúc không biết bắt đầu từ đâu.
Không giống với việc thiết kế các ứng dụng phần mềm trên máy tính, việc thiết
kế một hệ thống nhúng phải thực hiện thiết kế cả phần cứng và phần mềm một cách
song song. Mặc dù không phải lúc nào cũng vậy nhưng thực tế cho thấy đây là cách
thức tiếp cận việc thiết kế hệ thống nhúng một cách hiệu quả và ảnh hưởng sâu sắc đến
việc xây dựng hệ thống.
Quy trình thiết kế hệ thống nhúng bao gồm các bước sau:
Xác định yêu cầu sản phẩm
Phân bổ phần cứng phần mềm
Thực hiện và lặp lại
Thiết kế phần cứng/phần mềm nhúng
Tích hợp phần cứng/phần mềm
Kiểm tra
Bảo trì và nâng cấp
Hình 1.2 Quy trình thiết kế co-design
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
11
Phân tích, Thiết kế phần mềm nhúng
1.2.1 Xác định yêu cầu sản phẩm
Chúng ta cần phải xác định:
Hệ thống làm gì?
Những thành phần vào ra bao gồm những gì?
Giao diện hệ thống
Trong hệ thống nhúng việc xác định yêu cầu là rất quan trọng. Nó có thể giúp
chúng ta tránh được những vấn đề sau này như lượng RAM thiết kế cho hệ thống
nhúng không đủ cho hoạt động hay bộ xử lý được chọn có tốc độ quá chậm cho công
việc…Sau khi yêu cầu sản phẩm đã được xác định thì công việc tiếp theo là xác định
liệu sử dụng bộ vi xử lý có phải là sự lựa chọn tốt nhất không. Những câu hỏi sau đây
có thể hữu ích khi xác định xem sử dụng bộ vi xử lý có hợp lý không:
Đầu vào và đầu ra được xử lý và cập nhật ở tốc độ nào? Mặc dù xung đồng hồ
vẫn đang tăng lên nhưng có một giới hạn trên thực tế với tốc độ bộ vi xử lý có
thể đọc từ một đầu vào hoặc cập nhật đầu ra và vẫn đang thực hiện công việc.
Nếu hệ thống phải thực hiện việc xử lý quan trọng, xử lý bộ đệm, hoặc những
tính toán khác thì tỉ lệ cập nhật sẽ giảm xuống.
Liệu có một mạch tích hợp đơn (IC) hoặc một thiết bị logic khả trình (PLD)
thực hiện được công việc không? nếu có thì sử dụng bộ vi xử lý là không cần
thiết.
Hệ thống có nhiều đầu vào và ra, như công tắc hay màn hình hiển thị không?
nếu có thì bộ vi xử lý sẽ giải quyết công việc thuận lợi hơn.
Những giao tiếp gì đối với những hệ thống bên ngoài? Nếu hệ thống phải nói
chuyện với hệ thống khác dùng giao thức điều khiển liên kết dữ liệu đồng bộ
(SDLC) hoặc một vài giao thức truyền thông phức tạp khác thì sử dụng bộ vi xử
lý là lựa chọn đúng đắn.
Hệ thống có phải tính toán và xử lý nhiều việc không? Ví dụ hệ thống đánh lửa
(khởi động) điện tử hiện đại có rất nhiều đầu vào (các cảm ứng không khí, động
cơ rpm …) với những liên quan phức tạp sẽ có vài lựa chọn thay vì sử dụng bộ
vi xử lý.
Liệu thiết kế có được sửa đổi khi nó hoàn thành hoặc thay đổi trong quá trình
thiết kế không? Có cần phải tuỳ biến sản phẩm cho những phiên bản đặc biệt
không? những yêu cầu này đều ảnh hưởng đến việc có lựa chọn bộ vi xử lý hay
không.
Thật may là công việc này của người thiết kế đang trở lên dễ dàng hơn do chi phí của
bộ vi xử lý sẽ giảm nhưng tốc độ và hiệu năng của nó sẽ được tăng lên.
1.2.2 Lựa chọn bộ vi xử lý
Giả sử chúng ta đã quyết định sử dụng bộ vi xử lý cho hệ thống nhúng của mình
thì vấn đề tiếp theo là lựa chọn bộ vi xử lý cho phù hợp với hệ thống cần xây dựng.
Thực tế cho thấy có nhiều sự lựa chọn đúng bộ xử lý cho hệ thống nhúng bởi vì sẽ có
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
12
Phân tích, Thiết kế phần mềm nhúng
vài bộ xử lý có thể đạt các yêu cầu đặt ra. Sự lựa chọn bao gồm việc cân bằng các yếu
tố giữa chi phí và các chức năng. Một số vấn đề cần phải được xem xét khi lựa chọn:
Số lượng chân vào ra yêu cầu
Những giao tiếp yêu cầu
Yêu cầu bộ nhớ
Xem xét vấn đề thời gian thực
Môi truờng phát triển
Tốc độ xử lý được yêu cầu
Khả năng của ROM
Kiến trúc bộ nhớ
1.2.2 Phân bổ giữa phần cứng và phần mềm
Thiết kế hệ nhúng sẽ liên quan đến cả hai vấn đề là thiết kế các thành phần phần
cứng và các thành phần phần mềm, người thiết kế phải xác định xem vấn đề nào được
giải quyết trong phần cứng và vấn đề nào thì giải quyết ở phần mềm. Sự lựa chọn này
được gọi là phân bổ quyết định.
Những nhà phát triển ứng dụng thường phát triển với phần cứng được xác định
trước có thể có những khó khăn trong việc điều chỉnh về phần cứng để nâng cao hiệu
quả xử lý vấn đề. Tuy nhiên họ cũng có thể đã gặp phải những vấn đề lựa chọn cân
nhắc giữa phần cứng và phần mềm. Ví dụ, trong những ngày đầu của PC (trước khi
giới thiệu bộ xử lý 80486), những bộ xử lý 8086, 80286 và 80386 đều không có đơn vị
xử lý dấu phảy động trên chip. Những bộ xử lý này yêu cầu những thiết bị đi kèm, đơn
vị xử lý dấu phảy động 8087, 80287 và 80387 (FPUs) để chạy trực tiếp các chỉ thị dấu
phảy động trong chương trình. Nếu PC không có một FPU, thì mã chương trình phải
chặn những chỉ thị dấu phảy động lại và thực hiện một ngoại lệ hoặc hàm bẫy lỗi sẽ
thực hiện vấn đề xử lý dấu phảy động trên phần mềm. Tuy nhiên điều này sẽ chậm hơn
nhiều so với có đơn vị xử lý dấu phảy động trên bảng mạch nhưng chí ít thì mã
chương trình cũng được thực thi.
Một ví dụ khác về phân bổ giữa phần cứng và phần mềm, ta có thể mua một
thiết bị modem cho PC của mình rồi cắm vào khe ISA như vậy trên máy tính đã có
mạch thực hiện điều chế và giải điều chế. Nếu ít tiền hơn ta có thể mua một win
modem để cắm vào khe PCI và sử dụng bộ vi xử lý để trực tiếp xử lý các chức năng
của modem. Việc thiết kế là kết hợp giữa các thành phần phần cứng và phần mềm để
cho ra một giải pháp thiết kế nhúng hiệu quả nhất. Chúng ta có thể thực hiện việc thiết
kế một chức năng nào đó dựa trên phần mềm (ví dụ CPU không có đơn vị FPU ở trên),
dựa trên phần cứng hoặc dựa trên cả phần cứng và phần mềm. Để làm rõ hơn về vấn
đề phân chia giữa phần cứng và phần mềm chúng ta sẽ xét tiếp một ví dụ về thiết kế
máy in laser.
Hình 1.3 mô tả một thiết kế cho máy in laser. Với sự giúp đỡ từ những nhà thiết
kế máy in laser chúng ta có thể hình dung ra những công việc có thể thực hiện trong
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
13
Phân tích, Thiết kế phần mềm nhúng
máy in laser (phần mềm). Bộ vi xử lý nắm bắt luồng dữ liệu đến thông qua cổng song
song, cổng tuần tự RS-232C, cổng USB, hoặc cổng Ethernet vào trong bộ đệm.
Hình 1.3 Thiết kế máy in laser
Cùng một thời điểm, bộ xử lý quản lý các cổng dữ liệu và chuyển những dữ liệu đến
thành luồng điều chế (stream of modulation) và những tín hiệu điều khiển cho ống
phóng laser, gương xoay, trống xoay, bộ phận quản lý giấy. Chúng ta có thể thấy điều
này làm cho bộ xử lý phải làm rất nhiều việc do đó giới hạn hiệu năng của hệ thống.
Chúng ta có thể tìm cách nâng cao hiệu năng của hệ thống bằng cách thêm nhiều bộ xử
lý và phân chia những nhiệm vụ đồng thời giữa chúng. Điều này sẽ làm cho tốc độ xử
lý tăng lên, chi phí tăng lên, nhưng không có nhiều thông tin hơn để in.
Khi phân tích giải pháp thiết kế chúng ta sẽ thấy rằng những công việc mà ảnh
hưởng đến hiệu năng của hệ thống cũng có những cận giới hạn nhất định và được mô
tả đầy đủ. Những công việc này có thể được xử lý bằng các phương pháp thiết kế một
cách dễ dàng và có thể thực hiện theo giải pháp dựa trên phần cứng. Ví dụ trong thiết
kế máy in laser này, chúng ta có thể sử dụng một khối phần cứng cho việc ghi các
điểm laser trên bề mặt của trống máy in. Điều này sẽ giải phóng cho bộ xử lý để thực
hiện những công việc khác và chỉ yêu cầu nó khởi tạo và phục vụ phần cứng nếu có lỗi
nào đó xảy ra.
Những yêu cầu cho phần cứng chặt chẽ hơn nhiều so với phần mềm bởi vì nó
phức tạp hơn, mất chi phí cho sửa lỗi phần cứng nhiều hơn so với sửa lỗi phần mềm.
Nếu phần cứng là IC chuyên về ứng dụng tùy biến (Custom - ASIC) thì cần phải xem
xét nhiều hơn vì tính phức tạp của việc thiết kế một IC tùy biến. Nếu cách tiết cận này
dường như quá rủi ro cho dự án, đội thiết kế có thể chuyển sang giải pháp phần mềm
hoặc đội thiết kế có thể đưa ra quyết định cần phải sử dụng một bộ xử lý mới hơn,
mạnh hơn để nâng cao hiệu năng. Tuy nhiên điều này cũng liên quan đến vấn đề chi
phí, những công cụ mới, bố cục mạch mới, đường dữ liệu rộng hơn, tính phức tạp cao
hơn. Hai triết lý thiết kế khác nhau này đã được áp dụng thành công cho thiết kế máy
in laser trong các công ty sản xuất máy in ngày nay. Một bên thì thiết kế khả năng điều
chỉnh hiệu năng của bộ xử lý để tối thiểu hoá dùng các thiết bị phần cứng chuyên biệt.
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
14
Phân tích, Thiết kế phần mềm nhúng
Ngược lại thì bên kia sử dụng các thiết bị phần cứng chuyên biệt để giảm gánh nặng
cho bộ xử lý. Cả hai đều có những sản phẩm cạnh tranh nhưng thực hiện hai chiến
lược thiết kế khác nhau cho phân chia các thành phần cứng và mềm.
Quyết định phân chia là một vấn đề tối ưu và phức tạp. Nhiều thiết kế hệ thống
nhúng yêu cầu:
Nhạy cảm về giá
Người đi đầu về giải pháp
Không theo chuẩn
Cạnh tranh thị trường
Bản quyền
Những yêu cầu dường như mẫu thuẫn lẫn nhau này sẽ làm cho khó tạo ra một
thiết kế tối ưu cho sản phẩm nhúng. Giải pháp phân bổ phụ thuộc vào bộ xử lý nào sử
dụng trong thiết kế, cách thực hiện thiết kế tổng thể và kinh nghiệm của người thiết kế.
1.2.3 Thực hiện và lặp lại
Phần thực hiện và lặp lại của qui trình này thể hiện một vùng phân chia mờ giữa
thực hiện và phân bổ phần cứng/phần mềm (được thể hiện ở hình 1.2). Trong bước này
phần thiết kế phần mềm và phần cứng sẽ được tách ra và thực hiện đồng thời. Giai
đoạn này thể hiện những công việc thiết kế đầu tiên trước khi đội phần cứng và phần
mềm thực hiện công việc cụ thể của lĩnh vực mình. Mặc dù các vấn đề chính đã được
phân bổ giữa các thành phần phần cứng và phần mềm, tuy nhiên vẫn còn những vấn đề
có thể dịch chuyển giữa ranh giới này khi các ràng buộc thiết kế được mô hình hoá và
hiểu rõ hơn. Trong giai đoạn này đòi hỏi người thiết kế thực hiện nhiều sự lựa chọn
liên quan đến công cụ, môi trường… Nhà thiết kế phần cứng có thể sử dụng các công
cụ mô phỏng để hỗ trợ cho quá trình thiết kế của mình như bộ mô phỏng kiến trúc.
Nhà thiết kế phần mềm có thể sẽ chạy những đoạn mã chuẩn trên những bo mạch đơn
độc lập sử dụng bộ vi xử lý đích. Những bo mạch này thường liên quan đến những
mạch đánh giá và chúng sẽ được dùng để đánh giá hiệu năng của bộ vi xử lý chạy trên
đoạn mã kiểm tra. Những mạch đánh giá này cũng cung cấp một môi trường gỡ lỗi và
thiết kế phần mềm thuận tiện cho đến khi hoàn thành xong phần cứng của hệ thống.
1.2.4 Thiết kế chi tiết phần cứng và phần mềm
Bước này đi sâu vào thực hiện thiết kế chi tiết phần cứng và phần mềm sau khi
đã có những đặc tả và phân chia các thành phần phần cứng, phần mềm. Ở giai đoạn
này cần có những công cụ đặc biệt để hỗ trợ quá trình thiết kế và mô hình một cách
trực quan. Ví dụ để thiết kế chi tiết phần cứng cần có các công cụ để mô tả phần cứng
như VHDL hay Verilog. Đối với phần mềm có rất nhiều công cụ hỗ trợ trong gia đoạn
này như: Timed CSP, Z, UML-Realtime…(sẽ được trình bày chi tiết hơn ở chương 2)
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
15
Phân tích, Thiết kế phần mềm nhúng
1.2.5 Tích hợp phần cứng phần mềm
Giai đoạn tích hợp giữa phần cứng và phần mềm của vòng đời phát triển hệ
thống nhúng phải có những công cụ đặc biệt và phương pháp để quản lý độ phức tạp.
Qui trình tích hợp phần cứng và phần mềm nhúng là quá trình thực nghiệm và gỡ lỗi.
Thực nghiệm ở đây có nghĩa là phải xác định xem phần mềm thiết kế ra có chạy tốt
trên nền phần cứng không và có thực sự hiểu tài liệu đặc tả phần cứng không. Ví dụ,
một vấn đề về big endian/ little endian trong quá trình tích hợp. Người thiết kế phần
cứng thực hiện thứ tự các byte được tổ chức theo big endian, còn người thiết kế phần
mềm cho rằng theo thứ tự little endian. Điều này có nghĩa là thành phần phần mềm và
phần cứng có thể đúng đắn trong quá trình thiết kế riêng nhưng bị lỗi trong quá trình
tích hợp do giao tiếp bị hiểu nhầm. Ví dụ: cổng tuần tự được thiết kế cho một ASIC
với một bus 16 bit vào ra. Cổng là vùng bộ nhớ ánh xạ tại địa chỉ 0x400000, 8 bit của
một từ là phần dữ liệu của cổng, 8 bít khác là phần trạng thái của cổng. Thậm chí
người thiết kế phần cứng có thể xác định những bit nào là trạng thái, bit nào là dữ liệu
thì người thiết kế phần mềm vẫn có thể gán sai địa chỉ cổng khi ghi vào cổng theo cách
truy cập byte (hình 1.4).
Hình 1.4 Một ví dụ về vấn đề big endian/little endian
Nếu sử dụng mô hình big endian và tính địa chỉ theo byte, thì thuật toán nên kiểm tra
các bít trạng thái tại địa chỉ 0x400001 và bít dữ liệu được đọc từ hoặc viết tới địa chỉ
0x400000. Nếu sử dụng mô hình bộ nhớ little endian thì ngược lại. Hệ thống nhúng
thường có độ phức tạp cao và hành vi không xác định mà nó chỉ có thể được phân tích
khi xảy ra. Việc cố gắng mô hình và mô phỏng chính xác hành vi của hệ thống có thể
mất nhiều thời gian hơn thời gian phát triển sản phẩm. Khi những công cụ mô hình
hoá được cải tiến thì sẽ nâng cao hơn khả năng tìm ra lỗi sớm.
Gỡ lỗi hệ thống nhúng cũng gần giống như gỡ lỗi ứng dụng trên Desktop. Nhìn
chung có ba yêu cầu cho việc gỡ lỗi hệ nhúng thời gian thực:
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
16
Phân tích, Thiết kế phần mềm nhúng
Kiểm soát thực thi - khả năng thực hiện, dừng, hoạt động tối đa của bộ xử lý và
bộ nhớ.
Thay thế bộ nhớ - thay thế bộ nhớ dựa trên ROM bằng RAM để nâng cao tốc
độ, dễ tải mã, gỡ lỗi và sửa đổi.
Phân tích thời gian thực - lần theo luồng mã để phân tích thời gian thực.
Nhiều hệ thống nhúng không thể gỡ lỗi trừ khi chúng được thực hiện ở tốc độ thực và
việc chạy một chương trình nhúng dưới bộ gỡ lỗi có thể làm chậm chương trình.
1.2.6 Kiểm thử
Kiểm thử hệ thống nhúng cần sự quan tâm đặc biệt vì không những nó phải
đảm bảo các chức năng của hệ thống hoạt động đúng và đủ mà còn phải đảm bảo cả về
yếu tố thời gian thực hiện. Đặc biệt trong những hệ thống an toàn, an ninh liên quan
đến mạng sống con người, việc kiểm thử cần phải thực hiện kỹ hơn vì chỉ cần một lỗi
nhỏ cũng gây ra những thảm họa đáng tiếc. Do đó yêu cầu về kiểm thử và độ tin cậy
đối với hệ thống nhúng đòi hỏi phải chặt chẽ hơn đa số các ứng dụng trên Desktop. Ví
dụ nhiều ứng dụng trên Desktop có những rò gỉ về bộ nhớ và khi chương trình chạy
được một khoảng thời gian thì máy tính sẽ bị tràn bộ nhớ, tuy nhiên trên Desktop thì
RAM và không gian swap là tương đối lớn và nhiều khi không phải là vấn đề. Ngược
lại đối với hệ thống nhúng, do chúng thường hoạt động liên tục nên chỉ cần một lỗi rò
gỉ bộ nhớ nhỏ cũng có thể gây ra trục trặc. Nếu phát hiện ra lỗi sớm hơn thì chi phí để
sửa lỗi sẽ ít hơn là khi phát hiện ra lỗi muộn, hình 1.5 dưới đây thể hiện mối liên hệ
này.
Hình 1.5 Mối liên hệ về chi phí sửa lỗi cho mỗi giai đoạn
1.2.7 Bảo trì và cập nhật
Đa số các nhà thiết kế hệ thống nhúng (khoảng 60 %) thực hiện bảo trì và nâng
cấp sản phẩm tồn tại hơn là thiết kế lại sản phẩm mới. Hầu hết họ không phải là những
thành viên của đội thiết kế ban đầu của sản phẩm, do đó họ phải dựa vào kinh nghiệm,
kỹ năng và những tài liệu về sản phẩm để hiểu sản phẩm ban đầu và thực hiện bảo trì
nâng cấp. Giai đoạn này đòi hỏi cần phải có những công cụ để bóc tách được những
vấn đề từ mã nguồn để nhanh chóng hiểu nó. Ví dụ muốn đáp ứng nhanh yêu cầu mới
đặt ra cho sản phẩm được thực hiện bằng cách cần tăng tốc độ bộ vi xử lý lên 25%, tuy
nhiên nó sẽ gây ra những thay đổi đến toàn bộ thiết kế, do đó cần có sự nghiên cứu kỹ
lưỡng với những giải pháp đưa ra.
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
17
Phân tích, Thiết kế phần mềm nhúng
CHƢƠNG 2: THIẾT KẾ PHẦN MỀM NHÚNG
2.1 Phần mềm nhúng
Trong những ngày đầu của hệ thống nhúng, tất cả những công việc xây dựng hệ
thống (bao gồm cả phần cứng và phần mềm) đều được xử lý bởi một kỹ sư. Các thành
phần phần mềm chỉ chiếm một phần nhỏ trong toàn bộ quá trình thiết kế và phát triển:
khoảng 5% đến 10%. Qua thời gian, phần công việc kỹ thuật dành cho phát triển phần
mềm nhúng đã tăng đáng kể. Vào giữa những năm 80 thì phần công việc được thực
hiện bởi các chuyên gia phần mềm lớn hơn 50%, và đến nay mặc dù thiết kế phần
cứng ngày càng trở lên phức tạp thì công sức giành cho xây dựng phần mềm nhúng
chiếm khoảng 70% đến 80%.
Hình 2.1 Phần mềm nhúng trong hệ thống
Do yêu cầu của hệ thống, ngày càng nhiều phần mềm cần được phát triển trong
một khoảng thời gian ngắn và môi trường để kiểm thử cho phần mềm nhúng cũng cần
sớm hơn (ngay trong quá trình phát triển phần mềm). Rất nhiều giải pháp đã được đưa
ra bao gồm những môi trường mẫu thực thi mã, mô phỏng tập chỉ thị, và sử dụng các
bảng mạch đánh giá chuẩn, chi phí thấp để kiểm thử phần mềm trên môi trường giống
môi trường đích. Ngoài ra những công nghệ kết nối máy chủ - máy đích chi phí thấp
cũng đang trở lên phổ biến, ví dụ sử dụng một giao tiếp JTAG. Điều này tạo điều kiện
cho các đội phần cứng và phần mềm nhúng thực sự phối hợp làm việc với nhau sử
dụng những kỹ thuật đồng thiết kế (co-design) và đồng kiểm chứng (coverification).
Thời gian dành cho phát triển phần mềm nhúng tăng lên, trong khi đó dưới áp
lực cạnh tranh thì thời gian đưa các sản phẩm nhúng ra thị trường đang giảm xuống.
Điều này ảnh hưởng nhanh chóng đến chiến lược thiết kế. Những thiết kế ban đầu
thường khá đơn giản, chỉ bao gồm những mã chương trình được thiết kế của một tổ
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
18
Phân tích, Thiết kế phần mềm nhúng
chức, đơn vị. Khi các hệ thống đã trở lên phức tạp, một mô hình đa nhiệm đã được áp
dụng rộng rãi cho phát triển phần mềm và nhiều nhà phát triển đã sử dụng những sản
phẩm hệ điều hành thời gian thực (RTOS) thương mại chuẩn cho hệ thống của mình.
Phần phần mềm mua sẵn hay sở hữu trí tuệ (intelectual property - một từ vay mượn từ
thiết kế phần cứng) trong hệ nhúng đã tăng lên đều đặn và xem như một tiêu chuẩn để
áp dụng. Được thể hiện trong hình vẽ 2.2.
Hình 2.2 Thành phần phần mềm nhúng
Phần mềm cho hệ thống nhúng có những yêu cầu khác với những phần mềm
chạy trên máy tính cá nhân hoặc trên máy trạm. Ngoài việc trả lời câu hỏi “Hệ thống
phải làm gì?” người thiết kế phải biết được “Thời gian đáp ứng cho chức năng đó là
bao lâu?”.
2.1.1 Sự khác biệt giữa phần mềm nhúng và phần mềm thông thƣờng trên
PC
Sự khác nhau giữa việc phát triển hệ thống nhúng và hệ thống chạy trên máy tính
thông thường có thể liệt kê một số điểm như sau [13]:
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. Các bộ xử lý trong hệ thống nhúng là các
vi xử lý chuyên biệt. 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 hoặc 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.
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
Luận văn Thạc sĩ 2008
19
Phân tích, Thiết kế phần mềm nhúng
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 có các ràng buộc thời gian thực: phần này được đặc tả trong hệ
thống nhúng 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 (cả thương mại và phi thương mại) 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 debug
chương trình để tìm lỗi đòi hỏi phải có những phần cứng hỗ trợ, thông thường
được gọi là emulator.
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 Pin là tắt bớt các dịch vụ không cần thiết trong quá trình hoạt động
hoặc chuyển vào các chế độ tiết kiệm năng lượng khi cần thiết. Hầu hết các vi
xử lý cho hệ thống nhúng đều có các chế độ tiết kiệm năng lượng. Phần mềm
thường đặt bộ 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ý. Các chế độ tiết kiệm điện
thường thấy như: sleep mode, low-power mode, idle mode, standby mode, ...
Hệ thống nhúng thườ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. Ví dụ như các hệ thống nhúng kiểm tra
trong hầm lò, lò phản ứng hạt nhân, trên không gian...
Hệ thống nhúng có ít tài nguyên (tốc độ xử lý của CPU, bộ nhớ, cổng vào ra ...)
hơn nhiều so với các ứng dụng Desktop.
Chương trình của hệ thống nhúng được lưu trong ROM.
2.1.2 Nguyên tắc thiết kế chung
Thiết kế hệ thống nhúng phải đối mặt với nhiều yếu tố tác động và thông
thường phức tạp hơn việc thiết kế các ứng dụng trên desktop. Trong quá trình thiết kế,
không những người thiết kế phải trả lời câu hỏi hệ thống làm gì mà còn phải biết được
tốc độ thực thi của hệ thống và khả năng đáp ứng thời gian từ đó đưa ra những lựa
chọn trong quá trình thiết kế. Thời gian thực thi luôn là yếu tố đặc trưng của một hệ
thống nhúng thời gian thực. Hơn nữa, phải xác định khoảng thời gian thực thi nào
quan trọng để điều tiết bộ lập lịch. Điều này phụ thuộc vào tính chất của hệ thời gian
thực cứng hay mềm.
Trần Minh Tuấn
Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội
- Xem thêm -