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

  • Số trang: 84 |
  • Loại file: PDF |
  • Lượt xem: 25 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

ĐẠ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 -