Upload
lamthien
View
221
Download
5
Embed Size (px)
Citation preview
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ử ....................................................... Error! Bookmark not defined.
1.2.7 Bảo trì và cập nhật........................................ Error! Bookmark not defined.
CHƢƠNG 2: THIẾT KẾ PHẦN MỀM NHÚNG ....... Error! Bookmark not defined.
2.1 Phần mềm nhúng ................................................ Error! Bookmark not defined.
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
............................................................................... Error! Bookmark not defined.
2.1.2 Nguyên tắc thiết kế chung ............................ Error! Bookmark not defined.
2.1.3 Thiết kế phần mềm nhúng với RTOS .......... Error! Bookmark not defined.
2.2 Kiến trúc phần mềm nhúng ................................. Error! Bookmark not defined.
2.2.1 Round robin .................................................. Error! Bookmark not defined.
2.2.2 Round robin với ngắt ................................... Error! Bookmark not defined.
2.2.3 Kiến trúc Function – Queue - Scheduling .... Error! Bookmark not defined.
2.2.4 Kiến trúc Hệ điều hành thời gian thực (RTOS) ......... Error! Bookmark not
defined.
2.3 Các phương pháp đặc tả và thiết kế phần mềm nhúng ..... Error! Bookmark not
defined.
2.3.1 Phương pháp đặc tả hình thức (formal method) ........ Error! Bookmark not
defined.
2.3.2 Phương pháp đặc tả bán hình thức (semi-formal method) Error! Bookmark
not defined.
2.4 Công cụ phát triển phần mềm nhúng .................. Error! Bookmark not defined.
2.5 Case study về thiết kế phần mềm nhúng ............ Error! Bookmark not defined.
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
2.5.1 Phân tích yêu cầu ......................................... Error! Bookmark not defined.
2.5.2 Thiết kế ......................................................... Error! Bookmark not defined.
2.5.3 Phân chia tác vụ ........................................... Error! Bookmark not defined.
2.5.4 Kiến trúc phần cứng của hệ thống................ Error! Bookmark not defined.
CHƢƠNG 3: HỆ ĐIỀU HÀNH THỜI GIAN THỰC . Error! Bookmark not defined.
3.1 Tính đa nhiệm ..................................................... Error! Bookmark not defined.
3.1.1 Lập lịch ưu tiên (Preemptive Scheduling) ... Error! Bookmark not defined.
3.1.2 Kích hoạt và bỏ kích hoạt tác vụ (Activation and Deactivation of Tasks)
............................................................................... Error! Bookmark not defined.
3.1.3 Lập lịch hướng sự kiện (Event-Driven Scheduling) .. Error! Bookmark not
defined.
3.2 Theo dõi các tác vụ ............................................. Error! Bookmark not defined.
3.3 Truyền thông giữa các tác vụ .............................. Error! Bookmark not defined.
3.4 Quản lý bộ nhớ .................................................... Error! Bookmark not defined.
3.5 Quản lý tài nguyên .............................................. Error! Bookmark not defined.
3.6 RTOS và ngắt ...................................................... Error! Bookmark not defined.
3.7 Liên lạc trong RTOS thông dụng ........................ Error! Bookmark not defined.
3.8 Khả năng sử dụng RTOS .................................... Error! Bookmark not defined.
3.9 Ưu nhược điểm của hệ điều hành thời gian thực Error! Bookmark not defined.
3.10 Hệ điều hành thời gian thực µC/OS .................. Error! Bookmark not defined.
CHƢƠNG 4: CÁC CÁCH TIẾP CẬN VỚI BÀI TOÁN NHẬN DẠNG CHỮ
NÔM ................................................................................ Error! Bookmark not defined.
4.1 Nhận dạng chữ Nôm bằng mạng nơ-ron............. Error! Bookmark not defined.
4.1.1 Áp dụng mạng nơ-ron trong nhận dạng chữ Nôm ..... Error! Bookmark not
defined.
4.1.2 Thưc nghiêm ................................................ Error! Bookmark not defined.
4.2 Ứng dụng Tesseract để nhận dạng chữ Nôm ...... Error! Bookmark not defined.
4.2.1 Tóm tắt về Tesseract ................................... Error! Bookmark not defined.
4.2.2. Áp dụng với chữ Nôm ................................. Error! Bookmark not defined.
4.3. So sánh và thảo luận .......................................... Error! Bookmark not defined.
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 ................................... Error! Bookmark not defined.
5.1 Phân tích ứng dụng trên môi trường nhúng ........ Error! Bookmark not defined.
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
................................................................................... Error! Bookmark not defined.
KẾT LUẬN ..................................................................... Error! Bookmark not defined.
TÀI LIỆU THAM KHẢO .......................................................................................... 15
PHỤ LỤC ........................................................................ Error! Bookmark not defined.
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 . Error! Bookmark not defined.
Hình 1.5 Mối liên hệ về chi phí sửa lỗi cho mỗi giai đoạnError! Bookmark not
defined.
Hình 2.1 Phần mềm nhúng trong hệ thống ................... Error! Bookmark not defined.
Hình 2.2 Thành phần phần mềm nhúng ....................... Error! Bookmark not defined.
Hình 2.3 Cấu trúc đề nghị của một tác vụ .................... Error! Bookmark not defined.
Hình 2.4 Kiến trúc Round robin ................................... Error! Bookmark not defined.
Hình 2.5. Kiến trúc Round-robin with interrupts ......... Error! Bookmark not defined.
Hình 2.6 Kiến trúc Function-Queue-Scheduling .......... Error! Bookmark not defined.
Hình 2.7 Kiến trúc Hệ điều hành thời gian thực .......... Error! Bookmark not defined.
Hình 2.8 Biểu đồ luồng dữ liệu hệ thống đồng hồ báo thứcError! Bookmark not
defined.
Hình 2.9. Biểu đồ trạng thái ......................................... Error! Bookmark not defined.
Hình 2.10 Đặc tả theo giả mã ....................................... Error! Bookmark not defined.
Hình 2.11 Qui trình phát triển blueprint ....................... Error! Bookmark not defined.
Hình 2.12 Cấu trúc của SPT profile ............................. Error! Bookmark not defined.
Hình 2.13 Quá trình phát triển và biên dịch phần mềm nhúngError! Bookmark not
defined.
Hình 2.14 Hình dáng của thiết bị .................................. Error! Bookmark not defined.
Hình 2.15 Biểu đồ ngữ cảnh của hệ thống ................... Error! Bookmark not defined.
Hình 2.16 Biểu đồ Use Case ......................................... Error! Bookmark not defined.
Hình 2.17 Biểu đồ tuần tự cho ca sử dụng Playback a messageError! Bookmark not
defined.
Hình 2.18 Alarm while playback a message ................ Error! Bookmark not defined.
Hình 2.19 Ngữ cảnh vào và ra khỏi chế độ stand-by ... Error! Bookmark not defined.
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 2.20 Biểu đồ lớp của hệ thống ............................. Error! Bookmark not defined.
Hình 2.21 Các hệ thống con trong Digital Sound RecorderError! Bookmark not
defined.
Hình 2.22 Biểu đồ lớp hệ thống Audio ........................ Error! Bookmark not defined.
Hình 2.23 Biểu đồ tuần tự nghe một thông điệp .......... Error! Bookmark not defined.
Hình 2.24 Thiết kế phần cứng của hệ thống ................. Error! Bookmark not defined.
Hình 3.1 Cấu trúc hệ điều hành thời gian thực ............ Error! Bookmark not defined.
Hình 3.2 Hoạt động chia nhỏ thời gian và tuần tự ....... Error! Bookmark not defined.
Hình 3.3 Một ví dụ về semaphore ................................ Error! Bookmark not defined.
Hình 3.4 Truyền thông của RTOS ................................ Error! Bookmark not defined.
Hình 3.5 Các khối bộ nhớ được gán trong RTOS ........ Error! Bookmark not defined.
Hình 3.6 Cấu trúc một tác vụ ........................................ Error! Bookmark not defined.
Hình 3.7 Biểu đồ chuyển trạng thái của tác vụ ............ Error! Bookmark not defined.
Hình 3.8 Hàm dịch vụ ngắt trong µC/OS ..................... Error! Bookmark not defined.
Hình 4.2. Câu truc mô-dun của chương trinh ............... Error! Bookmark not defined.
Hình 4.3 Lưu đô huân luyên mang ............................... Error! Bookmark not defined.
Hình 4.4 Kiến trúc tổng quát của Tesseract ................. Error! Bookmark not defined.
Hình 5.1 Quá trình học chữ Nôm ................................. Error! Bookmark not defined.
Hình 5.2 Quá trình nhận dạng ...................................... Error! Bookmark not defined.
Hình 5.3 Biểu đồ ngữ cảnh của hệ thống ..................... Error! Bookmark not defined.
Hình 5.4 Biểu đồ Use case của hệ thống ...................... Error! Bookmark not defined.
Hình 5.5 Biểu đồ tuần tự của hệ thống nhận dạng chữ NômError! Bookmark not
defined.
Hình 5.6 Biểu đồ lớp của hệ thống nhận dạng chữ NômError! Bookmark not
defined.
Hình 5.7 Trạng thái của tác vụ khi thực thi trong hệ thốngError! Bookmark not
defined.
Hình 5.8 Biểu đồ chuyển đổi giữa các tác vụ ............... Error! Bookmark not defined.
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 ........ Error! Bookmark not defined.
Bảng 2.2 Các đối tượng của hệ thống .......................... Error! Bookmark not defined.
Bảng 4.1 Môt kêt qua nhận dạng .................................. Error! Bookmark not defined.
Bảng 4.2 Kêt qua nhân dang chư Nôm vơi Tesseract ... Error! Bookmark not defined.
Bảng 5.1 Các sự kiện tác động vào chương trình ......... Error! Bookmark not defined.
Bảng 5.2 Kết quả thực hiện tác vụ nhận dạng .............. Error! Bookmark not defined.
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
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
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
7
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 cua tac gia 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
8
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
9
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
10
đị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
11
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
12
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
13
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
14
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
15
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)
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
16
1
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] PGS. TS. Nguyễn Ngọc Bình, “Một số ý kiến về phát triến, ứng dụng công nghệ
thông tin của Việt Nam”, Hội thảo Quốc gia Hội nhập Quốc tế về Khoa học và Công
nghệ, 2005.
[2] PGS. TS. Phạm Thượng Cát, “Hệ thống nhúng và sự phát triển của công nghệ
thông tin”, Tạp chí Tin học và điều khiển, 2005.
[3] Phan Anh Dũng, Dương Văn Việt, Hoàng Thị Ngọc Dung – Trung tâm Công nghệ
thông tin Thừa Thiên Huế, “Đưa Chư Han-Nôm Vao Thiêt Bi Câm Tay ”, Hội nghị chữ
Nôm, 2006.
[4] Phan Anh Dũng, Nguyễn Thế, “Từ điển Trực tuyến Việt-Hán-Nôm”, 2006.
[5] Phòng nhận dạng và xử lý ảnh Viện công nghệ thông tin , “Phân mêm nhân dang
chư Viêt in”, 1997-1998.
Tiếng Anh
[6] Arbib, Michael A. (Ed.), “The Handbook of Brain Theory and Neural Networks”,
MIT Press, 1995.
[7] Arnold Berger, “Embedded Systems Design: An Introduction to Processes, Tool
and Techniques ”, CMP Books, 2002.
[8] Bentley, J. L, “Multidimensional binary search tree used for associative
searching”, Commun, ACM, 1975, pp 509–517.
[9] Belur V. Dasarathy, “Nearest Neighbor (NN) Norms: NN Pattern Classification
Techniques”, IEEE Computer Society Press, 1991.
[10] Bruce Powel Douglass, “Advances in the UML for Real-time System, Third
Edition”, Addition Wesley, 2004.
[11] Cheng-Lin Liu, Hiromichi Fujisawa, “Classification and Learning for Character
Recognition: Comparasion of Methods and Remaining Problems”, NNLDAR
Workshop, 2007.
[12] Daniel Admassu, “Unicode Optical Character Recognition”, 2005.
[13] David E. Simon, “An Embedded Software Primer”, Addison Wesley, 1999.
[14] Ivan Porres Paltor, Johan Lilius, “A Case Study on Designing Embedded Systems
using UML notation”, TUCS Technial Report, 1999.
[15] Jack Ganssle, “The Art of Designing Embedded Systems”, Newnes, 1999.
[16] Jack Ganssel, Michael Barr, “Embedded Systems (World Class Designs)”.
Newnes, 2007.
[17] Jean Labrosses, “Micro C OS II: The Real Kernel”, Newnes, 2002.
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
17
[18] Jiamei Cai, Tieming Chen, and Liying Zhu, “A Structure Modelling Method for
Multi-task Embedded Software Design”, Zhejiang University of Technology, ICESS
2004.
[19] Luciano Lavagno, Grant Martin and Bran Selic, “UML for real design of
Embedded Real-Time Systems”, Kluwer Academic, 2004.
[20] Michael Barr, “Programming Embedded Systems in C and C++”, O’Reilly,
1999.
[21] Micrium Inc, “µC/OS-II Reference Manual”, Newnes, 2002.
[22] Mingrui Wu, Bo Zhang, Ling Zhang, “A Neural Network Based Classifier for
Handwritten Chinese Character Recognition”, ICPR'00 - Volume 2, 2000.
[23] Object Management Group, “UML Profile for Schedulability, Performance, and
Time”, OMG document ptc/02-03-02, Needham MA, 2002.
[24] Olli S, Jaakko, “A Embedded Systems, Lecture Notes”, Helsinki University of
Tech, 2006.
[25] Peter Marweden, “Embedded Systems Design”, Springer, 2006.
[26] Qing Li and Carolyn Yao, “Real-time Concepts for Embedded Systems”, CMP
Books, 2003.
[27] Ray Smith, “An Overview of the Tesseract OCR Engine”, OSCON, 2007.
[28] Ray Smith, “A Simple and Efficient Skew Detection Algorithm via Text Row
Accumulation”, Proc of the 3rd Int, Conf. on Document Analysis and Recognition
(Vol. 2), IEEE 1995, pp 1145-1148.
[29] Richard Romero, Robert Berger, Robert Thibadeau, David Touretzky, “Neural
Network Classifiers for Optical Chinese Character Recognition”, In Proceedings of
the Fourth Annual Symposium on Document Analysis and Information Retrieval,
1995.
[30] Sacha Barber, “An introduction into Neural Networks”, 2003, pp 277-280.
[31] Sargur N. Srihari, Xuanshen Yang, Gregory R. Ball, “Offline Chinese
handwriting recognition: an assessment of current technology”, 2007.
[32] Stephen V. Rice, Frank R. Jenkins, Thomas. A. Nartker, “The Fourth Annual Test
of OCR Accuracy, Technical Report 95-03”, Information Science Research Institute,
University of Nevada, Las Vegas, July 1995.
[33] Stuart R.Ball, “Embedded Microprocessor Systems”, Newnes, 2002.
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
18