Nghiên cứu ứng dụng “NModel” trong việc phát triển hệ thống nhúng thời gian thực

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

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

Mô tả:

2 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ HẠNH NGHIÊN CỨU ỨNG DỤNG “NMODEL” TRONG VIỆC PHÁT TRIỂN HỆ THỐNG NHÚNG THỜI GIAN THỰC Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS. TS. Đặng Văn Đức Hà Nội - Năm 2014 3 LỜI CAM ĐOAN Tôi xin cam đoan rằng nội dung và những kết quả của luận văn tốt nghiệp này là do tôi tự nghiên cứu dƣới sự hƣớng dẫn của PGS.TS Đặng Văn Đức. Trong toàn bộ nội dung của luận văn, những điều đƣợc trình bày là của cá nhân tôi hoặc đƣợc tổng hợp từ nhiều nguồn tài liệu khác. Tất cả các tài liệu tham khảo đều đƣợc trích dẫn rõ ràng ở phần cuối của luận văn. Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định cho lời cam đoan của mình. Hà Nội, ngày 10 tháng 06 năm 2014 Học viên Nguyễn Thị Hạnh 4 LỜI CẢM ƠN Trong quá trình học tập và nghiên cứu tại khoa Công nghệ thông tin trƣờng Đại học Công nghệ - Đại học Quốc gia Hà Nội, đến nay tôi đã hoàn thành chƣơng trình học và luận văn tốt nghiệp. Tôi không thể quên gửi lời cảm ơn tới các thầy cô, gia đình và bạn bè. Đầu tiên, tôi xin đƣợc bày tỏ lòng biết ơn sâu sắc tới sự giúp đỡ của giảng viên hƣớng dẫn PGS.TS. Đặng Văn Đức. Trong suốt thời gian làm luận văn, thầy đã giúp đỡ và chỉ bảo nhiệt tình để tôi có thể hoàn thành luận văn đạt đƣợc kết quả tốt. Tôi cũng xin gửi lời cám ơn đến tập thể các thầy cô giáo trong Khoa CNTT – ĐH Công Nghệ - ĐH Quốc Gia Hà Nội cùng các bạn học viên cao học khóa K18 đã tạo điều kiện cho tôi tiếp thu kiến thức, làm việc theo nhóm và có một môi trƣờng học tập tốt nhất. Cuối cùng, tôi xin gửi lời cảm ơn tới gia đình tôi – những ngƣời thân đã động viên tôi bằng cả vật chất lẫn tinh thần trong suốt thời gian tôi học tập. Tuy rằng, tôi đã cố gắng hết sức trong quá trình làm luận văn nhƣng không thể tránh khỏi thiếu sót, tôi rất mong nhận đƣợc những góp ý của thầy cô và các bạn. Hà Nội, ngày 10 tháng 06. năm 2014 Học viên Nguyễn Thị Hạnh 5 MỤC LỤC LỜI CAM ĐOAN ............................................................................................................3 LỜI CẢM ƠN ..................................................................................................................4 MỤC LỤC .......................................................................................................................5 DANH MỤC CÁC HÌNH VẼ .........................................................................................8 CHƢƠNG 1. GIỚI THIỆU ...........................................................................................10 1.1. Đặt vấn đề ............................................................................................................10 1.2. Nội dung nghiên cứu ...........................................................................................10 1.3. Tầm quan trọng của kiểm thử dựa trên mô hình .................................................11 1.4. Cấu trúc luận văn .................................................................................................11 CHƢƠNG 2. TỔNG QUAN VỀ HỆ THỐNG NHÚNG ..............................................12 2.1. Các khái niệm về hệ thống nhúng .......................................................................12 2.1.1. Hệ thống nhúng ...............................................................................................12 2.1.2. Hệ thời gian thực ..............................................................................................13 2.2. Cấu trúc phần cứng hệ thống nhúng ....................................................................14 2.2.1. Các thành phần cơ bản .....................................................................................14 2.2.1.1. Đơn vị xử lý trung tâm (CPU) ...................................................................14 2.2.1.2. Bộ nhớ ........................................................................................................14 2.2.1.3. Thiết bị ngoại vi .........................................................................................15 2.2.1.4. Bus địa chỉ, bus dữ liệu và bus điều khiển ................................................17 2.2.2. Một số nền phần cứng nhúng thông dụng ........................................................18 2.2.2.1. Vi điều khiển nhúng...................................................................................18 2.2.2.2. Chip DSP ...................................................................................................19 2.3. Kiến trúc phần mềm nhúng .................................................................................19 2.3.1. Kiến trúc Round-Robin (RR) ...........................................................................19 2.3.2. Kiến trúc Round-Robin với ngắt (RRI) ...........................................................20 2.3.3. Kiến trúc Lập lịch dòng chức năng (FQS) ......................................................21 2.3.4. Kiến trúc Hệ điều hành thời gian thực (RTOS) ...............................................21 2.4. Hệ điều hành thời gian thực ................................................................................22 2.4.1. Khái niệm hệ điều hành thời gian thực ............................................................22 2.4.2. Tác vụ (Task) và trạng thái tác vụ....................................................................23 2.4.3. Queue và các trạng thái của queue ...................................................................24 6 2.4.4. Các phƣơng pháp lập lịch.................................................................................26 CHƢƠNG 3. NGHIÊN CỨU VỀ KIỂM THỬ VÀ PHÂN TÍCH DỰA TRÊN MÔ HÌNH .............................................................................................................................28 3.1. Tổng quan ...............................................................................................................28 3.1.1. Khái niệm NModel ...........................................................................................28 3.1.2. Khái niệm chƣơng trình mô hình .....................................................................28 3.1.3. Khái niệm phân tích dựa trên mô hình .............................................................29 3.1.4. Khái niệm kiểm thử dựa trên mô hình .............................................................29 3.1.5. Chƣơng trình mô hình trong quy trình phần mềm ...........................................30 3.2. Hệ thống với các mô hình hữu hạn .....................................................................30 3.2.1. Chƣơng trình mô hình ......................................................................................30 3.2.1.1. Hành động (Action) ...................................................................................30 3.2.1.2. Hành vi (Behavior) ....................................................................................31 3.2.1.3. Cấu trúc chƣơng trình mô hình hợp đồng C# ............................................31 3.2.2. Thăm dò và phân tích chƣơng trình mô hình hữu hạn .....................................32 3.2.2.1. Máy trạng thái hữu hạn (FSM-Finite State Machines) ..............................32 3.2.2.2. Thăm dò .....................................................................................................33 3.2.2.3. Phân tích ....................................................................................................36 3.2.3. Cấu trúc chƣơng trình mô hình với thành phần (Composition) .......................36 3.2.3.1. Điều khiển kịch bản (Scenario control) .....................................................37 3.2.3.2. Thành phần (Composition) ........................................................................37 3.2.4. Kiểm thử hệ thống đóng ...................................................................................43 3.2.4.1. Tạo bộ kiểm thử (test suite) cho phƣơng pháp kiểm thử ngoại tuyến (Offline) ..................................................................................................................43 3.2.4.2. Dấu vết và giới hạn ....................................................................................43 3.2.4.3. Bản khai thác kiểm thử (Test harness) và việc thực thi kiểm thử (Test execution)................................................................................................................44 3.2.4.4. Hạn chế của kiểm thử ngoại tuyến ............................................................46 3.2.5. Kiểm thử các hệ thống với trạng thái phức tạp ................................................46 3.2.5.1. Kiểm thử “on-the-fly” ................................................................................46 3.2.5.2. Các chiến lƣợc ...........................................................................................50 CHƢƠNG 4. XÂY DỰNG DEMO VÀ KIỂM THỬ HỆ THỐNG VỚI NMODEL ...53 4.1. Giới thiệu NModel ..............................................................................................53 7 4.1.1. Cài đặt NModel ................................................................................................53 4.1.2. Cách sử dụng các công cụ mpv, otg, ct ............................................................53 4.1.2.1. Công cụ mpv ..............................................................................................53 41.2.2. Công cụ otg .................................................................................................54 4.1.2.3. Công cụ ct ..................................................................................................54 4.2. Xây dựng và thực nghiệm với demo hệ thống client/server ...............................55 4.2.1. Mô tả bài toán...................................................................................................55 4.2.2. Kiểm thử demo bằng NModel .........................................................................57 4.2.2.1. Kiểm thử ngoại tuyến (Offline) .................................................................57 4.2.2.2. Kiểm thử on-the-fly ...................................................................................65 CHƢƠNG 5. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ..............................................67 5.1. Kết luận...................................................................................................................68 5.2. Hƣớng phát triển .....................................................................................................68 TÀI LIỆU THAM KHẢO .............................................................................................69 PHỤ LỤC ......................................................................................................................70 8 DANH MỤC CÁC HÌNH VẼ Hình 2.1: Mẫu xe trong cuộc thi Micom Car Rally (chip Renesas H8) ........................12 Hình 2.2: Một số hệ thống nhúng thông dụng nhƣ robot, máy in và điện thoại ...........13 Hình 2.3:Cấu trúc CPU ..................................................................................................14 Hình 2.4: Kiến trúc bộ nhớ Von Neumann và Havard ..................................................15 Hình 2.5: Cấu trúc ghép nối giữa máy tính và thiết bị ngoại vi ....................................16 Hình 2.6: Chu kỳ hoạt động bus dồn kênh ....................................................................18 Hình 2.7: Kiến trúc nguyên lý của VĐK với cấu trúc Havard ......................................19 Hình 2.8: Minh họa kiến trúc RR bằng giả mã và đồ thị ..............................................20 Hình 2.9: Minh họa kiến trúc RRI bằng giả mã ............................................................21 Hình 2.10: So sánh kiến trúc RTOS và OS chuẩn........................................................22 Hình 2.11: Cấu trúc hệ điều hành thời gian thực...........................................................23 Hình 2.12: Cấu trúc của một Task cơ bản .....................................................................24 Hình 2.13: Các trạng thái của task.................................................................................24 Hình 2.14: Hàng đợi Queue ...........................................................................................25 Hình 2.15: Trạng thái của Queue ..................................................................................25 Hình 2.16: Phân loại các phƣơng pháp lập lịch ............................................................26 Hình 2.17: Giản đồ thời gian thực hiện lịch của tác vụ .................................................27 Hình 3.1: Sơ đồ hoạt động của MBT.............................................................................29 Hình 3.2: Mô hình chữ V trong phát triển phần mềm dựa trên mô hình ......................30 Hình 3.3: Một thuật toán thăm dò đầy đủ ......................................................................35 Hình 3.4: Chƣơng trình mô hình M1 .............................................................................38 Hình 3.5: Chƣơng trình mô hình M2 .............................................................................39 Hình 3.6: MP M1xM2 - sản phẩm của M1 và M2 .......................................................39 Hình 3.7: Phần mở rộng vòng lặp của M1 ....................................................................39 Hình 3.8: Phần mở rộng vòng lặp của M2 ....................................................................40 Hình 3.9: MP M1xM2, các trạng thái đôi và hành động phù hợp.................................41 Hình 3.10: Các trạng thái , hành động trong M1xM2 ...................................................41 Hình 3.11: M1 dƣới dạng FSM text file ........................................................................42 Hình 3.12: Bag implementation ....................................................................................47 Hình 3.13: Bag Model ...................................................................................................48 Hình 3.14: Một tính năng của mô hình và kịch bản ......................................................49 Hình 3.15: Bag stepper ..................................................................................................50 Hình 3.16: Giao diện IStrategy ......................................................................................51 Hình 4.1. Thiết bị điều khiển từ xa – Hệ thống Client/Server ......................................55 Hình 4.2: Giao thức client/server ..................................................................................56 9 Hình 4.3: FSM đúng của MP hợp đồng.........................................................................58 Hình 4.4: FSM của MP kịch bản ...................................................................................59 Hình 4.5: FSM của MP kịch bản kết hợp với MP hợp đồng .........................................59 Hình 4.6: FSM của test suite đƣợc tạo với MP hợp đồng .............................................62 Hình 4.7: FSM của test suite đƣợc tạo khi MP hợp đồng biên soạn với MP kịch bản .63 Hình 4.8: Kết quả kiểm thử ngoại tuyến với trƣờng hợp sử dụng MP hợp đồng .........64 Hình 4.9: Kết quả kiểm thử ngoại tuyến với trƣờng hợp sử dụng điều khiển kịch bản (MP hợp đồng đƣợc biên soạn với MP kịch bản)..........................................................64 Hình 4.10: Kết quả kiểm thử ngẫu nhiên khi sử dụng MP hợp đồng............................66 Hình 4.11: Kết quả kiểm thử ngẫu nhiên khi sử dụng điều khiển kịch bản (1) ............66 Hình 4.12: Kết quả kiểm thử ngẫu nhiên khi sử dụng điều khiển kịch bản (2) ............67 10 CHƢƠNG 1. GIỚI THIỆU 1.1. Đặt vấn đề Ngày nay, các hệ thống nhúng rất phát triển với những ứng dụng rộng rãi trong nhiều lĩnh vực công nghiệp và đời sống. Các hệ thống nhúng có kiến trúc phần cứng cũng nhƣ phần mềm rất đa dạng và phong phú. Nhƣ chúng ta đã biết, trong phát triển phần mềm thì hoạt động kiểm thử có vai trò hết sức quan trọng, mang tính sống còn của sản phẩm và với phần mềm nhúng cũng không phải là ngoại lệ. Sự phát triển của hệ thống nhúng kéo theo những yêu cầu phát triển của hoạt động kiểm thử phần mềm nhúng. Thông thƣờng, một cách rất phổ biến để kiểm thử phần mềm cho hệ thống nhúng nói chung đó là chạy phần mềm trên chƣơng trình giả lập phần cứng, chƣơng trình giả lập ở đây có thể là một vi điều khiển ảo cũng có thể là một chƣơng trình mô phỏng hình dung cả một hệ thống mạch bao gồm vi điều khiển và các thiết bị khác. Tuy nhiên hiện nay, hệ thống nhúng ở Việt Nam mới phát triển khá khiêm tốn so với thế giới, và lĩnh vực kiểm thử nhúng lại càng khiêm tốn hơn. Có rất ít các bài báo, các tài liệu nói về hoạt động kiểm thử nhúng cũng nhƣ không có nhiều công cụ hỗ trợ cho việc kiểm thử này. Do đó, việc nghiên cứu và tìm hiểu các phƣơng pháp, các kỹ thuật kiểm thử cũng nhƣ công cụ cho phần mềm nhúng là một vấn đề cần thiết hiện nay, nó sẽ góp phần thúc đẩy sự phát triển của lĩnh vực hệ thống nhúng, một lĩnh vực giàu tiềm năng nhƣng mới chỉ bƣớc đầu phát triển ở việt nam. Trong luận văn này, tôi chọn nghiên cứu kiểm thử dựa trên mô hình với NModel trong việc phát triển phần mềm nhúng, cụ thể là kiểm thử cho bài toán về hệ thống Client/Server – một thiết bị điều khiển từ xa có sử dụng cảm biến nhiệt độ. 1.2. Nội dung nghiên cứu Mục tiêu của luận văn: Mục tiêu đặt ra là nghiên cứu phƣơng pháp kiểm thử dựa trên mô hình để hỗ trợ cho việc phát triển hệ thống nhúng. Nhiệm vụ của luận văn: Trong luận văn này, nhiệm vụ chính là nghiên cứu ứng dụng cụ thể NModel sau đó áp dụng kiểm thử bài toán thiết bị điều khiển từ xa Client/Server. Luận văn tập trung nghiên cứu và khảo sát tổng quan về lý thuyết hệ thống nhúng; lý thuyết phân tích và kiểm thử dựa trên mô hình và các kỹ thuật kiểm thử phần mềm; luận văn cũng nghiên cứu về các loại chƣơng trình mô hình trong NModel để kiểm thử bài toán về thiết bị điều khiển từ xa Client/Server . Từ những hiểu biết về phân tích và kiểm thử phần mềm, luận văn đã áp dụng quy trình của các phƣơng pháp kiểm thử ngoại tuyến và kiểm thử trực tuyến (on-the-fly) để kiểm thử bài toán. Hệ thống Client/Server – thiết bị điều khiển từ xa là bài toán về hệ thống nhúng đơn giản nhƣng đầy đủ, không sử dụng hệ điều hành nhúng. Các chƣơng trình đƣợc viết bằng ngôn ngữ C# và kiểm thử đƣợc chạy mô phỏng bằng công cụ NModel. 11 1.3. Tầm quan trọng của kiểm thử dựa trên mô hình Trong phát triển phần mềm, các kiểm thử viên thƣờng thực hiện công việc bằng phƣơng pháp truyền thống nên đôi khi bị nhàm chán vì công việc lặp đi lặp lại, tốn thời gian để thực hiện kiểm thử. Do đó, kiểm thử dựa trên mô hình sẽ khắc phục đƣợc một số vấn đề nhƣ sau:  Quá trình sinh ca kiểm thử là tự động nên sẽ rút ngắn thời gian làm phần mềm, chất lƣợng phần mềm đƣợc cải thiện hơn, sinh ra nhiều ca kiểm thử và phát hiện nhiều lỗi.  Loại bỏ đƣợc sự nhàm chán và tính chủ quan khi làm việc nên giúp cho các kiểm thử viên hài lòng với công việc của mình.  Tự động tạo và kiểm tra để tránh các ca kiểm thử trùng nhau hoặc không hữu hiệu.  Khi có yêu cầu thay đổi hệ thống thì việc thay đổi các ca kiểm thử chỉ việc thay đổi mô hình của hệ thống. 1.4. Cấu trúc luận văn Các phần còn lại của luận văn có cấu trúc nhƣ sau: Chƣơng 2 trình bày tổng quan về hệ thống nhúng và phần mềm nhúng. Chƣơng 3 trình bày về lý thuyết phân tích và kiểm thử dựa trên mô hình, và hệ thống với các mô hình hữu hạn. Chƣơng 4 giới thiệu về cách cài đặt và cách sử dụng công cụ NModel, trình bày về bài toán và kết quả thực nghiệm kiểm thử hệ thống Client/Server – thiết bị điều khiển từ xa. Cuối cùng là kết luận về quá trình nghiên cứu, đƣa ra các kết quả đạt đƣợc, và hƣớng nghiên cứu tiếp theo. 12 CHƢƠNG 2. TỔNG QUAN VỀ HỆ THỐNG NHÚNG 2.1. Các khái niệm về hệ thống nhúng 2.1.1. Hệ thống nhúng Ngày nay, xung quanh ta có rất nhiều thiết bị, đồ dùng liên quan đến hệ thống nhúng nhƣ đồng hồ kỹ thuật số, ô tô, hoặc những sản phẩm lớn nhƣ đèn giao thông, máy giặt, hệ thống kiểm soát các máy năng lƣợng hạt nhân. Vậy thực chất “hệ thống nhúng là gì?”. Có rất nhiều khái niệm về hệ thống nhúng. Tuy nhiên, theo [1]: “Hệ thống nhúng là một thuật ngữ để chỉ một hệ thống có khả năng tự trị đƣợc nhúng vào trong một môi trƣờng hay một hệ thống mẹ. Đó là các hệ thống tích hợp cả phần cứng và phần mềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hóa điều khiển, quan trắc và truyền tin”. Không giống nhƣ các máy tính đa chức năng, hệ thống nhúng đƣợc thiết kế để thực hiện một chức năng chuyên biệt nào đó. Nó có đặc điểm là hoạt động ổn định và có tính năng tự động hóa cao. Sau đây là một số ví dụ điển hình về hệ thống nhúng:  Các hệ thống dẫn đƣờng trong không lƣu, hệ thống định vị toàn cầu, vệ tinh.  Các thiết bị gia dụng: tủ lạnh, lò vi sóng, lò nƣớng.  Các thiết bị kết nối mạng: router, hub, gateway.  Các thiết bị văn phòng: máy photocopy, máy fax, máy in, máy scan.  Các thiết bị y tế: máy thẩm thấu, máy điều hòa nhịp tim.  Các máy trả lời tự động.  Dây chuyền sản xuất tự động trong công nghiệp, robots. Hình 2.1: Mẫu xe trong cuộc thi Micom Car Rally (chip Renesas H8) 13 Hình 2.2: Một số hệ thống nhúng thông dụng nhƣ robot, máy in và điện thoại 2.1.2. Hệ thời gian thực Thời gian thực rất khó định nghĩa chính xác. Thông thƣờng, trong các bài toán điều khiển hay gặp thuật ngữ “thời gian thực”. Vậy thời gian thực nên đƣợc hiểu nhƣ thế nào cho đúng? Thời gian thực là yêu cầu khắt khe về sự ràng buộc thời gian, có nghĩa là: Các yêu cầu của hệ thống phải đảm bảo thoả mãn các hành vi của hệ thống đƣợc thực hiện đúng trong khung thời gian cho trƣớc hoàn toàn xác định. Khung thời gian này đƣợc xác định bởi yêu cầu của hệ thống. Về cơ bản, thời gian thực đƣợc phân ra thành hai loại là thời gian thực cứng (hard real-time) và thời gian thực mềm (soft real-time). Theo [1], hai loại thời gian thực đƣợc định nghĩa nhƣ sau:  Thời gian thực cứng là khi hệ thống hoạt động với yêu cầu thỏa 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 phá hủy.  Thời gian thực mềm là khi hệ thống hoạt động với yêu cầu thoản 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ụ với hệ thời gian thực cứng: Máy hỗ trợ nhịp tim cho bệnh nhân khi phẫu thuật. Thuật toán điều khiển phụ thuộc vào thời gian nhịp tim của ngƣời bệnh, nếu thời gian này bị trễ thì tính mạng của ngƣời bệnh sẽ gặp nguy hiểm. Ví dụ với hệ thời gian thực mềm: Cây rút tiền tự động ATM. Khi ta đƣa thẻ ATM vào máy, có thể do nghẽn mạng mà việc rút tiền bị trễ vài giây thậm chí vài phút thì ta vẫn có thể kiên nhẫn chờ đợi mà không gây thiệt hại gì cho ngƣời rút tiền. Các lĩnh vực ứng dụng của hệ thống nhúng: Ngày nay, có rất nhiều các ứng dụng của hệ thống nhúng đang đƣợc sử dụng và sẽ tiếp tục tăng nhanh trong tƣơng lai. Một số lĩnh vực và sản phẩm thị trƣờng 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  Lĩnh vực truyền thông  Thiết bị y tế 14  Hệ thống nhà thông minh  Rô bốt  Ô tô, tàu điện 2.2. Cấu trúc phần cứng hệ thống nhúng 2.2.1. Các thành phần cơ bản 2.2.1.1. Đơn vị xử lý trung tâm (CPU) Hình 2.3:Cấu trúc CPU CPU là viết tắt của chữ “Central Processing Unit”. Nó là đơn vị xử lý trung tâm đóng vai trò nhƣ bộ não chịu trách nhiệm thực thi các phép tính và thực hiện các lệnh. CPU là một mạch tích hợp phức tạp gồm hàng triệu transitor trên một bảng mạch nhỏ. Bộ xử lý trung tâm bao gồm đơn vị logic toán học ALU (Arthimetic Logic Unit), bộ giải mã (decoder), bộ tuần tự (sequencer) và các thanh ghi. Trong tài liệu [1], cơ chế làm việc của CPU đƣợc giải thích nhƣ sau: Bộ giải mã chuyển đổi các lệnh lƣu trữ ở trong bộ mã chƣơng trình thành các mã mà ALU có thể hiểu đƣợc và thực thi. Bộ tuần tự có nhiệm vụ quản lý dòng dữ liệu trao đổi qua bus dữ liệu của vi xử lý. Các thanh ghi đƣợc sử dụng để CPU lƣu trữ tạm thời các dữ liệu chính cho việc thực thi các lệnh và chúng có thể thay đổi nội dung trong quá trình hoạt động của ALU. Hầu hết các thanh ghi của vi xử lý đều là các bộ nhớ đƣợc tham chiếu và hội nhập với khu vực bộ nhớ và có thể đƣợc sử dụng nhƣ bất kỳ khu vực nhớ khác. 2.2.1.2. Bộ nhớ Bộ nhớ là một yêu cầu tài nguyên quan trọng không chỉ trong hệ thống nhúng mà trong mọi hệ thống khác. Ngay cả hệ thống con ngƣời cũng cần bộ nhớ. Về kiến 15 trúc bộ nhớ đƣợc chia làm hai loại cơ bản là kiến trúc bộ nhớ Von Neumann và Havard. Kiến trúc bộ nhớ von Neumann và Havard đƣợc biểu diễn nhƣ trong hình 2.4. Hình 2.4: Kiến trúc bộ nhớ Von Neumann và Havard Kiến trúc Von Neumann không phân biệt vùng chứa dữ liệu và mã chƣơng trình. Chúng đều đƣợc truy xuất trên cùng một đƣờng. Còn với kiến trúc Havard thì phân biệt vùng lƣu mã chƣơng trình và dữ liệu. Mã chƣơng trình chỉ có thể lƣu và thực hiện trong vùng chứa ROM và dữ liệu cũng chỉ đƣợc lƣu và trao đổi trong vùng RAM. Ngày nay, trong các vi xử lý nhúng kiến trúc bộ nhớ Havard đƣợc sử dụng nhiều hơn so với kiến trúc bộ nhớ von Neumann. Ví dụ Chip vi điều khiển nhúng hay sử dụng cấu trúc Havard là 8031, PIC, Atmel AVR90S. Lý do kiến trúc Harvard đƣợc dùng nhiều là nó có ƣu điểm nổi bật hơn von Neumann. Nó có hai kênh tách biệt để truy nhập vào vùng bộ nhớ dữ liệu và mã chƣơng trình. Điều đó giúp cho mã chƣơng trình và dữ liệu có thể đƣợc truy nhập đồng thời và làm tăng tốc độ luồng trao đổi với bộ xử lý. 2.2.1.3. Thiết bị ngoại vi Máy tính hay hệ vi xử lý trao đổi dữ liệu với môi trƣờng bên ngoài thông qua các thiết bị ngoại vi. Các thiết bị ngoại vi bao gồm:  Các thiết bị vào chuẩn nhƣ bàn phím, chuột  Các thiết bị ra chuẩn nhƣ màn hình, máy in  Các bộ nhớ ngoài chuẩn nhƣ ổ cứng, CD ROM  Các hệ đo lƣờng, điều khiển. Cấu trúc ghép nối giữa máy vi tính và thiết bị ngoại vi đƣợc thể hiện trong hình 2.5. Bộ phối ghép nằm giữa máy vi tính và các thiết bị ngoài, đóng vai trò trung chuyển dữ liệu giữa chúng. Khi truyền dữ liệu từ máy tính ra thiết bị ngoài thì nó đóng 16 vai trò nhận dữ liệu từ máy tính và là nguồn cấp dữ liệu cho thiết bị ngoài. Ngƣợc lại, khi truyền dữ liệu từ thiết bị ngoài vào thì bộ phối ghép lại đóng vai trò nhận dữ liệu từ thiết bị ngoài và là nguồn cấp dữ liệu cho máy tính. Bộ phối ghép làm nhiệm vụ phối hợp trao đổi dữ liệu giữa máy tính và thiết bị ngoài về mức công suất của tín hiệu, dạng tín hiệu, tốc độ và phƣơng thức trao đổi. Hình 2.5: Cấu trúc ghép nối giữa máy tính và thiết bị ngoại vi Phối hợp về mức và công suất tín hiệu: Máy tính thƣờng có mức tín hiệu là (0V, 5V). Trong khi đó, các thiết bị ngoài hoặc ở mức cao (± 15V, ± 48V ) hoặc rất thấp (˂ 1V). Do đó, bộ phối ghép phải biến đổi các mức tín hiệu trên cho phù hợp. Công suất tín hiệu trên bus dữ liệu rất nhỏ (cỡ vài chục mA), trong khi thiết bị ngoài lại cần công suất lớn hơn nhiều. Do đó, bộ phối ghép phải biến đổi công suất cho phù hợp. Phối hợp về dạng dữ liệu (tín hiệu): Bộ phối ghép phải đảm bảo tính tƣơng thích về cơ chế trao đổi dữ liệu giữa máy tính và thiết bị ngoại vi. Phối hợp về tốc độ trao đổi dữ liệu: Máy tính hoạt động với tốc độ cao còn các thiết bị ngoại vi hoạt động với tốc độ chậm hơn. Do đó, bộ phối ghép phải có khả năng cấp, nhận dữ liệu nhanh với máy tính còn với thiết bị ngoại vi thì ngƣợc lại. Phối hợp về phƣơng thức trao đổi dữ liệu Nếu việc trao đổi dữ liệu do máy tính yêu cầu thì quá trình diễn ra nhƣ sau: Máy tính đƣa lệnh điều khiển để khởi động bộ phối ghép hoặc thiết bị ngoại vi. Máy tính đọc tín hiệu trả lời, nếu có tín hiệu sẵn sàng mới trao đổi tin, nếu không thì thêm 17 một chu kỳ chờ và đọc lại trạng thái. Máy tính trao đổi tin khi đọc thấy trạng thái sẵn sàng. Nếu việc trao đổi tin do thiết bị ngoại vi yêu cầu thì việc trao đổi diễn ra khi: Thiết bị ngoại vi gửi yêu cầu trao đổi tin tới bộ xử lý ngắt của khối ghép nối (KGN). Nếu có nhiều thiết bị ngoại vi cùng gửi yêu cầu thì KGN xử lý theo mức ƣu tiên ngắt định trƣớc rồi đƣa yêu cầu trao đổi tin cho máy tính. Máy tính nhận yêu cầu, chuẩn bị trao đổi và gửi tín hiệu xác nhận sẵn sàng trao đổi. KGN nhận và truyền tín hiệu xác nhận cho thiết bị ngoại vi. Thiết bị ngoại vi trao đổi tin với KGN còn khối ghép nối trao đổi với máy tính (nếu là đƣa tin vào) hoặc máy tính trao đổi tin với KGN và KGN trao đổi với thiết bị ngoại vi (nếu là đƣa tin ra). 2.2.1.4. Bus địa chỉ, bus dữ liệu và bus điều khiển Bus địa chỉ: là các đƣờng dẫn tín hiệu logic một chiều, nó làm nhiệm vụ truyền địa chỉ tham chiếu đến các khu vực nhớ và chỉ ra nơi mà dữ liệu đƣợc lƣu trữ trong không gian bộ nhớ. Trong quá trình hoạt động, CPU sẽ điều khiển bus địa chỉ để truyền dữ liệu giữa CPU và bộ nhớ. Dữ liệu đƣợc lƣu trữ thƣờng là 8 bít, 16 bít, hoặc 32 bít tùy vào cấu trúc từng loại vi xử lý và vi điều khiển. Đối với vi điều khiển thì địa chỉ dữ liệu thƣờng đƣợc đánh theo khối 8 bít. CPU có thể truy nhập trực tiếp vào các khu vực bộ nhớ bằng địa chỉ tham chiếu. Nếu vi xử lý có N bít địa chỉ thì nó có thể đánh đƣợc 2N địa chỉ khu vực mà CPU có thể tham chiếu tới. Các khu vực đƣợc đánh địa chỉ theo qui ƣớc bắt đầu từ 0 và tăng dần đến 2N-1. Độ rộng của bus dữ liệu thƣờng là 16, 20, 24 hoặc 32 bít. Bus dữ liệu: là các kênh truyền tải thông tin theo hai chiều giữa CPU và bộ nhớ hay các thiết bị ngoại vi vào ra. CPU điều khiển bus dữ liệu để đọc và viết dữ liệu hoặc mã lệnh thực thi. Độ rộng của bus dữ liệu xác định đƣợc lƣợng dữ liệu có thể truyền và trao đổi trên bus. Tốc độ truyền dữ liệu đƣợc tính theo đơn vị là [byte/s]. Bus điều khiển: Theo tài liệu [1], bus điều khiển đƣợc giải thích nhƣ sau: Bus điều khiển phục vụ truyền tải các thông tin dữ liệu để điều khiển hoạt động của hệ thống. Thông thƣờng các dữ liệu điều khiển bao gồm các tín hiệu chu kỳ để đồng bộ các nhịp chuyển động và hoạt động của hệ thống. Bus điều khiển thƣờng đƣợc điều khiển bởi CPU để đồng bộ hóa nhịp hoạt động và dữ liệu trao đổi trên các bus. Trong trƣờng hợp vi xử lý sử dụng dồn kênh bus dữ liệu và bus địa chỉ tức là một phần hoặc toàn bộ bus dữ liệu sẽ đƣợc sử dụng chung chia sẻ với bus địa chỉ thì cần một tín hiệu điều khiển để phân nhịp truy nhập cho phép chốt lƣu trữ thông tin địa chỉ mỗi khi bắt đầu một chu kỳ truyền. Ví dụ về bus điều khiển: Ví dụ về hoạt động của hệ thống bus địa chỉ và dữ liệu dồn kênh đƣợc chỉ ra trong hình 2.6. Đây là hoạt động điển hình trong họ vi điều khiển 8051. 18 Hình 2.6: Chu kỳ hoạt động bus dồn kênh 2.2.2. Một số nền phần cứng nhúng thông dụng Ngày nay, các chủng loại chip khả trình phát triển nhanh chóng với mật độ tích hợp cao đang có tác động đáng kể đến sự thay đổi trong việc thiết kế các nền phần cứng thiết bị xử lý và điều khiển số. Mỗi chủng loại có những đặc điểm và phạm vi ứng dụng và không ngừng phát triển để đáp ứng cho các yêu cầu công nghệ một cách tốt nhất. Có rất nhiều loại chíp khả trình có thể sử dụng cho các bài toán thiết kế hệ thống nhúng nhƣ Chip DSP (Digital Signal Processing), họ vi xử lý/vi điều khiển nhúng (Microprocessor/Microcontroller) và các Chip khả trình trƣờng (FPD-Field Programmable Device). 2.2.2.1. Vi điều khiển nhúng Ngày nay, vi điều khiển nhúng là một chủng loại rất điển hình và đƣợc dùng phổ biến. Chúng đƣợc ra đời và sử dụng theo sự phát triển của các chip xử lý ứng dụng cho máy tính. Các nhà chế tạo cung cấp các họ vi xử lý điều khiển có rất nhiều nhƣ Intel, Atmel, Motorola, Infineon. Chúng cũng có cấu trúc tƣơng tự nhƣ các chip xử lý phát triển cho PC nhƣng đơn giản hơn nhiều về công năng và tài nguyên. Chủ yếu là các chip có độ rộng bus dữ liệu là 8 bít, 16 và 32 bít. Vi điều khiển nhúng đƣợc tích hợp thêm các ngoại vi, các ngoại vi thƣờng là các khối chức năng ngoại vi thông dụng nhƣ bộ định thời gian, bộ đếm, bộ chuyển đổi A/D, giao diện song song, nối tiếp. Tùy theo mục đích ứng dụng mà mức độ tích hợp ngoại vi cũng khác nhau. Nếu thực tế các ứng dụng yêu cầu độ tích hợp cao thì sẽ sử dụng giải pháp tích hợp trên chip, nếu không thì các chip đều cung cấp giải pháp mở rộng ngoại vi đáp ứng cho số lƣợng ứng dụng rộng và mềm dẻo. Ví dụ về kiến trúc nguyên lý của vi điều khiển (VĐK) với cấu trúc Havard: 19 Hình 2.7: Kiến trúc nguyên lý của VĐK với cấu trúc Havard 2.2.2.2. Chip DSP Theo tài liệu [1], chip DSP đƣợc giải thích nhƣ sau: DSP vẫn đƣợc biết tới nhƣ một loại vi điều khiển đặc biệt với khả năng xử lý nhanh để phục vụ các bài toán yêu cầu khối lƣợng và tốc độ xử lý tính toán lớn. Với ƣu điểm nổi bật về độ rộng băng thông của bus và thanh ghi tích lũy, cho phép ALU xử lý song song với tốc độ đọc và xử lý lệnh nhanh hơn các loại vi điều khiển thông thƣờng. Chip DSP cho phép thực hiện nhiều lệnh trong một nhịp nhờ vào kiến trúc bộ nhớ Havard. Khi phải sử dụng DSP thì định dạng biểu diễn toán học sẽ là một yếu tố quan trọng để phân loại và đƣợc quan tâm. Hiện nay, chúng đƣợc phân loại theo hai kiểu là dấu phảy động và dấu phảy tĩnh. Đây cũng là yếu tố quan trọng đối với ngƣời thiết kế để lựa chọn DSP phù hơp với ứng dụng của mình. Các DSP dấu phảy tĩnh thƣờng là 16 bít hoặc 24 bít còn các DSP dấu phảy động thƣờng là 32 bít. 2.3. Kiến trúc phần mềm nhúng 2.3.1. Kiến trúc Round-Robin (RR) Kiến trúc phần mềm đơn giản nhất có thể đƣợc gọi là “round robin”. Kiến trúc Round robin không có ngắt, tổ chức phần mềm bao gồm một vòng lặp chính. Trong đó, bộ vi xử lý rất đơn giản, nó làm nhiệm vụ thăm dò từng thiết bị đính kèm theo lần lƣợt và cung cấp dịch vụ nếu có yêu cầu. Sau khi tất cả các thiết bị đã đƣợc phục vụ thì vòng lặp bắt đầu lại từ đầu. Kiến trúc phần mềm Round robin đƣợc minh họa bằng đồ thị và đoạn giả mã nhƣ hình 2.8 20 Hình 2.8: Minh họa kiến trúc RR bằng giả mã và đồ thị Các ứng dụng có thể áp dụng kiến trúc round robin nhƣ máy bán hàng tự động, máy ATM, hoặc thiết bị gia dụng nhƣ lò vi sóng. Round robin có ƣu điểm là phƣơng pháp thăm dò rất đơn giản, đủ tốt để sử dụng, chi phí phát triển thấp, chu kỳ phát triển ngắn. Tuy nhiên, kiến trúc này cũng có nhƣợc điểm là không thể xử lý những vấn đề phức tạp, rất lãng phí thời gian để kiểm tra các thiết bị kể cả khi thiết bị đó không cần phục vụ hoặc trong trƣờng hợp có quá nhiều thiết bị cần phục vụ thì phƣơng án thăm dò tỏ ra không hiệu quả, gây chậm trễ cho các thiết bị đó. 2.3.2. Kiến trúc Round-Robin với ngắt (RRI) Kiến trúc Round-Robin với ngắt (Round-Robin with Interrupts - RRI) là kiến trúc hỏi vòng có ngắt. Các tác vụ cấp bách đƣợc xử lý trong một dịch vụ thƣờng xuyên bị gián đoạn, có một bộ cờ để xử lý theo dõi trong vòng lặp chính. Nếu không có gì cấp bách xảy ra thì sau đó bộ vi xử lý tiếp tục hoạt động luân chuyển vòng. Quản lý các tác vụ quanh vòng lặp. Kiến trúc RRI có thể đƣợc minh họa bằng giả mã nhƣ hình 2.9. Lợi thế rõ ràng của RRI là thời gian đáp ứng với các tác vụ ƣu tiên cao đƣợc cải thiện. Tuy ISR luôn luôn có ƣu tiên hơn vòng lặp chính (tức vòng lặp chính sẽ luôn luôn dừng lại bất cứ điều gì nó đang làm để phục vụ ngắt), nhƣng nó vẫn còn khá đơn giản. Thời gian đáp ứng trong trƣờng hợp xấu nhất cho một tác vụ ƣu tiên thấp là tổng thời gian thực hiện đối với tất cả các mã lệnh trong vòng lặp chính cộng với tất cả các thủ tục gián đoạn dịch vụ. Hơn nữa, với sự ra đời của ngắt thì vấn đề chia sẻ dữ liệu có thể xảy ra. 21 Hình 2.9: Minh họa kiến trúc RRI bằng giả mã 2.3.3. Kiến trúc lập lịch dòng chức năng (FQS) Kiến trúc lập lịch dòng chức năng (Function-Queue Scheduling - FQS) là kiến trúc thô sơ của kiến trúc hệ điều hành mà nó đang đƣợc sử dụng cho máy tính đa năng. Tất cả các yêu cầu đƣợc đặt vào hàng đợi và mỗi một yêu cầu có một mức độ ƣu tiên nhất định. Vi xử lý sẽ tùy theo cơ chế lập lịch để phục vụ những yêu cầu nào trƣớc. FQS có rất nhiều cơ chế lập lịch ví dụ nhƣ lập lịch ƣu tiên thứ tự trƣớc sau (đến trƣớc phục vụ trƣớc), lập lịch ƣu tiên theo độ ƣu tiên (độ ƣu tiên cao hơn thì đƣợc phục vụ trƣớc), lập lịch ƣu tiên những yêu cầu đơn giản trƣớc, lập lịch giả song song (mỗi yêu cầu đƣợc phục vụ một thời gian ngắn rồi quay lại phục vụ tiếp sau khi phục vụ thiết bị khác). FQS có ƣu điểm là tất cả các yêu cầu đều đƣợc phục vụ, không có một yêu cầu nào đƣợc bỏ qua. Tuy nhiên, FQS không đánh giá đƣợc yêu cầu nào phải thực hiện bao nhiêu thời gian, tốn bao nhiêu tài nguyên. 2.3.4. Kiến trúc hệ điều hành thời gian thực (RTOS) Kiến trúc hệ điều hành thời gian thực (Real-Time Operating Systems – RTOS) có ba đặc điểm khác biệt so với các kiến trúc khác đó là: (1) Quá trình điều khiển giữa các chu trình ngắt và mã nguồn thực thi tác vụ đƣợc quản lý bởi RTOS (tức là không cần dùng biến chia sẻ). (2) RTOS quyết định lập lịch các tác vụ thay vì dùng một vòng lặp chính để quyết định xem tác vụ thực thi tiếp theo là gì hoặc ngắt tiếp theo là gì. (3) RTOS có thể tạm dừng một tác vụ đang thực thi để thực thi tác vụ khác.
- Xem thêm -