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

65 836 0
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

Đ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Ệ Ngô Thị Nga 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 KHĨA 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Ệ Ngơ Thị Nga 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 KHĨA 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: TS Đặng Văn Hưng Cán đồng hướng dẫn: ThS Vũ Quang Dũng HÀ NỘI - 2010 LỜI CẢM ƠN Em xin chân thành cảm ơn Bộ môn Công nghệ phần mềm, Khoa Công nghệ thông tin, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội tạo điều kiện thuận lợi cho em trình học tập, rèn luyện thực đề tài khóa luận tốt nghiệp Em xin gửi lời cảm ơn chân thành đến tất thầy trường giúp đỡ, dìu dắt em từ ngày nhập trường Em xin gửi lời cảm ơn sâu sắc đến TS Đặng Văn Hưng, TS Trần Thị Minh Châu, ThS Vũ Quang Dũng, thầy cho em định hướng, tận tình bảo, hướng dẫn giúp đỡ em trình tìm hiểu hệ thống nhúng, kiến thức cần thiết khác để em hồn thành khóa luận Em xin gửi lời cảm ơn, tình cảm thương u tới gia đình, người thân Những người ln bên em, động viên em tinh thần vật chất thời gian qua Trong trình thực khóa luận, em nhận nhiều chia sẻ, giúp đỡ, động viên thành viên lớp Công nghệ phần mềm K51, thành viên diễn đàn sinh viên Đại học Công nghệ Tôi xin gửi tới bạn biết ơn sâu sắc Đề tài “Các kỹ thuật gỡ lỗi việc phát triển hệ thống nhúng với ngôn ngữ C ” đề tài khó, lại hồn thành quỹ thời gian hạn hẹp nên khó tránh khỏi khiếm khuyết Em mong nhận góp ý chân thành từ thầy cô giáo bạn để đề tài mở rộng nghiên cứu kỹ hơn, đưa vào thực tiễn ngành công nghệ thông tin Hà Nội, ngày 15 tháng 05 năm 2010 Sinh viên Ngơ Thị Nga i TĨM TẮT KHĨA LUẬN Khóa luận tập trung trình bày tổng quan hệ thống nhúng, định nghĩa, đặc trưng hệ thống, khó khăn việc tìm hiểu hệ thống nhúng Sau đó, khóa luận đưa kỹ thuật gỡ lỗi thường áp dụng hệ thống nhúng, bao gồm kỹ thuật gỡ lỗi dựa công cụ phần mềm công cụ phần cứng Từ đó, khóa luận lựa chọn trình bày cơng cụ gỡ lỗi µVision cơng ty Keil ARM, công cụ mạnh gỡ lỗi theo kỹ thuật mô – kỹ thuật kỹ sư lập trình áp dụng nhiều thực tế Để minh họa cho việc áp dụng kỹ thuật gỡ lỗi sử dụng cơng cụ gỡ lỗi, khóa luận xây dựng chương trình phần mềm ứng dụng nhỏ Đèn led nhấp nháy Hello World – truyền chuỗi ký tự cổng nối tiếp Khóa luận áp dụng kỹ thuật công cụ gỡ lỗi hai chương trình ii MỤC LỤC CHƯƠNG 1: MỞ ĐẦU 1.1 Đặt vấn đề 1.2 Đề tài, đối tượng nghiên cứu phương pháp nghiên cứu 1.3 Mục tiêu khóa luận 1.4 Cấu trúc khóa luận CHƯƠNG 2: TỔNG QUAN 2.1 Hệ thống nhúng 2.1.1 Hệ thống nhúng gì? 2.1.2 Các thiết bị phần cứng thông thường 2.1.3 Đặc trưng hệ thống nhúng 2.1.4 Ví dụ hệ thống nhúng 2.2 Sự lựa chọn ngôn ngữ lập trình cho hệ thống nhúng CHƯƠNG 3: CÁC KỸ THUẬT GỠ LỖI 10 3.1 Gỡ lỗi 10 3.1.1 Gỡ lỗi trình phát triển hệ thống nhúng 10 3.1.2 Định nghĩa gỡ lỗi 11 3.1.3 Tầm quan trọng việc gỡ lỗi 12 3.1.4 Mục đích q trình gỡ lỗi 12 3.2 Kiểm thử máy chủ 13 3.2.1 Kỹ thuật 13 3.2.2 Gọi thường trình ngắt .15 3.2.3 Gọi thường trình ngắt định thời 15 3.2.4 Các tệp kịch tệp kết xuất 15 3.2.5 Những phản đối, hạn chế nhược điểm 16 3.3 Bộ mô .17 3.4 Sử dụng macro assert 20 3.5 Sử dụng công cụ phịng thí nghiệm 21 3.5.1 Máy sóng 22 3.5.2 Bộ phân tích logic (Logic Analyzer) 24 3.5.2.1 Bộ phân tích logic theo chế độ thời gian .26 3.5.2.2 Bộ phân tích logic theo chế độ trạng thái 26 3.5.3 Bộ mô mạch .28 CHƯƠNG 4: CÔNG CỤ GỠ LỖI 31 4.1 Lý chọn họ vi xử lý ARM 31 4.2 Giới thiệu cơng cụ µVision 32 4.3 Các chức cơng cụ µVision 33 4.3.1 Các chức µVision IDE 33 4.3.2 Các chức µVision Debugger 35 4.4 Ưu điểm µVision 37 4.4.1 Ưu điểm µVision IDE 37 4.4.2 Ưu điểm µVision Simulator 38 iii 4.5 Một số hạn chế µVision phiên dùng thử 38 4.6 Cài đặt 39 CHƯƠNG 5: ỨNG DỤNG CƠNG CỤ µVISION VÀO VIỆC GỠ LỖI .41 5.1 Vi điều khiển LPC2148 41 5.2 Chương trình “Đèn led nhấp nháy” 41 5.3 Chương trình Hello world 43 5.4 Nhận xét .45 CHƯƠNG 6: KẾT LUẬN .47 TÀI LIỆU THAM KHẢO .49 PHỤ LỤC: CÁC THÔNG SỐ KỸ THUẬT CỦA VI ĐIỀU KHIỂN LPC2148 50 iv DANH MỤC HÌNH ẢNH Hinh 2.1 Hệ thống nhúng thơng thường Hình 3.1 Quá trình phát triển phần mềm nhúng Hình 3.2 Hệ thống kiểm thử Hình 3.3 Đồ thị máy sóng Hình 3.4 Máy sóng Hình 3.5 Bộ phân tích logic Hình 3.6 Chế độ thời gian phân tích logic Hình 3.7 Chế độ trạng thái phân tích logic Hình 4.1 Mẫu đăng ký sử dụng phần mềm Keil Hình 4.2 Giao diện IDE Hình 4.3 Giao diện Debugger Hình 5.1 Kết chạy chương trình Led Hình 5.2 Kết chạy chương trình Hello world DANH MỤC BẢNG BIỂU Bảng 2.1 Họ vi xử lý ARM Bảng 3.1 Hàm NDEBUG Bảng 4.1 Các chức MicroVision IDE Bảng 4.2 Các chức MicroVision Debugger Bảng 5.1 Chương trình Led.c Bảng 5.2 Chương trình Hello.c v DANH SÁCH CÁC THUẬT NGỮ VÀ KHÁI NIỆM Thuật ngữ Khái niệm AGSI Advanced Simulation Interface – Giao diện mô nâng cao ARM Advanced RISC Machine – Máy có lệnh RISC mở rộng AVR Đây cấu trúc RISC – bit công ty Atmel Big - Endian Bộ nhớ lưu ký tự quan trọng bit địa thấp Cross–compiler Biên dịch chéo Debugger Bộ gỡ lỗi DWARF Đây định dạng tập tin gỡ lỗi dùng nhiều trình biên dịch ELF Executable and Linkable Format hay Extensible Linking Format – Tệp tin lưu dạng thực thi liên kết Ground Điện áp 0, tình trạng nối đất ICE In – circuit Emulator – Bộ mô mạch IDE Intergrated Development Environment – Mơi trường phát triển tích hợp ISS Instruction Set Simulator – Bộ mô tập lệnh LED Light Emitting Diode – Đèn hai cực quang phát xạ Linker/ Locator Bộ liên kết/ Định vị Little - endian Bộ nhớ lưu ký tự quan trọng bit địa cao MIPS Million Intruction Per Second – Số triệu dòng lệnh thực giây, Overlay memory Bộ nhớ nạp chồng RAM Random Access Memory – Bộ nhớ truy cập ngẫu nhiên RE Read Enable signal – Tín hiệu cho phép đọc từ ROM RISC Reduced Instruction Set Computing – Máy tính dùng tập lệnh rút gọn ROM Read Only Memory – Bộ nhớ đọc vi Thuật ngữ RTOS Khái niệm Real Time Operating System – Hệ điều hành thời gian thực Symbolic Định dạng kết xuất ký hiệu Output Format VCC Voltage Connected to Collector – Điệp áp kết nối gom – VCC thường đại diện cho điện áp mức cao (High) vii CHƯƠNG 1: MỞ ĐẦU 1.1 Đặt vấn đề Ngày nay, nhìn thấy thiết bị nhúng khắp nơi xung quanh ta từ vật dụng đơn giản đồng hồ điện tử, lị vi sóng, tủ lạnh, máy điện thoại di dộng, máy in, máy ảnh kỹ thuật số đến hệ thống lớn hệ thống điều khiển dây chuyền sản xuất công nghiệp, điều khiển hoạt động lò phản ứng hạt nhân Chúng ta khó mà tìm thiết bị điện tử mà bên khơng có vài vi xử lý, vi điều khiển Đặc biệt họ vi xử lý ARM ứng dụng nhiều thiết bị nhúng Các hệ thống nhúng ngày phát triển, phần mềm để điều khiển cho thiết bị ngày đa dạng Vì vậy, nhà sản xuất cần đảm bảo cho thiết bị đến tay người dùng với độ ổn định, hiệu lỗi Quá trình gỡ lỗi đảm bảo cho sản phẩm có chất lượng tốt Hiện nay, có nhiều công cụ gỡ lỗi cho hệ thống nhúng, kỹ sư lập trình cần phải chọn cho công cụ gỡ lỗi phù hợp với thiết bị để đạt hiệu gỡ lỗi cao 1.2 Đề tài, đối tượng nghiên cứu phương pháp nghiên cứu Đề tài khóa luận “Các kỹ thuật gỡ lỗi việc phát triển hệ thống nhúng với ngơn ngữ C” Khóa luận mong muốn cung cấp cho kỹ sư lập trình phần mềm nhúng nhìn tổng quát hệ thống, kỹ thuật gỡ lỗi, công cụ gỡ lỗi Đối tượng nghiên cứu đề tài vi điều khiển LPC2148 công ty Philips Đây vi điều khiển thiết kế dựa cấu trúc vi xử lý ARM sử dụng rộng rãi nhiều thiết bị, sản phẩm Khóa luận tập trung tìm hiểu lý thuyết hệ thống nhúng, kỹ thuật gỡ lỗi, sau áp dụng kiến thức vào thực việc gỡ lỗi cho phần mềm nhúng Khóa luận tập trung nghiên cứu kỹ thuật gỡ lỗi phương pháp mơ Phương pháp có ưu điểm phổ biến, có nhiều cơng cụ, dễ sử dụng, hỗ trợ lớn mặt kiến thức chuyên môn từ nhà sản xuất cộng đồng người sử dụng, áp dụng phương pháp mơ phần cứng phát triển, hay phần cứng khơng có sẵn void delay(unsigned long int); /* Ham main co nhiem vu thuc thi cac chuong trinh chinh*/ int main() { IODIR0 = 0x00000055; // Dat GPIO pin 0, 2, 4, = Output IOSET0 = 0x00000055; // Set GPIO-1[24] Output Pin(OFF LED) while(1) { IOCLR0 = 0x00000055; delay(600000); // Xoa Output GPIO1[24] Pin (ON LED) // Delay IOSET0 = 0x00000055; // Set Output GPIO1[24] Pin (OFF LED) delay(600000); // Delay } } /* Ham tre voi khoang thoi gian cho truoc time*/ void delay(unsigned long time) { while(time > 0) { time ; } } Ý nghĩa giá trị, phép gán, hàm: • IODIR0: bật chân cắm 0, 2, 4, cổng Port 0, thiết lập trạng thái chân cắm trạng thái xuất (giá trị nhị phân chân cắm – chân cắm trạng thái xuất) • IOSET0: đưa chân cắm tương ứng bit = ghi lên mức cao thiết lập trạng thái xuất • IOCLR0: đưa chân cắm tương ứng bit = ghi xuống mức thấp thiết lập trạng thái xuất • Hàm delay: hàm làm trễ thời gian lần nhấp nháy led với khoảng thời gian cho trước 42 • Giá trị: 0x00000055 giá trị theo số 16, tương đương với giá trị 00000000000000000000000101010101 giá trị bit 0, 2, 4, Thực Translate (nhấn Ctrl + F7) để biên dịch chương trình, kiểm tra xem chương trình có lỗi hay khơng? Sau Build (nhấn F7) để chương trình biên dịch lại, kết nối tạo tập tin thực thi hex Nếu chương trình khơng có lỗi biên dịch – lỗi ngữ nghĩa (compiler error) chương trình gỡ lỗi, mơ Thực gỡ lỗi cho chương trình Debug (nhấn Ctrl + F5) để bắt đầu trình gỡ lỗi chạy chương trình mơ Run (F5) Thơng thường chương trình gọi hình hiển thị GPIO thấy led nhấp nháy, khơng thấy ta vào thẻ Peripherals - GPIO – Fast GPIO – Port để bật hiển thị GPIO Sau chạy chương trình gỡ lỗi, ta kết sau: Hình 5.1 Kết thực thi chương trình Led.c Chương trình mô cho nhấp nháy led việc nhấp nháy chân cắm 0, 2, 4, ghi GPIO Chương trình cho thấy tốc độ nhấp nháy led nhanh hay chậm phụ thuộc vào thời gian làm trễ mà ta viết 5.3 Chương trình Hello world Ở chương trình trên, ta mơ hoạt động các chân cắm cổng để đèn led nhấp nháy Chương trình để minh họa cho việc sử dụng cổng nối tiếp UART để ghi chuỗi kí tự Chương trình thực việc ghi cổng nối tiếp UART dòng chữ “Hello world” lặp lại lần dòng chữ: “This is my embedded programming ”: 43 Bảng 5.2: Mã lệnh Hello.c /* Chuong trinh Hello.c thuc hien viec in man hinh cac dong chu Hello world * va lan dong chu “This is my embedded programming ” */ #include #include /* Thu vien LPC214x.h */ /* Ham main thuc hien chuong trinh chinh */ int main () { int count = 5; // Khai bao gia tri cua bien dem count = // Cac khai bao cho cac chan cam, cong PINSEL0 = 0x00050000; // Bat RXD1 TXD1 U1LCR = 0x83; // Bat DLAB = 1, bit stop bit U1DLL = 97; // 9600 Baud Rate @ 15MHz VPB Clock U1LCR = 0x03; // DLAB = printf ("Hello World\n"); // In “Hello world” // Ham in lan dong chu “This is my embedded programming ” while (count > 0) { printf("This is my embedded programming \n"); count ; } // Ham lap vo han de dung chuong trinh while (1) {;} } Ý nghĩa hàm, giá trị, phép gán: • PINSEL0 có giá trị 0x00050000 tương đương với mã nhị phân có bit 16 18 có giá trị Bit 16 PINSEL0 có giá trị tức mở cổng truyền liệu TXD1 UART1 Bit 18 PINSEL0 có giá trị mở cổng nhận liệu RXD1 UART1 • Ở U1LCR có giá trị 0x83 tương đương với mã nhị phân 1000 0011 Trong bit bật DLAB lên, bit có stop bit, bit 11 nên trạng thái truy cập với độ dài bit ký tự 44 • U1DLL truy cập vào khóa chia (Divisor Latch Access) UART1 Giá trị 97 để tính tốn tốc độ baud thiết bị • Giá trị U1LCR 0x03 tắt DLAB (bit đại diện cho DLAB chuyển mức 0) • Vịng lặp while (count > 0) để chương trình in lần dịng chữ “This is my embedded programming ” • Vịng lặp while (1) vịng lặp vơ hạn, để chương trình dừng lại, khơng tiếp tục thực lại hàm main Để thực việc in ký tự cổng nối tiếp ta cịn cần phải viết hàm phụ để thực việc truyền nhận liệu từ chương trình đến cổng nối tiếp UART1 Sau biên dịch thực chương trình ta kết sau: Hình 5.2 Kết thực thi chương trình Hello world Chương trình ta lập trình cho việc ghi cổng nối tiếp UART1, hình cổng xuất ký tự lại cổng UART1 Điều giải thích sau: gỡ lỗi µVision cổng nối tiếp UART đánh số từ UART1, UART2 không đánh số thiết kế LPC2148 UART0, UART1 Vì vậy, UART2 tương ứng với UART1 mà ta khai báo chương trình 5.4 Nhận xét Chương trình đèn led nhấp nháy truyền liệu cổng nối tiếp UART hai chương trình đơn giản viết KeilC biên dịch, chạy, gỡ lỗi mơ µVision Qua hai chương trình nhỏ này, thấy µVision cơng cụ trực quan, 45 giúp cho người lập trình, khơng có thiết bị phần cứng thích hợp viết ứng dụng trực tiếp µVision IDE sau chạy thiết bị phần cứng mô thực chức tương tự với vi điều khiển thật Tuy nhiên, µVision cơng cụ mơ phỏng, cơng cụ khó tránh khỏi việc có vài sai khác so với việc chạy vi điều khiển thật, sai khác không lớn ta chấp nhận 46 CHƯƠNG 6: KẾT LUẬN Các hệ thống nhúng ứng dụng rộng rãi đời sống chúng ta, chúng ngày phát triển vượt bậc số lượng lẫn chất lượng Việc gỡ lỗi cho hệ thống nhúng ngày trở lên quan trọng số lượng hệ thống nhiều lên, đòi hỏi người dùng với sản phẩm cao hơn, sản phẩm cần có độ ổn định, an tồn chất lượng tốt Đáp ứng mục tiêu gỡ lỗi cho hệ thống nhúng, sau thời gian nghiên cứu học hỏi, khóa luận đạt kết sau: • Khóa luận mang đến nhìn tổng quát hệ thống nhúng, trình bày đặc điểm hệ thống nhúng thơng thường Khóa luận đưa số thông tin ngơn ngữ lập trình để kỹ sư lập trình lựa chọn cho ngơn ngữ lập trình thích hợp với hệ thống • Khóa luận đưa lý thuyết kỹ thuật gỡ lỗi cho hệ thống nhúng nhiều phương pháp khác nhau, từ kiểm thử cho máy chủ, đến sử dụng công cụ phần mềm, hay phần cứng để gỡ lỗi • Khóa luận giới thiệu cơng cụ mơ µVision cơng ty Keil công cụ mô cho họ vi xử lý ARM – họ vi xử lý lớn, ứng dụng rộng rãi thiết bị điện tử ngày • Phần ứng dụng kiểm thử trình bày việc gỡ lỗi cho chương trình viết cho vi điều khiển LPC2148 phát triển tảng ARM công ty Philips để minh họa cho việc sử dụng cơng cụ µVision vào việc mơ vi điều khiển Tuy nhiên quỹ thời gian nghiên cứu hạn hẹp điều kiện kĩ thuật bị giới hạn, khóa luận khơng tránh khỏi hạn chế sau: • Khóa luận dừng lại việc giới thiệu hệ thống kỹ thuật gỡ lỗi cho hệ thống đưa công cụ mà theo chủ quan lựa chọn tốt cho kỹ sư lập trình cho thiết bị dựa tảng vi xử lý ARM lập trình gỡ lỗi cho phần mềm mà phần cứng thiết bị chưa sẵn sàng hay khơng có sẵn • Các ứng dụng kiểm thử khóa luận chương trình đơn giản chưa thực khai thác hết ưu điểm cơng cụ µVision 47 Gỡ lỗi kiểm thử công việc thú vị, mong sau làm việc nhiều với hệ thống nhúng, để ứng dụng nhiều kiến thức học hỏi vào thực tế Việc gỡ lỗi giúp nâng cao chất lượng phần mềm, phương pháp, công cụ thiết bị bổ trợ, cách hiệu để giảm thiểu số lỗi phần mềm thân kỹ sư lập trình cần viết chương trình sáng sủa, rõ ràng, kiểm sốt lỗi họ Điều giúp cho công việc gỡ lỗi đỡ vất vả nhiều 48 TÀI LIỆU THAM KHẢO [1] Micheal Barr, Anthony Massa, Programming Embedded Systems: with C and GNU Development tools, 2nd Edition, O'Reilly Media, October 1, 2006 (2nd Edition) [2] Jack Ganssle, Micheal Barr, Embedded System Dictionary, CMP Books, 2003 [3] Tammy Noergaard, Embedded System Architecture: A Comprehensive Guide for Engineers and Programmers, Newnes, February 24, 2005, page 129 [4] David E Simon, An Embedded Software Primer, Addison – Wesley Professional, August 15, 1999, chapter 1, 10 [5] Keil ARM, µVision IDE Overview, http://www.keil.com/uvision/, 2010 [6] Keil ARM, Advantages of the µVision IDE for ARM, http://www.keil.com/arm/idebenefits.asp, 2010 [7] Keil ARM, Advantages of the µVision Simulator for ARM, http://www.keil.com/arm/simbenefits.asp, 2010 [8] Keil ARM, Getting Started Creating Applications with µVision 4, 2010 [9] Keil ARM, Limitions, http://www.keil.com/demo/limits.asp, 2010 [10] Wikipedia, ARM Architechture, http://en.wikipedia.org/wiki/ARM_architecture, 2010 [11] AWRCorp, Example: Downconverter, https://awrcorp.com/download/faq/english/examples/Downconverter.aspx, 2009 [12] Link Instruments, IO-3200 Logic Analyzer Pattern Generator, http://www.linkinstruments.com/logana32f.htm, 2010 [13] Agilent, Logic Analyzer, http://cp.home.agilent.com/upload/cmc_upload/16902A.gif, 2010 [14] Wikipedia, Oscilloscope, http://en.wikipedia.org/wiki/Oscilloscope, 2010 [15] ARM, Processors, http://arm.com/products/processors/index.php, 2010 49 PHỤ LỤC CÁC THÔNG SỐ KỸ THUẬT CỦA VI ĐIỀU KHIỂN LPC2148 Một số đặc điểm vi điều khiển LPC2148 LPC2148 vi điều khiển 16/32 bit, dựa cấu trúc ARM7TDMI-S Bộ nhớ SRAM chip – 40 kB, nhớ chương trình flash từ 32 – 512 KB Có 64 chân cắm, 45 chân GPIO Tích hợp USB 2.0, hỗ trợ USB RAM tới KB Có 14 kênh ADC 10 - bit, kênh DAC 10 – bit Có timer 32 – bit, ngõ điều xung Đồng hồ thời gian thực với tần số ngõ vào 32 kHz Khả thiết lập độ ưu tiên, định địa cho ngắt Có nhiều giao diện cổng nối tiếp gồm: cổng nối tiếp UART, bus Fast I 2C (400 kbit/s), SPI SSP Trạng thái tiết kiệm điện: chế độ không tải ngắt nguồn Có chân ngắt ngồi CPU clock đạt tối đa 60 MHz thơng qua PLL lập trình Xung PLCK hoạt động độc lập Đặc điểm số ghi 2.1 Các cổng nhập/ xuất thông thường (GPIO) LPC2148 có cổng Port0 Port1: Port0 (GPIO0): PO.0 – PO.23, PO.25, PO.28 – PO.30: chân nhập/ xuất thông thường PO.31 chân xuất Các chân PO.24, PO.26, PO.27 không xét Port1 (GPIO1): P1.16 – P1.31 chân nhập/ xuất thông thường, chân cịn lại khơng xét Có thể truy cập cổng theo hai cách: “slow” GPIO “fast” GPIO Việc truy 50 cập khai báo thông qua ghi SCS (System Control and Status flag register – Thanh ghi cờ điều khiển hệ thống trạng thái) Bảng : Các giá trị ghi SCS Bit Ký hiệu Ý nghĩa Giá trị sau reset GPIO0M Bit chọn mode port 0: slow 1: fast GPIO1M Bit chọn mode port 0: slow 1: fast 31:02 - Không hỗ trợ Không xác định Các ghi chức GPIO: Bảng 2: Bảng giá trị ghi GPIO ST Tên T ghi Bit Ý nghĩa Truy cập Giá trị sau reset IODIR 31:01 Bit tương ứng với P0.0 0: chân tương ứng nhập 1: chân tương ứng xuất Đọc/ Ghi 0x00000000 IOSET 31:01 Bit 0: không xảy hiệu ứng Bit 1: chân tương ứng set Đọc/ Ghi 0x00000000 IOCLR 31:01 Bit 0: không xảy hiệu ứng Bit 1: chân tương ứng set Chỉ đọc IOPIN 31:01 Trạng thái port Đọc/ Ghi Không xác đọc ghi này, việc ghi định vào IO0PIN ảnh hưởng tới toàn port FIODIR 31:01 Bit tương ứng với P0.0 0: chân tương ứng nhập 1: chân tương ứng xuất FIOMASK 31:01 Quản lý chân theo tập hợp Đọc/ Ghi 0x00000000 bit có giá trị FIOMASK FIOPIN 31:01 Tương tự IOPIN, có tác Đọc/ Ghi 0x00000000 dụng với chân định nghĩa FIOMASK FIOSET 31:01 Tương tự IOSET, có tác Đọc/ Ghi 0x00000000 51 0x00000000 Đọc/ Ghi 0x00000000 ST Tên T ghi Bit Ý nghĩa Truy cập Giá trị sau reset dụng với chân định nghĩa FIOMASK FIOCLR 31:01 Tương tự IOCLR, có tác Đọc/ Ghi 0x00000000 dụng với chân định nghĩa FIOMASK 2.2 Khối kết nối chân (Pin Connect Block) Mục đích khối kết nối chân để cấu hình cho chân vi điều khiển để thực mục đích cụ thể LPC2148 có ghi PINSEL (Pin function Select register) để cấu hình cho chân cắm là: PINSEL0, PINSEL1, PINSEL2 Bảng 3: Bảng giá trị bit ghi PINSEL0 Bit 1:0 Ký hiệu P0.0 Giá trị Chức 00 GPIO Port 0.0 01 TXD (UART0) 10 Giá trị sau reset PWM1 11 3:2 GPIO Port 0.1 RXD (UART0) 10 PWM3 11 EINT0 00 GPIO Port 0.2 01 SCL0 (I2 C0) 10 P0.2 00 01 5:4 P0.1 Capture 0.0 (Timer 0) 11 7:6 P0.3 00 GPIO Port 0.3 01 SDA0 (I2 C0) 10 Match 0.0 (Timer 0) 11 EINT1 52 Bit 9:8 Ký hiệu P0.4 Giá trị Chức MISO0 (SPI0) Match 0.1 (Timer 0) AD0.7 00 GPIO Port 0.6 01 MOSI0 (SPI0) 10 Capture 0.2 ( Timer 0) 11 AD1.0 00 GPIO Port 0.7 01 SSEL0 (SPIO) 10 PWM2 11 EINT2 00 GPIO Port 0.8 01 TXD (UART1) 10 PWM4 11 AD1.1 00 GPIO Port 0.9 01 RXD (UART1) 10 PWM6 11 EINT3 00 GPIO Port0.10 01 RST (UART1) 10 Capture 1.0 (Timer 1) 11 23:22 P0.11 GPIO Port 0.5 11 21:20 P0.10 00 10 19:18 P0.9 AD0.6 01 17:16 P0.8 Capture 0.1 (Timer 0) 11 15:14 P0.7 SCK0 (SPI0) 10 13:12 P0.6 GPIO Port 0.4 01 11:10 P0.5 00 AD1.2 00 GPIO Port 0.11 01 CTS (UART1) Giá trị sau reset 53 0 0 0 0 Bit Ký hiệu Giá trị Chức 10 DSR (UART1) Match 1.0 (Timer 1) AD1.3 00 GPIO Port 0.13 01 DTR (UART1) 10 Match 1.1 (Timer1) 11 AD1.4 00 GPIO Port 0.14 01 DCD (UART1) 10 EINT1 11 SDA1(I2C1) 00 GPIO Port 0.15 01 RI (UART1) 10 EINT2 11 31:30 P0.15 GPIO 0.12 11 29:28 P0.14 00 10 27:26 P0.13 SCL1 (I2C1) 01 25:24 P0.12 Capture 1.1 (Timer 1) 11 Giá trị sau reset AD1.5 0 0 Trên bảng giá trị bit ghi PINSEL0, với ghi PINSEL1, PINSEL2 tương tự, có vài khác biệt mà ta không xét tới 2.3 Bộ nhận truyền bất đối xứng (UART – Universal Assynchronous Receiver/ Transmitter) LPC2148 hỗ trợ UART UART0 UART1 Các ghi có chức năng: nhận truyền nối tiếp 16 byte; nhận điểm ràng buộc FIFO byte thứ 1, 4, 8, 14; tạo tốc độ baud với khả tăng tạo baud tự động; cài đặt để điều khiển luồng UART có chân cắm : • RXDx: nhận liệu cổng nối tiếp 54 • TXDx: truyền liệu cổng nối tiếp Bảng ghi UART1: Ở ta quan tâm tới hai ghi U1LCR U1DLL • U1LCR (Line control Register – Thanh ghi điều khiển dòng) định dạng ký tự liệu truyền hay nhận: Bảng 4: Bảng giá trị bit U1LCR Bit Kí hiệu Giá trị Ý nghĩa Giá trị sau reset 1:0 Lựa chọn độ dài từ 00 01 10 11 Độ dài ký tự bit Độ dài ký tự bit Độ dài ký tự bit Độ dài ký tự bit Lựa chọn bit dừng 1 bit dừng bit dừng (bằng 1,5 U1LCR[1:0] = 00) Có chẵn lẻ Khơng kiểm tra tính chẵn lẻ Kiểm tra tính chẵn lẻ 5:4 Lựa chọn 00 kiểm tra chăn 01 lẽ 10 11 Bù lẻ Số bit đường truyền phải lẻ Bù chẵn.Số bit đường truyển phải chẵn Thêm Thêm 0 Điều khiển dừng Không cho phép dừng Cho phép dừng Bit truy cập tới phân chia DLAB Không phép truy cập tới phân chia Được phép truy cập U1DLL để chứa liệu bit mà DLAB ghi U1LCR bật lên, với U1DLM định tốc độ baud UART1 Cơng thức tính tốc độ baud UART1 là: UART1baudrate = PCLK MulVal ∗ 16∗ 256∗U1DLM U1DLL MulVal DivAddVal Trong đó: UART1baudrate : Tốc độ baud UART1 55 U1DLM, U1DLL cho PCLK (peripheral clock - tốc độ ngoại vi) cho DIVADDVAL MULVAL tỷ số baud đặc trưng thiết bị, thường cho trước Thanh ghi UART0 có chức tương tự ghi UART1 Nhận xét Vì điều kiện thời gian khơng cho phép, nên khóa luận khơng trình bày hết tất thông số kỹ thuật vi điều khiển LPC2148 mà khóa luận tập trung đưa thơng số kỹ thuật cần thiết, liên quan đến phần ứng dụng khóa luận Tất thơng số kỹ thuật vi điều khiển LPC2148 tìm thấy trang chủ nhà sản xuất NXP (Philips) 56 ...ĐẠI H? ?C QU? ?C GIA HÀ NỘI TRƯỜNG ĐẠI H? ?C CÔNG NGHỆ Ngô Thị Nga 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 KHĨA LUẬN TỐT NGHIỆP ĐẠI H? ?C HỆ CHÍNH QUY Ngành: C? ?ng nghệ thông... niệm gỡ lỗi kỹ thuật gỡ lỗi cho phần mềm hệ thống nhúng C? ?c kỹ sư lập trình áp dụng kết hợp vài phương pháp gỡ lỗi kết tốt 3.1 Gỡ lỗi 3.1.1 Gỡ lỗi trình phát triển hệ thống nhúng Quá trình phát triển. .. định nghĩa hệ thống nhúng, đ? ?c trưng hệ thống vi? ?c chọn lựa ngôn ngữ lập trình phù hợp với hệ thống nhúng Chương ba: Tiếp c? ??n với kỹ thuật gỡ lỗi thường dùng hệ thống nhúng: kiểm thử máy chủ, kiểm

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

Từ khóa liên quan

Mục lục

  • CHƯƠNG 1: MỞ ĐẦU

    • 1.1. Đặt vấn đề

    • 1.2. Đề tài, đối tượng nghiên cứu và phương pháp nghiên cứu

    • 1.3. Mục tiêu của khóa luận

    • 1.4. Cấu trúc của khóa luận

    • CHƯƠNG 2: TỔNG QUAN

      • 2.1. Hệ thống nhúng

        • 2.1.1. Hệ thống nhúng là gì?

        • 2.1.2. Các thiết bị phần cứng thông thường

        • 2.1.3. Đặc trưng của hệ thống nhúng

        • 2.1.4. Ví dụ về hệ thống nhúng

        • 2.2. Sự lựa chọn ngôn ngữ lập trình cho hệ thống nhúng

        • CHƯƠNG 3: CÁC KỸ THUẬT GỠ LỖI

          • 3.1. Gỡ lỗi

            • 3.1.1. Gỡ lỗi trong quá trình phát triển hệ thống nhúng

            • 3.1.2. Định nghĩa gỡ lỗi

            • 3.1.3. Tầm quan trọng của việc gỡ lỗi

            • 3.1.4. Mục đích của quá trình gỡ lỗi

            • 3.2. Kiểm thử trên máy chủ

              • 3.2.1. Kỹ thuật cơ bản

              • 3.2.2. Gọi các thường trình ngắt

              • 3.2.3. Gọi thường trình ngắt định thời

              • 3.2.4. Các tệp kịch bản và tệp kết xuất

              • 3.2.5. Những phản đối, hạn chế và nhược điểm

              • 3.3. Bộ mô phỏng

              • 3.4. Sử dụng macro assert

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

Tài liệu liên quan