Bộ mô phỏng

Một phần của tài liệu LUẬN VĂN:CÁC KỸ THUẬT GỠ LỖI TRONG VIỆC PHÁT TRIỂN HỆ THỐNG NHÚNG VỚI NGÔN NGỮ C doc (Trang 26 - 29)

Mô phỏng là một kỹ thuật đã được sử dụng trong khoa học kỹ thuật, công nghệ, giáo dục và y tế từ lâu. Ngày nay, chúng ta có thể thấy rất nhiều sản phẩm được mô phỏng, như các trò chơi được mô phỏng trên máy tính, các lớp học ảo, các thiết bị thực hành, các phần mềm giả lập để phục vụ cho việc nghiên cứu. Đối với ngành công nghệ thông tin, việc mô phỏng các máy tính, các chương trình trên một máy tính giúp cho việc phát triển phần mềm, phần cứng ngày càng dễ dàng hơn.

Bộ mô phỏng (Simulator) hay bộ mô phỏng tập lệnh (ISS) là một phần mềm chạy trên máy chủ và cho phép chúng ta giả lập vi xử lý và bộ nhớ trên máy đích. Ta có thể

thấy rất nhiều phần mềm mô phỏng chạy trên nhiều hệ điều hành, cung cấp những tiện ích cho người dùng như là Virtual Box của Oracle, VMWare của công ty VMWare, µVision của Keil, QEMU, Crosswork và Yagarto của công ty Rowley ...

Bộ mô phỏng đã khắc phục được một số nhược điểm của kỹ thuật gỡ lỗi trên máy chủ. Sử dụng bộ mô phỏng, chúng ta phải biên dịch và liên kết, tạo ra các tệp tin thực thi chạy được trên các máy đích, sau đó nạp tệp thực thi này vào bộ mô phỏng. Ta cần phải biết chắc rằng bộ mô phỏng có thể hiểu được định dạng kết xuất của bộ liên kết/ định vị (Linker/ Locator). Chúng ta thường phải biên dịch ra các tệp tin có định dạng .hex hay .elf để nạp vào bộ mô phỏng, đây thực chất là các tệp tin dưới dạng mã máy, để máy đích có thể chạy trực tiếp được nó.

Bộ mô phỏng cũng cần hiểu được kiến trúc vi xử lý của máy đích và các tập lệnh của nó, cũng như là có thể đọc các lệnh từ bộ nhớ (được mô phỏng) và thay đổi các giá trị trong RAM (được mô phỏng) và các thanh ghi trong vi xử lý làm việc như thế nào. Thông thường, chúng ta nên sử dụng các bộ mô phỏng được xây dựng riêng cho các họ vi xử lý khác nhau, như cho họ vi xử lý của 8051, ARV, ARM...

Giao diện người dùng của các bộ mô phỏng cũng gần tương tự như giao diện của các bộ gỡ lỗi, nó cho phép chúng ta biên dịch, chạy chương trình, gỡ lỗi, thiết lập các điểm dừng, xem các trạng thái của bộ nhớ, thanh ghi. Nhiều bộ mô phỏng còn hỗ trợ ngôn ngữ macro, cho phép thiết lập các kịch bản gỡ lỗi để thực thi mã lệnh.

Bộ mô phỏng có các ưu điểm sau:

Xác định được sự đáp ứng và công suất: Mặc dù các bộ mô phỏng không chạy cùng tốc độ với hệ thống đích, nhưng hầu hết chúng thống kê thời gian thực thi các lệnh cụ thể. Ví dụ, bộ mô phỏng có thể ghi lại số lệnh vi xử lý đích đã thực hiện hay số vòng của bus máy đích đã quay. Bằng việc tính thời gian hệ thống đích thực hiện một lệnh hay thời gian bus quay được một vòng có thể tính được cụ thể thời gian thực hiện.

Kiểm thử các mã lệnh assembly: Các bộ mô phỏng sử dụng tập lệnh của hệ thống máy đích, các mã lệnh được viết bằng assembly sẽ được thực hiện một cách dễ dàng. Chúng ta thực thi các mã lệnh thông qua trình biên dịch trung gian chéo (cross – assembler), bộ liên kết/ định vị và sau đó tải chương trình vào bộ mô phỏng. Chúng ta có thể kiểm thử các mã lệnh như trên máy đích, các mã khởi động (startup code) và thường trình ngắt.

Giải quyết vấn đề tính khả chuyển: Bởi vì chúng ta dùng cùng một bộ công cụ để phát triển mã lệnh cho bộ mô phỏng và máy đích, nên chúng ta sẽ có ít sự khác biệt khi chuyển các mã lệnh từ bộ mô phỏng sang máy đích hơn là khi chuyển từ máy chủ sang máy đích.

Kiểm thử mã lệnh với các thiết bị bên trong vi xử lý: Hầu hết các bộ mô phỏng sẽ mô phỏng các thiết bị bên trong vi xử lý của hệ thống đích. Nếu phần mềm có làm việc với một bộ định thời (timer) gắn liền bên trong, thì bộ mô phỏng sẽ mô phỏng bộ định thời, và khi đếm hết vòng lặp thì bộ mô phỏng cũng sẽ thực thi một thường trình ngắt, tức là một thường trình ngắt định thời đã được gọi lên.

• Các bộ mô phỏng giúp cho các kỹ sư lập trình học tập, làm việc, nghiên cứu ngay cả khi chưa có phần cứng vẫn có thể thực thi, kiểm thử các mã lệnh. Về mặt tài chính, thì việc sử dụng các bộ mô phỏng để làm việc là tiết kiệm và hiệu quả trong rất nhiều trường hợp. Nó mở ra khả năng nghiên cứu tại nhà mà không cần những phòng thí nghiệm hiện đại, các công cụ đắt tiền, dễ hỏng hóc. Tuy nhiên bộ mô phỏng cũng có một số nhược điểm sau:

Lỗi chia sẻ dữ liệu: Lỗi này thường xảy ra khi các ngắt xảy ra ở một thời điểm không định trước. Bộ mô phỏng có thể mô phỏng các ngắt xảy ra trong quá trình kiểm thử, trừ khi chúng ta có nhiều thời gian để xem xét từng ngắt tại các thời điểm khác nhau để biết lỗi thực sự ở ngắt nào, nếu không thì việc mô phỏng và thực thi các ngắt này là liên tục nên sẽ khó bắt được lỗi.

Với các thiết bị phần cứng khác: Bộ mô phỏng sẽ mô phỏng được vi xử lý, RAM, ROM, và các thiết bị gắn bên trong vi xử lý, nhưng với các thiết bị phần cứng mở rộng khác như loa, tai nghe, bộ cảm biến,… thì bộ mô phỏng không thể làm được gì.

Bộ mô phỏng có thể làm cho các kỹ thuật kiểm thử với máy chủ ở trên trở lên khó khăn. Với kỹ thuật kiểm thử trên máy chủ, thì tại một thời điểm, chúng ta có thể thực thi nhiều tệp tin và bắt được các tệp tin kết xuất. Còn với kỹ thuật kiểm thử dùng bộ mô phỏng, thì tại thời điểm thực thi mã lệnh và mô phỏng thì chương trình chỉ có thể thực hiện được một nhiệm vụ đó, và việc truy cập vào phần mềm bằng bàn phím, hay chuột là vô ích. Để dùng được những kỹ thuật kiểm thử trên máy chủ thì bộ mô phỏng của ta cần phải đọc các tệp kịch bản vào môi trường mô phỏng và lấy kết quả

ra.

Ta có thể sử dụng các kỹ thuật trong phần 3.2 để kiểm thử cho các ca kiểm thử thông thường và sau đó dùng bộ mô phỏng để thực hiện các ca kiểm thử khác để mang lại hiệu quả kiểm thử tốt.

Một phần của tài liệu LUẬN VĂN:CÁC KỸ THUẬT GỠ LỖI TRONG VIỆC PHÁT TRIỂN HỆ THỐNG NHÚNG VỚI NGÔN NGỮ C doc (Trang 26 - 29)