luận văn kiểm thử phần mềm nhúng

61 708 2
luận văn kiểm thử phần mềm nhúng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Ngọc Hải KIỂM THỬ PHẦN MỀM NHÚNG KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng nghệ thông tin HÀ NỘI - 2010 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Ngọc Hải KIỂM THỬ PHẦN MỀM NHÚNG KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng nghệ thơng tin Cán hướng dẫn: PGS.TS Nguyễn Ngọc Bình HÀ NỘI - 2010 Lời cảm ơn Đầu tiên xin bày tỏ lòng biết ơn chân thành sâu sắc tới PGS.TS Nguyễn Ngọc Bình, người thầy định hướng đề tài tận tình hướng dẫn tơi hồn thành khóa luận Tôi xin gửi lời cảm ơn chân thành tới thầy, cô giáo khoa Công nghệ thông tin, trường Đại học Công Nghệ - Đại học Quốc Gia Hà Nội bảo, giúp đỡ suốt q trình học tập trường Tơi xin gửi lời cảm ơn chân thành tới bạn bè tôi, người cổ vũ, động viên, giúp đỡ tơi suốt q trình học tập thực khóa luận tốt nghiệp Cuối tơi xin gửi lời cảm ơn tới bố mẹ toàn thể gia đình với lịng biết ơn tình u thương sâu sắc Hà Nội, tháng năm 2010 Bùi Ngọc Hải Tóm tắt Các hệ thống nhúng ngày phát triển với ứng dụng rộng rãi nhiều lĩnh vực công nghiệp đời sống, ta bắt gặp ứng dụng hệ thống nhúng, từ thiết bị nhỏ điện thoại, máy nghe nhạc đến hệ thống phức tạp ô tô, máy móc cơng nghiệp Trong phát triển phần mềm nhúng, khâu kiểm thử có vai trị quan trọng việc đảm bảo chất lượng độ tin cậy hệ thống Các hệ thống nhúng có kiến trúc phần cứng phần mềm đa dạng, có nhiều hệ thống sử dụng vi điều khiển họ 8051 phần mềm viết cho hệ thống thường viết ngơn ngữ C Khóa luận trình bày số phương pháp kiểm thử chương trình C cho vi điều khiển 8051 Một cách phổ biến để kiểm thử phần mềm cho hệ thống nhúng nói chung cho hệ thống 8051 nói riêng, chạy phần mềm chương trình giả lập phần cứng, chương trình giả lập vi điều khiển ảo, chương trình mô trực quan hệ thống mạch bao gồm vi điều khiển thiết bị khác Một cách khác để kiểm thử chương trình cho 8051 sử dụng công cụ Unit Test – kiểm thử mức đơn vị, Unit Test giúp ta kiểm thử đảm bảo chất lượng đơn vị nhỏ chương trình Mục lục Chương Mở đầu 1.1 Đặt vấn đề 1.2 Phạm vi nghiên cứu 1.3 Cấu trúc khóa luận Chương Hệ thống nhúng phần mềm nhúng 2.1 Hệ thống nhúng 2.2 Phần mềm nhúng Chương Kiểm thử phần mềm kiểm thử phần mềm nhúng 3.1 Kiểm thử phần mềm 3.1.1 Kiểm thử phần mềm gì? 3.1.2 Kiểm thử đơn vị (unit test): 3.1.3 Integration Test – Kiểm thử tích hợp 3.1.4 System Test - Kiểm thử mức hệ thống 3.1.5 Acceptance Test - Kiểm thử chấp nhận sản phẩm 3.1.6 Regression Test - Kiểm thử hồi quy 3.2 Kiểm thử phần mềm nhúng 10 3.2.1 Tổng quan kiểm thử phần mềm nhúng 10 3.2.2 Kiểm thử phương pháp chạy phần mềm môi trường giả lập phần cứng 10 3.2.3 Kiểm thử phần mềm nhúng Unit Test 11 Chương Lập trình nhúng cho vi điều khiển 8051 ngôn ngữ C 12 4.1 Vi điều khiển 8051 12 4.2 Lập trình C cho 8051 với trình biên dịch SDCC 13 4.2.1 Ngơn ngữ C lập trình nhúng 13 4.2.2 Lập trình C cho 8051 14 4.2.3 Trình biên dịch SDCC 15 4.2.4 IDE cho lập trình 8051 với SDCC 18 4.2.5 Ví dụ lập trình C cho 8051 với SDCC MIDE-51 19 Chương Kiểm thử chương trình cho 8051 cơng cụ giả lập 21 5.1 Chương trình giả lập vi điều khiển “8051 series microcontroller simulator” 21 5.1.1 8051 series microcontroller simulator 21 5.1.2 Ví dụ kiểm thử chương trình cho 8051 chương trình giả lập 8051 series microcontroller simulator 23 5.1.3 Nhận xét 28 5.2 Chương trình mơ hệ thống mạch điện tử Proteus 29 5.2.1 Giới thiệu Proteus 29 5.2.2 Ví dụ kiểm thử chương trình nhấp nháy Led Proteus 33 5.2.3 Nhận xét 37 Chương Kiểm thử chương trình cho 8051 Unit Test, sử dụng công cụ Embedded Unit 38 6.1 Giới thiệu Embedded Unit 38 6.2 Cải tiến để sử dụng Embedded Unit cho lập trình C cho 8051 39 6.3 Ví dụ kiểm thử chương trình C cho 8051 với Embedded Unit 40 6.4 Nhận xét 44 Chương Kết luận 45 Phụ lục 46 Phụ lục A: Kiến trúc vi điều khiển 8051 46 Phụ lục B: Hướng dẫn sử dụng Embedded Unit 52 Tài liệu tham khảo 55 Chương Mở đầu 1.1 Đặt vấn đề Hệ thống nhúng đa dạng phong phú, nhiên có người biết tầm quan trọng hữu chúng giới quanh ta Từ hệ thống phức tạp hàng không vũ trụ, phịng thủ qn sự, máy móc tự động công nghiệp, đến phương tiện di chuyển thông thường máy bay, xe điện, xe hơi, trang thiết bị y tế bệnh viện, thiết bị truyền hình điện thoại di động sử dụng ngày, có diện hệ thống nhúng Cùng với đa dạng hệ thống nhúng, lĩnh vực lập trình phần mềm nhúng phát triển Trong phát triển phần mềm hoạt động kiểm thử có vai trị quan trọng, mang tính sống cịn sản phẩm, với phần mềm nhúng ngoại lệ Sự phát triển hệ thống nhúng kéo theo yêu cầu phát triển hoạt động kiểm thử phần mềm nhúng Có hệ thống nhúng đòi hỏi độ tin cậy cao, việc kiểm thử cho hệ thống yêu cầu cẩn thận so với kiểm thử phần mềm thông thường Tuy nhiên nay, hệ thống nhúng Việt Nam phát triển khiêm tốn so với giới, lĩnh vực kiểm thử cho phần mềm nhúng lại khiêm tốn Có tài liệu, báo nói hoạt động kiểm thử phần mềm nhúng khơng có nhiều cơng cụ hỗ trợ cho việc kiểm thử Việc nghiên cứu tìm hiểu phương pháp, kĩ thuật kiểm thử cho phần mềm nhúng vấn đề cần thiết nay, góp phần thúc đẩy phát triển lĩnh vực hệ thống nhúng, lĩnh vực giàu tiềm bước đầu phát triển Việt Nam 1.2 Phạm vi nghiên cứu Trong phạm vi khóa luận này, tơi nghiên cứu trình bày loại hệ thống nhúng cụ thể - hệ thống sử dụng vi điều khiển 8051 số phương pháp kiểm thử chương trình cho hệ thống Hệ thống sử dụng 8051 tơi trình bày hệ thống đơn giản, khơng sử dụng hệ điều hành nhúng, ví dụ hệ thống đèn Led nối với vi điều khiển, phần mềm viết cho hệ thống chương trình điều khiển Led.Các chương trình lập trình ngơn ngữ C, sử dụng công cụ biên dịch chạy môi trường Windows XP 32 bit Các phương pháp kiểm thử mà tơi giới thiệu khóa luận phương pháp kiểm thử chức sử dụng chương trình mô phần cứng phương pháp sử dụng Unit Test ( kiểm thử đơn vị ), hai phương pháp thực công cụ kiểm thử chạy môi trường Windows XP 32 bit Với phương pháp kiểm thử sử dụng Unit Test, giới thiệu Unit Test Framework cho chương trình C nhúng Embedded Unit, tơi có đề xuất phương pháp để kiểm thử chương trình cho vi điều khiển 8051 sử dụng công cụ Embedded Unit với trình biên khơng hỗ trợ cho 8051 GCC Đó việc tạo file thư viện “8051.h” chứa biến vi điều khiển, file dùng test, giúp cho GCC khơng báo lỗi thiếu thư viện biên dịch phép kiểm thử 1.3 Cấu trúc khóa luận Phần cịn lại khóa luận có cấu trúc sau: - Chương : giới thiệu sơ lược hệ thống nhúng phần mềm nhúng - Chương : trình bày lí thuyết kiểm thử phần mềm kiểm thử phần mềm nhúng - Chương : giới thiệu vi điều khiển 8051 lập trình C cho hệ thống 8051 Windows sử dụng trình biên dịch SDCC - Chương : phương pháp kiểm thử phần mềm nhúng sử dụng công cụ giả lập phần cứng, giới thiệu công cụ giả lập vi điều khiển 8051 phần mềm mô hệ thống mạch Proteus - Chương : phương pháp kiểm thử đơn vi ( Unit Test) cho phần mềm nhúng sử dụng Embedded Unit, giới thiệu Embedded Unit cải tiến để sử dụng cho chương trình 8051 Windows - Chương : rút kết luận từ vấn đề nghiên cứu Chương Hệ thống nhúng phần mềm nhúng 2.1 Hệ thống nhúng Hệ thống nhúng (Embedded system) thuật ngữ để hệ thống có khả tự trị nhúng vào môi trường hay hệ thống mẹ Đó hệ thống tích hợp phần cứng phần phềm phục vụ tốn chun dụng nhiều lĩnh vực cơng nghiệp, tự động hoá điều khiển, quan trắc truyền tin Đặc điểm hệ thống nhúng hoạt động ổn định có tính tự động hố cao.[5] Hệ thống nhúng thường thiết kế để thực chức chuyên dụng, thường có khả tự hành thiết kế tích hợp vào hệ thống lớn để thực chức chun biệt Khác với máy tính đa chức năng, chẳng hạn máy tính cá nhân, hệ thống nhúng thực một vài chức định, thường kèm với yêu cầu cụ thể bao gồm số thiết bị máy móc phần cứng chuyên dụng mà ta khơng tìm thấy máy tính đa nói chung [5] Vì hệ thống xây dựng cho số nhiệm vụ định nên nhà thiết kế tối ưu hóa nhằm giảm thiểu kích thước chi phí sản xuất Các hệ thống nhúng thường sản xuất hàng loạt với số lượng lớn Hệ thống nhúng đa dạng, phong phú chủng loại Đó thiết bị cầm tay nhỏ gọn đồng hồ kĩ thuật số máy chơi nhạc MP3, sản phẩm lớn đèn giao thơng, kiểm sốt nhà máy hệ thống kiểm soát máy lượng hạt nhân Xét độ phức tạp, hệ thống nhúng đơn giản với vi điều khiển phức tạp với nhiều đơn vị, thiết bị ngoại vi mạng lưới nằm gọn lớp vỏ máy lớn Các thiết bị PDA máy tính cầm tay có số đặc điểm tương tự với hệ thống nhúng hệ điều hành vi xử lý điều khiển chúng thiết bị hệ thống nhúng thật chúng thiết bị đa năng, cho phép sử dụng nhiều ứng dụng kết nối đến nhiều thiết bị ngoại vi [13] Hệ thống nhúng bao gồm thiết bị phần cứng phần mềm, hầu hết phải thỏa mãn yêu cầu hoạt động theo thời gian thực (real-time) Tùy theo tính chất yêu cầu, mức độ đáp ứng hệ thống phải nhanh (ví dụ hệ thống thắng xe điều khiển thiết bị nhà máy), chấp nhận mức độ chậm trễ tương đối (ví dụ điện thoại di động, máy lạnh, ti-vi) [13] Để dễ hình dung, ta xem ví dụ sau đây: xe trung bình có khoảng 70-80 chip vi xử lý (micro controller unit), vi xử lý đảm nhiệm nhiệm vụ, chẳng hạn đóng mở cửa, điều khiển đèn tín hiệu, đo nhiệt độ trong/ngồi xe, hiển thị giao diện người dùng , điều khiển thắng (nếu dùng hệ thống thắng điện)… Mỗi phận hệ thống nhúng, tất thiết kế tích hợp vào hệ thống chung lớn hơn, xe Một ví dụ khác gần gũi với sống ngày, điện thoại di động Các chức điều khiển hình hiển thị, máy nghe nhạc radio, cảm ứng chụp hình, kết nối với máy tính thiết bị ngoại vi, cao cấp kết nối với hệ thống định vị toàn cầu (GPS), tất hệ thống nhúng tích hợp chung vào điện thoại Các hệ thống nhúng khơng có giao diện (đối với hệ thống đơn nhiệm) có đầy đủ giao diện giao tiếp với người dùng tương tự hệ điều hành thiết bị để bàn Đối với hệ thống đơn giản, thiết bị nhúng sử dụng nút bấm, đèn LED hiển thị chữ cỡ nhỏ hiển thị số, thường kèm với hệ thống menu đơn giản Còn hệ thống phức tạp hơn, hình đồ họa, cảm ứng có nút bấm lề hình cho phép thực thao tác phức tạp mà tối thiểu hóa khoảng không gian cần sử dụng; ý nghĩa nút bấm thay đổi theo hình lựa chọn Các hệ thống nhúng thường có hình với nút bấm dạng cần điểu khiển (joystick button) Sự phát triển mạnh mẽ mạng toàn cầu mang đến cho nhà thiết kế hệ nhúng lựa chọn sử dụng giao diện web thơng qua việc kết nối mạng Điều giúp tránh chi phí cho hình phức tạp đồng thời cung cấp khả hiển thị nhập liệu phức tạp cần đến, thơng qua máy tính khác Điều hữu dụng thiết bị điều khiển từ xa, cài đặt vĩnh viễn Ví dụ, router thiết bị ứng dụng tiện ích Độ tin cậy hệ thống nhúng Các hệ thống nhúng thường nằm cỗ máy kỳ vọng chạy hàng năm trời liên tục mà không bị lỗi khơi phục hệ thống gặp lỗi Vì thế, } file cài đặt hàm getPin3_0( ) getPort1( ), hàm getPin3_0( ) có tác dụng trả giá trị chân P3.0 hàm getPort1( ) trả giá trị ghi cổng P1 Ta viết chương trình kiểm thử cho hàm cách tạo file functionTest.c sau : #include #include "8051.h" #include "function.h" static void setUp(void) { } static void tearDown(void) { } // static void testGetPin3_0(void) { P3_0=1; TEST_ASSERT_EQUAL_INT(1, getPin3_0( )); } static void testGetPort1(void) { P1=0x41; // giá trị 65 dạng hexa TEST_ASSERT_EQUAL_INT(65, getPort1( )); } // -TestRef FunctionTest_tests(void) 41 { EMB_UNIT_TESTFIXTURES(fixtures) { new_TestFixture("testGetPin3_0",testGetPin3_0), new_TestFixture("testGetPort1",testGetPort1), }; EMB_UNIT_TESTCALLER(FunctionTest,"FunctionTest",setUp, tearDown,fixtures); return (TestRef)&FunctionTest; } // -int main (int argc, const char* argv[]) { TestRunner_start(); TestRunner_runTest(FunctionTest_tests()); TestRunner_end(); return 0; } Ta phải khai báo #include để sử dụng Embedded Unit Framework #include "8051.h" để sử dụng biến định nghĩa file 8051.h #include "function.h" để kiểm thử hàm khai báo Giống nhiều Unit Test Framework khác, ta bắt buộc phải khai báo phương thức setup( ) teardown( ) để làm thủ tục bắt đầu chạy test kết thúc test, cài đặt phương thức rỗng, khơng làm phương thức testGetPin3_0( ) testGetPort1( ) phương thức test mà ta dùng để test hàm function.h FunctionTest_tests(void) hàm tổ chức test, giống test suite ( kiểm thử cơng cụ unit test khác ), hàm có kiểu trả TestRef, kiểu trỏ trỏ đến kiểu Test Embedded Unit 42 Cuối hàm main, hàm sử dụng macro định nghĩa Embedded Unit để thực thi test khai báo Các file ta để thư mục, thư mục chứa file 8051.h, chứa thư mục Embedded Unit embUnit lib đề cập phần Ta tạo makefile sau: CC = gcc CFLAGS = -O INCLUDES = LIBS = lib RM = rm TARGET = FunctionTest OBJS = functionTest.o function.o all: $(TARGET) $(TARGET): $(OBJS) $(CC) -o $@ $(OBJS) -L$(LIBS) -lembUnit c.o: $(CC) $(CFLAGS) -I$(INCLUDES) -c $< clean: -$(RM) $(TARGET) $(OBJS) PHONY: clean all Test Case trường hợp là: - testGetPin3_0 : Kiểm tra chức hàm getPin3_0( ) Dữ liệu vào : P3.0 =1 Kết mong đợi : getPin3_0( ) =1 - testGetPort1: Kiểm tra chức hàm getPort1( ) Dữ liệu vào : P1=0x41 Kết mong đợi : getPort1( )=65 43 Tiến hành test: Chạy makefile cách gõ lệnh make mơi trường dịng lệnh Command Prompt (cmd), file thực thi FunctionTest.exe, chạy file này, thơng báo cho ta kết thực thi phép kiểm thử sau : OK ( tests) Kết có nghĩa phép kiểm thử ta chạy Ta thử quan sát phép kiểm thử chạy sai cách sửa lại hàm testGetPort1( ) thành sau : static void testGetPort1(void) { P1=0x41; TEST_ASSERT_EQUAL_INT(66, getPort1( )); // sửa 65 thành 66 } Sau chạy lại makefile chạy file thực thi FunctionTest.exe, ta nhận kết sau: FunctionTest.testGetPort1 (functionTest.c 25) exp 66 was 65 run failures Kết cho thấy phép kiểm thử hàm testGetPort1( ) chạy sai, cụ thể dòng 25 file functionTest.c, kết mong đợi 66 kết nhận 65 Thông báo lỗi ngắn gọn lại chi tiết, ta thấy rõ lỗi xảy đâu 6.4 Nhận xét Trên ví dụ nhỏ kiểm thử chương trình cho vi điều khiển 8051 sử dụng công cụ Embedded Unit file 8051.h, việc tạo file 8051.h để chạy Embedded Unit đơn giản mà hiệu quả, giúp ta thực unit test cho vi điều khiển hiển thị kết test máy tính mình, mà sử dụng trình biên dịch khơng dành cho vi điều khiển 44 Chương Kết luận Trong q trình thực khóa luận này, tơi tìm hiểu lĩnh vực lập trình hệ thống nhúng cho vi điều khiển 8051 hai phương pháp kiểm thử chương trình cho 8051 Phương pháp kiểm thử sử dụng chương trình giả lập để mơ hệ thống giúp ta có nhìn nhận trực quan chương trình mình, khơng hoàn toàn giống chạy thiết bị thật ta hình dung chương trình có mong muốn hay không Kiểm thử đơn vị sử dụng Unit Test Framework giúp cho ta sớm phát lỗi lập trình đơn vị chương trình nhỏ Hai phương pháp kiểm thử khác hẳn giúp ta kiểm tra chương trình mình, giúp ta phát lỗi mà không cần phải chạy thử thiết bị Tôi thực phương pháp cải tiến để kiểm thử chương trình cho 8051 với cơng cụ Embedded Unit sử dụng trình biên dịch GCC, trình biên dịch không dành cho vi điều khiển 8051 Bằng cách tạo file “8051.h” chứa biến đặc biệt 8051 để dùng test, giúp cho trình biên dịch GCC biên dịch phép kiểm thử cho 8051 mà khơng báo lỗi Ta dùng file “8051.h” để kiểm thử chương trình cho tất loại vi điều khiển họ 8051 Ta áp dụng cách để kiểm thử cho nhiều họ vi điều khiển khác cách tạo file h để miêu tả cho loại vi điều khiển Ngồi ra, tơi hiểu thêm tầm quan trọng kiểm thử phần mềm phát triển phần mềm, đặc biệt phần mềm nhúng Ngày nay, phần mềm nhúng hệ thống nhúng dần trở thành ngành phát triển mạnh mẽ lĩnh vực công nghệ thông tin ,với ứng dụng rộng rãi cơng nghiệp đời sống Vì kiểm thử phần mềm nhúng trở nên quan trọng 45 Phụ lục Phụ lục A: Kiến trúc vi điều khiển 8051 Để lập trình C cho hệ thống 8051 không dùng hệ điều hành, ta cần phải nắm cấu trúc phần cứng vi điều khiển chương trình ta làm việc trực tiếp phần cứng Vi điều khiển 8051 bao gồm xử lý (Control Unit) bên , nhớ RAM ghi, khối điều khiển số học điều khiển nhớ Ngồi ra, cịn có tạo xung nhịp, kênh truyền nối tiếp song song, điều khiển ngắt cổng vào [1] Sơ đồ chân 8051 Sơ đồ chân hình ảnh mô vi điều khiển, giống vẽ dể người ta hình dung cách trực quan vi điều khiển 8051 có 40 chân, cổng vào (P0,P1, P2, P3), cổng gồm chân (tương ứng với 8bit byte), có chức nhận xuất liệu Riêng cổng P3 cổng đặc biệt, thêm chức khác nhận ngắt, nhận truyền liệu nối tiếp [1] Mỗi chân vi điều khiển bit, gồm mức trạng thái “cao thấp” chân loại tạo nên cổng (8 bit) VD : cổng P1 bao gồm chân từ P1.0 đến P1.7 cổng P0 bao gồm chân từ P0.0 đến P0.7 46 Hình Sơ đồ chân 8051 [11] - Từ chân 32->39: Cổng vào P0, tương ứng với chân P0.0 > P0.7 (8bit) - Từ chân 1->8: Cổng vào P1 - Từ chân 21 -> 28: Cổng vào P2 - Từ chân 10->17: Cổng vào P3 Riêng cổng P3, bit có thêm chức : - P3.0 - RxD : chân nhận liệu nối tiếp giao tiếp RS232(Cổng COM ) - P3.1 - TxD : phần truyền liệu nối tiếp giao tiếp RS232 - P3.2 - INTO : interrupt , ngắt - P3.3 - INT1: interrupt 1, ngắt - P3.4 - T0 : Timer0, đầu vào định thời - P3.5 - T1 : Timer1, đầu vào định thời - P3.6 - WR: Write, điều khiển ghi liệu 47 - P3.7 - RD: Read , điều khiển đọc liệu - Chân Vcc(40) chân GND(20): Cấp nguồn cho vi điều khiển Chân 40 bạn nối với +5V chân 20 nối với mass (nối đất) - Chân 18 chân 19 (XTAL XTAL 1): Nối với dao động thạch anh (crystal) nhằm tạo xung nhịp cho VĐK Hai chân chân bạn nối với đầu thạch anh Ngoài ra, chân, bạn nối với tụ 33pF xuống mass để bù nhiệt ổn định hoạt động cho vi điều khiển - Chân (RST): Dùng để Reset VĐK Khi chân đưa lên mức áp cao khoảng thời gian từ chu kỳ máy trở lên VĐK reset đưa tình trạng lúc ban đầu Chân bạn nối với điện trở 8,2K, nối với nút ấn đưa lên nguồn +5V Khi nhấn nút, chân số đưa lên mức áp cao reset cho VĐK - Chân PSEN: Bạn nối lên +5V để thị sử dụng chương trình từ ROM - Chân 30 (ALE : Adress Latch Enable) tín hiệu điều khiển xuất 8051, cho phép phân kênh bus địa bus liệu cổng P0 - Chân 31 (EA : Eternal Acess) cho phép chọn nhớ ROM Đối với 8051 : EA = 5V : Chọn ROM nội EA = 0V : Chọn ROM ngoại Thanh ghi: Mỗi ghi ô nhớ bit Vi điều khiển cung cấp cho ghi mặc định từ R0 đến R7 Có ghi có chức đặc biệt bit đảm nhận chức khác nhau, bit có tên riêng Vì thay đổi mức trạng thái bit thay phải tác động lên ghi Điều giúp cho việc xử lý tín hiệu trở nên dễ dàng Thao tác lập trình trở nên đơn giản [1] Dữ liệu ghi số từ 00H->FFH (theo hệ hexa) hay từ 00000000B đến 11111111B( theo hệ nhị phân) Như bạn thấy số hệ nhị phân có chữ số tượng trưng cho bit ghi Mỗi bit có trạng thái ứng với số 0-mức thấp 1-mức cao Giá trị hexa chẳng qua cách viết gọn người quen với cơng việc lập trình Chúng ta chuyển từ nhị phân sang hexa cách dễ dàng nhờ máy tính 48 Vì viết hexa lại dễ viết nhị phân lập trình vi điều khiển liệu nạp cho ghi đặc biệt cố định ứng với chức khác nhau.Vì quen bạn viết hexa nhanh gọn Chúng ta sử dụng số thập phân Ngồi ghi mặc định, cịn có số ghi đặc biệt (SFR) khác đề cập phần “bit địa chỉ” 8051 có 21 ghi chức đặc biệt SFR chiếm phần Ram nội từ địa 80H đến FFH Các ghi đặc biệt mang chức khác chúng cấu tạo từ bit, lấy liệu trực tiếp từ địa bit thông qua tên gọi của chúng Một số ghi đặc biệt là: - Các ghi định thời: TMOD ghi chọn chế độ định thời TCON (định địa bit) ghi điều khiển chế độ định thời TL0 - TH0 ghi quy ước byte thấp byte cao định thời TL1 - TH1 ghi quy ước byte thấp byte cao định thời - Thanh ghi (thanh ghi A): Thanh ghi tính tốn vi điều khiển 8051 ACC (Accumulator) Là ghi đặc biệt 8051 dùng để thực phép tốn CPU, thường kí hiệu A - Thanh ghi phụ (thanh ghi B): Thanh ghi tính tốn phụ vi điều khiển 8051 B Thanh ghi B địa F0H dùng chung với chứa A phép toán nhân, chia Thanh ghi B xử lý ghi nháp Các bit định địa ghi B có địa từ F0H đến F7H - Thanh ghi trạng thái chương trình (PSW) : Thanh ghi trạng thái chương trình PSW ghi mơ tả tồn trạng thái chương trình hoạt động hệ thống - Thanh ghi ngăn xếp (Stack Pointer) : 49 Con trỏ stack SP (stack pointer) ghi bit địa 81H SP chứa địa liệu đỉnh stack Các lệnh liên quan đến satck bao gồm lệnh cất liệu vào stack lệnh lấy liệu khỏi stack Việc cất vào stack làm tăng SP trước ghi liệu việc lấy liệu khỏi stack giảm SP Vùng stack 8051 giữ RAM nội giới hạn đến địa truy xuất kiểu định địa gián tiếp Các lệnh PUSH POP cất liệu vào stack lấy liệu từ stack, lệnh gọi chương trình (ACALL, LCALL) lệnh trở (RET, RETI) cất phục hồi nội dung đếm chương trình PC (Program counter) - Con trỏ liệu DPTR : Con trỏ liệu DPTR (data pointer) dùng để truy xuất nhớ chương trình ngồi nhớ liệu DPTR ghi 16 bit có địa 82H (DPL, byte thấp) 83H (DPH, byte cao) - Thanh ghi cổng P0-P3 : Các cổng P0 đến P3 ghi xuất nhập.v.v - Thanh ghi đệm truyền thông nối tiếp SBUF (Serial Data Buffer) : Bộ đệm truyền thông chia thành hai đệm, đệm truyền liệu đệm nhận liệu Khi liệu chuyển vào ghi SBUF, liệu chuyển vào đệm truyền liệu lưu giữ trình truyền liệu qua truyền thơng nối tiếp kết thúc Khi thực việc chuyển liệu từ SBUF ngoài, liệu lấy từ đệm nhận liệu truyền thông nối tiếp - Các ghi điều khiển : Các ghi điều khiển đặc biệt IP, IE, TMOD, TCON, SCON PCON ghi điều khiển ghi nhận trạng thái hệ thống ngắt, đếm/định thời, truyền thông nối tiếp Ngắt ( Interrupt ) Ngắt kiện bên bên làm ngắt vi điều khiển để báo cho biết thiết bị cần dịch vụ Mỗi có thiết bị cần đến dịch vụ bao cho vi điều khiển cách gửi tín hiệu ngắt Khi nhận tín hiệu ngắt vi điều khiển ngắt tất thực để chuyển sang phục 50 vụ thiết bị Chương trình với ngắt gọi trình dịch vụ ngắt ISR (Interrupt Service Routine) hay cịn gọi trình quản lý ngắt (Interrupt handler) Đối với ngắt phải có trình phục vụ ngắt ISR hay trình quản lý ngắt Khi ngắt gọi vi điều khiển chạy trình phục vụ ngắt, sau vi điều khiển quay trở lại cơng việc làm trước có ngắt Đối với ngắt có vị trí cố định nhớ để giữ địa ISR Nhóm vị trí nhớ dành riêng để gửi địa ISR gọi bảng véc tơ ngắt Bảng Bảng véc tơ ngắt 8051 Ngắt Địa ROM Cờ Bật lại nguồn (RESET) 0000 RST Ngắt phần cứng (INT0) 0003 IE0 Ngắt Timer0 (TF0) 000B TF0 Ngắt phần cứng (INT1) 0013 IE1 Ngắt Timer1 (TF1) 001B TF1 Ngắt COM nối tiếp (RI TI) 0023 RI TI Tổ chức nhớ Các vi điều khiển thuộc họ 8051 tổ chức thành khơng gian chương trình liệu Kiến trúc vi xử lý bit 8051 cho phép truy nhập tính tốn nhanh không gian liệu nhờ việc phân chia khơng gian nhớ chương trình liệu Tuy nhiên nhớ truy nhập hệ thống 16 bit địa thực nhờ ghi trỏ Bộ nhớ chương trình (ROM, EPROM) nhớ đọc, mở rộng tối đa 64Kbyte Vói họ vi điều khiển 8051, nhớ chương trình tích hợp sẵn chip có kích thước nhỏ 4kByte Với vi điều khiển khơng tích hợp sẵn nhớ chương 51 trình chip, buộc phải thiết kế nhớ chương trình bên ngồi Ví dụ sử dụng EPROM: 2764 (64Kbyte), chân PSEN phải mức cao (5V) Hình Cấu trúc vi điều khiển 8051 Bộ nhớ liệu (RAM) tồn độc lập so với nhớ chương trình Họ vi điều khiển 8051 có nhớ liệu tích hợp chip nhỏ 128byte mở rộng với nhớ liệu ngồi lên tới 64kByte Với vi điều khiển khơng tích hợp ROM chip có RAM chip 128byte Khi sử dụng RAM ngoài, CPU đọc ghi liệu nhờ tín hiệu chân RD WR Khi sử dụng nhớ chương trình nhớ liệu bên ngồi buộc phải kết hợp chân RD PSEN cổng logic AND để phân biệt tín hiệu truy xuất liệu ROM hay RAM ngoài[1] Phụ lục B: Hướng dẫn sử dụng Embedded Unit Sau tải từ http://embunit.sourceforge.net/ , ta giải nén Embedded Unit, thư mục embunit có cấu trúc sau [7] : 52 Hình 16 thư mục mã nguồn Embedded Unit Ta tạo thư mục có tên lib thư mục gốc, sau ta vào thư mục “embunit/embUnit” ( thư mục embUnit bên thư mục gốc), chạy makefile đây, có file thư viện libembunit.a tạo thư mục lib vừa tạo, thư viện sử dụng để chạy phép kiểm thử Thư mục samples chứa chương trình test ví dụ tạo sẵn, thư mục Tests chứa chương trình ví dụ để test số file thư mục embUnit Để tạo phép kiểm thử chạy chúng, ta cần sử dụng thư mục embUnit thư mục lib, tạm thời ta không cần quan tâm đến thư mục textui thư mục tools, thư mục chứa số tiện ích nâng cao sử dụng Embedded Unit Một số hàm assert dùng Embedded Unit : Bảng Các hàm assert Embedded Unit Assertion Ghi xác nhận xâu kí tự thực xâu TEST_ASSERT_EQUAL_STRING(expected,actual) mong đợi tương đương xác nhận số nguyên thực tế số TEST_ASSERT_EQUAL_INT(expected,actual) nguyên mong đợi tương đương TEST_ASSERT_NULL(pointer) xác nhận trỏ có giá trị NULL TEST_ASSERT_MESSAGE(condition, message) xác nhận điều kiện (khác 0) TEST_ASSERT(condition) xác nhận điều kiện (khác 0) Thông báo xác nhận (assertion) bị TEST_FAIL(message) lỗi, khơng có test thực 53 Trong thư mục samples chứa ví dụ viết sẵn kiểm thử sử dụng Embedded Unit, ta vào thư mục chạy makefile, file thực thi tạo ra, chạy file này, hiển thị kết phép kiểm thử ví dụ Cách viết test đơn giản, ta xem file mã nguồn khơng có khó khăn để hiểu chúng 54 Tài liệu tham khảo [1] DKS Group, giáo trình 8051 bản, nguồn http://www.ebook.edu.vn [2] http://my.opera.com/kids196870 , mô 8051 Proteus [3] Phạm Quốc Hiệp, hướng dẫn Proteus, nguồn http://www.ebook.edu.vn [4] http://bit.kuas.edu.tw/~8051/ , 8051 Development tools [5] http://en.wikipedia.org/wiki/Embedded_system [6] http://en.wikipedia.org/wiki/Software_testing [7] http://embunit.sourceforge.net/ [8] http://mcu-programming.blogspot.com/2006/09/installing-mide-51-and-sdcc-andfor.html [9] http://sdcc.sourceforge.net/doc/sdccman.html/ [10] http://www.dontronics.com/8051sim.html [11] Bashir Oyetunji, Complete 8051 Guide, University of Saskatchewan, IEEE SPARC 2006-07 [12] Bar t Broekman and Edwin Notenboom, Testing Embedded Software, Website: www.it-minds.com, www.aw.professional.com, First Published in Great Britain in 2003, từ trang 21 đến trang 26 [13] Edward A Lee, Embedded Software, November 1, 2001 [14] Jakob Engblom, Guillaume Girard, Bengt Werner, Testing Embedded Software using Simulated Hardware, Virtutech AB, Norrtullsgatan 15, 11327 Stockholm, Sweden 55 ... biết làm chủ ngôn ngữ Chương Kiểm thử phần mềm kiểm thử phần mềm nhúng 3.1 Kiểm thử phần mềm 3.1.1 Kiểm thử phần mềm gì? Kiểm thử phần mềm hoạt động khảo sát sản phần mềm nhằm cung cấp cho người... khóa luận Chương Hệ thống nhúng phần mềm nhúng 2.1 Hệ thống nhúng 2.2 Phần mềm nhúng Chương Kiểm thử phần mềm kiểm thử phần mềm nhúng 3.1 Kiểm thử. .. kiểm thử 1.3 Cấu trúc khóa luận Phần cịn lại khóa luận có cấu trúc sau: - Chương : giới thiệu sơ lược hệ thống nhúng phần mềm nhúng - Chương : trình bày lí thuyết kiểm thử phần mềm kiểm thử phần

Ngày đăng: 17/02/2014, 22:57

Từ khóa liên quan

Mục lục

  • 3.2. Kiểm thử phần mềm nhúng

Tài liệu cùng người dùng

Tài liệu liên quan