Phân tích, thiết kế phần mềm nhúng
Phân tích, thiết kế phần mềm nhúng
Xem bên trong

Phân tích, thiết kế phần mềm nhúng

83 tr. + CD-ROM
Tổng quan về thiết kế hệ thống nhúng thời gian thực. Trình bày về phần mềm nhúng và các phương pháp thiết kế phần mềm này như phương pháp đặc tả hình thức và bán hình thức, công cụ phát triển phần mềm nhúng, các study về thiết kế phần mềm nhúng. Trình bày hệ điều hành thời gian thực (RTOS) và các dịch vụ của nó. Nghiên cứu các cách tiếp cận với bài toán nhận dạng chữ Nôm bằng mạng nơron và những kết quả thử nghiệm. Phân tích chương trình ứng dụng 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
Luận văn ThS. Công nghệ phần mềm — Trường Đại học Công nghệ. Đại học Quốc gia Hà Nội, 2008
Electronic Resources

0.00

Tải về miễn phí bản đầy đủ PDF luận văn tại Link bản đầy đủ 1

ĐẠ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 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
1

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

Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
2

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êṃ ………………………………………………………………………………… 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

Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
3

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
Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
4
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 trình …………………………………………………… 65
Hình 4.3 Lưu đồ huấn luyêṇ maṇg …………………………………………………………………. 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ôṭ kết quả nhận dạng ……………………………………………………………………. 65
Bảng 4.2 Kết quả nhâṇ daṇg 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

Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
5

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
Một chuẩn giao tiếp để truyền dữ liệu được đưa ra bởi
JTAG (Joint Test Action Group)
K-NN
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
Một ngôn ngữ đặc tả phần cứng (Vhsic Hardware
Description Language)
UML
Ngôn ngữ mô hình hoá thống nhất (Unified Modelling
Language)
Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
6

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
Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
7
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.
Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
8

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
Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
9
đị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
Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
10
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
Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
11
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ó
Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
12
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
Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
13
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.
Luận văn Thạc sĩ 2008 Phân tích, Thiết kế phần mềm nhúng
Trần Minh Tuấn Đại Học Công Nghệ – Đại Học Quốc Gia Hà Nội
14
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)

Tác giả

Trần Minh Tuấn

Nhà xuất bản

ĐHCN

Năm xuất bản

2008

Người hướng dẫn

Nguyễn Ngọc Bình

Định danh

V_L0_01820

Kiểu

text

Định dạng

text/pdf

Nhà xuất bản

Khoa công nghệ thông tin,

Trường đại học Công nghệ

Các đánh giá

Hiện chưa có đánh giá cho sản phẩm.

Hãy là người đầu tiên đánh giá “Phân tích, thiết kế phần mềm nhúng”

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *