Đăng ký Đăng nhập
Trang chủ Xây dựng arm based application bulder trên kit at91sam7s evaluation board ...

Tài liệu Xây dựng arm based application bulder trên kit at91sam7s evaluation board

.PDF
144
2
61

Mô tả:

Đại Học Quốc Gia Tp. Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA ----------------------- NGUYỄN VĂN THANH XÂY DỰNG “ARM-BASED APPLICATION BUILDER” TRÊN KIT AT91SAM7S EVALUATION BOARD Chuyên ngành: KỸ THUẬT ĐIỆN TỬ LUẬN VĂN THẠC SĨ TP. HỒ CHÍ MINH , tháng 12 năm 2009 CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán bộ hướng dẫn khoa học: 1. TS. PHAN HỒNG PHƯƠNG 2. GVC. Th.S HỒ TRUNG MỸ Cán bộ chấm nhận xét 1: PGS. TS LÊ TIẾN THƯỜNG Cán bộ chấm nhận xét 2: TS LƯU THANH TRÀ Luận văn thạc sĩ được bảo vệ tại HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày 30 tháng 12 năm 2009. TRƯỜNG ĐẠI HỌC BÁCH KHOA PHÒNG ĐÀO TẠO SĐH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC Tp.HCM, ngày tháng năm 2009 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ và tên học viên: NGUYỄN VĂN THANH Phái: Nam Ngày, tháng, năm sinh: 25 / 02 / 1971 Nơi sinh: Bến Tre Chuyên ngành: Kỹ thuật Điện tử MSHV: 01407729 I - TÊN ĐỀ TÀI: XÂY DỰNG “ARM-BASED APPLICATION BUILDER” TRÊN KIT AT91SAM7S EVALUATION BOARD II - NHIỆM VỤ VÀ NỘI DUNG: 1. Tìm hiểu kỹ thuật lập trình tự động sinh mã cho hệ thống nhúng thời gian thực. 2. Tìm hiểu phương pháp thiết kế một chương trình biên dịch. 3. Tìm hiểu hệ vi điều khiển họ AT91SAM7S và kỹ thuật lập trình nhúng ARM. 4. Xây dựng chương trình biên dịch từ file dạng text sang file C. 5. Xây dựng trình tạo ứng dụng cho vi điều khiển Atmel AT91SAM7S256 _“ARM_based application builder”_ trên kit AT91SAM7S Evaluation Board. 6. Thực nghiệm chương trình trên kit AT91SAM7S Evaluation Board. III - NGÀY GIAO NHIỆM VỤ: 02/02/2009 IV - NGÀY HOÀN THÀNH NHIỆM VỤ: 14/12/2009 V - CÁN BỘ HƯỚNG DẪN: TS. PHAN HỒNG PHƯƠNG GVC. Th.S HỒ TRUNG MỸ Nội dung và đề cương Luận văn thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua. CÁN BỘ HƯỚNG DẪN CHỦ NHIỆM BỘ MÔN QUẢN LÝ CHUYÊN NGÀNH KHOA QL CHUYÊN NGÀNH ABSTRACT Embedded real-time systems is a real-world application domain where advanced software developing processes are already generative. Therefore, it is a source of experience and also of additional technological requirements that are mostly concerned at the moment. This thesis focuses on the design and implementation of an ARM_based application builder over PNLab AT91SAM7S Evaluation Board kit. The design develops a new generative programming technique for real-time embedded system using Atmel AT91SAM7S256 microchips. This program involves a set of automatically generated code, aiming to create a target code from some source code after programmer’s domain specific languages (DSL) implementation. As deploying the construction of PNLab AT91SAM7S Evaluation Board, a domain-specific language is used to describe an application system in a netlist form. As a result, an automatic code transforms this abstract system description into final executable code. After the validation process, an application file in binary form is generated. TÓM TẮT Hệ thống nhúng thời gian thực là một lĩnh vực ứng dụng thế giới thực, nơi quy trình phát triển các phần mềm tiên tiến đã được tự sinh ra. Vì thế, nó vừa là mã nguồn thí nghiệm và cũng là nhu cầu công nghệ bổ sung đang được quan tâm phổ biến hiện nay. Luận văn này tập trung thiết kế và thực thi một chương trình tạo ứng dụng cho vi điều khiển ARM được phát triển trên kít PNLab AT91SAM7S Evaluation Board. Thiết kế này đã phát triển một kỹ thuật lập trình tự động sinh mã mới cho hệ thống nhúng sử dụng vi điều khiển AT91SAM7S256 của hãng Atmel. Chương trình bao gồm một bộ tạo mã tự động nhằm tạo ra mã đích từ mã nguồn được người lập trình viết ở cấp cao hơn bằng một ngôn ngữ đặc biệt. Khi lập trình ứng dụng trên kít phát triển PNLab AT91SAM7S Evaluation Board, một ngôn ngữ đặc biệt được dùng để mô tả hệ thống ứng dụng dưới dạng netlist, một bộ tạo mã tự động sẽ biến đổi sự mô tả hệ thống trừu tượng đó thành mã thực thi sau cùng. Sau khi quá trình xử lý thành công, một file dạng mã nhị phân của chương trình ứng dụng sẽ được sinh ra. ii MỤC LỤC Trang LỜI CẢM ƠN .............................................................................................................. i MỤC LỤC................................................................................................................... ii DANH MỤC CÁC HÌNH VẼ VÀ BẢNG BIỂU ..................................................... vii CHƯƠNG I: GIỚI THIỆU......................................................................................... 1 CHƯƠNG II: VI ĐIỀU KHIỂN AT91SAM7S256 VÀ KIT PHÁT TRIỂN PNLab AT91SAM7S_EB ......................................................................................... 8 2.1 Sự vượt trội của công nghệ ARM ........................................................................ 8 2.1.1 Những lợi thế khi sử dụng ARM ................................................................ 8 2.1.2 Những ưu điểm kỹ thuật hiện nay của ARM ............................................. 9 2.1.3 Lợi ích các sản phẩm ARM của Atmel ...................................................... 9 2.2 Vi điều khiển ARM AT91SAM7S256................................................................. 11 2.2.1 Các tính năng chủ yếu của AT91SAM7S256 ............................................. 11 2.2.2 Mô tả về vi điều khiển AT91SAM7S256 ................................................... 12 2.2.3 Mô tả tín hiệu trong vi điều khiển AT91SAM7S256 ................................. 15 2.2.4 Các đường điều khiển vào/ra trong vi điều khiển AT91SAM7S256.......... 18 2.2.5 Bộ nhớ của vi điều khiển AT91SAM7S256 ............................................... 20 2.2.5.1 Phân vùng bộ nhớ trong AT91SAM7S256....................................... 20 2.2.5.2 Flash nhúng trong AT91SAM7S256 ................................................ 20 2.2.5.3 Giao diện lập trình Flash nhanh trong AT91SAM7S256 ................. 22 2.2.6 Các thiết bị ngoại vi của AT91SAM7S256 ................................................ 23 2.2.6.1 Các đường PIO để điều khiển thiết bị ngoại vi................................ 23 2.2.6.2 Định danh của thiết bị ngoại vi ........................................................ 23 2.3 Kit phát triển PNLab AT91SAM7S Evaluation Board........................................ 26 iii 2.3.1 Mô tả kit phát triển PNLab AT91SAM7S Evaluation Board ..................... 26 2.3.2 Đặc tả phần cứng ......................................................................................... 27 2.3.3 Các Jumper và thiết lập ................................................................................ 27 2.3.4 Hướng dẫn sử dụng phần mềm SAM-BA.................................................... 28 CHƯƠNG III: KỸ THUẬT LẬP TRÌNH NHÚNG ARM ....................................... 30 3.1 Môi trường phát triển hệ thống nhúng sử dụng ARM ........................................ 30 3.1.1 Môi trường phát triển chéo .......................................................................... 30 3.1.1.1 JTAG Based ICD ............................................................................... 30 3.1.1.2 Phần mềm gỡ rối .................................................................................. 30 3.1.1.3 Thiết bị mô phỏng CPU ICE ( In Circuit Emulator )............................ 31 3.1.2 Bộ mô phỏng phần mềm ............................................................................. 31 3.1.3 Board phát triển ........................................................................................... 31 3.1.4 Hệ điều hành nhúng ..................................................................................... 31 3.2 Phần mềm hệ thống nhúng................................................................................... 32 3.2.1 Các thành phần của một phần mềm nhúng .................................................. 32 3.2.2 Mã khởi tạo (Boot)....................................................................................... 32 3.2.3 Hệ điều hành nhúng ..................................................................................... 32 3.2.4 Ứng dụng phần mềm nhúng......................................................................... 34 3.3 Lập trình ứng dụng với vi điều khiển AT91SAM7S256 ..................................... 34 3.3.1 Các thiết bị ngoại vi của AT91SAM7S256 ................................................ 34 3.3.2 Các phần mềm bổ sung ............................................................................... 35 3.3.2.1 Phần mềm C-Startup ............................................................................ 35 3.3.2.2 Sử dụng thiết bị ngoại vi ...................................................................... 40 3.3.2.3 Sử dụng bộ điều khiển ngắt AIC......................................................... 40 3.3.2.4 Sử dụng bộ Timer Counter.................................................................. 42 3.4 Công cụ phát triển ARM ..................................................................................... 43 3.4.1 Chương trình biên dịch ARM C.................................................................. 43 iv 3.4.2 Chương trình dịch hợp ngữ_ARM assembler.............................................. 44 3.4.3 Chương trình liên kết ( linker) ..................................................................... 45 3.4.4 Phần mềm ARMsd ....................................................................................... 45 3.5 Công cụ AT91 ISP/SAM-BA .............................................................................. 46 3.5.1 Lĩnh vực sử dụng SAM-BA......................................................................... 46 3.5.2 Đặc tính của phần mềm SAM-BA ............................................................... 46 3.5.3 Lập trình Flash dùng SAM-BA.................................................................... 47 CHƯƠNG IV: KỸ THUẬT LẬP TRÌNH TỰ ĐỘNG SINH MÃ TRONG HỆ THỐNG NHÚNG THỜI GIAN THỰC ............................................... 48 4.1 Giới thiệu về kỹ thuật lập trình sinh mã tự động ................................................. 48 4.2 Phát triển phần mềm tự sinh mã cho hệ thống nhúng.......................................... 51 4.3. Bài học kinh nghiệm, ứng dụng và hướng phát triển kỹ thuật lập trình tự sinh mã..................................................................................................... 54 4.4. Phương án thiết kế bộ sinh mã tự động mới cho AT91SAM7S256 ................... 56 CHƯƠNG V: XÂY DỰNG CHƯƠNG TRÌNH TẠO ỨNG DỤNG “ARM_BASED APPLICATION BUILDER” .......................................................... 57 5.1 Tổng quan về quá trình thiết kế chương trình...................................................... 57 5.1.1 Các bước xây dựng chương trình................................................................. 57 5.1.2 Xây dựng giao diện lập trình ....................................................................... 59 5.1.3 Định dạng Mã nguồn ................................................................................... 60 5.1.4 Xây dựng chương trình biên dịch ............................................................... 63 5.2 Giải thuật và chương trình ................................................................................... 64 5.2.1 Bộ phân tích từ vựng từ mã nguồn .............................................................. 64 5.2.2 Bộ phân tích cú pháp.................................................................................... 66 5.2.2.1 Giải thuật xây dựng bộ phân tích cú pháp ........................................... 66 5.2.2.2. Giải thuật kiểm tra các entity .............................................................. 71 5.2.2.3. Giải thuật kiểm tra các Funct .............................................................. 74 v 5.2.3 Giải thuật xây dựng bộ tạo mã C ................................................................ 76 5.2.4 Giải thuật xây dựng trình liên kết sinh mã BIN.......................................... 79 5.2.4.1 Tạo file arm_out.axf và arm_out.tex .................................................. 79 5.2.4.2 Hiển thị file arm_out.tex ..................................................................... 80 5.2.4.3 Biên dịch file arm_out.axf thành file arm_out.bin............................... 81 5.3 Nạp chương trình vào vi điều khiển .................................................................... 82 5.4 Chương trình xóa file arm_out.c ........................................................................ 83 5.5 Biên soạn chương trình ........................................................................................ 84 CHƯƠNG VI: KẾT QUẢ THỰC NGHIỆM ........................................................... 85 6.1. Giới thiệu về chương trình .................................................................................. 85 6.1.1. Nhập chương trình ứng dụng từ người lập trình ......................................... 85 6.1.2. Thực hiện một chương trình ứng dụng ....................................................... 87 6.1.2.1 Thông báo lỗi cú pháp của file nguồn....................................................... 87 6.1.2.2. Thông báo file arm_out.c đã được tạo ..................................................... 92 6.1.2.3. Thông báo file arm_out.bin đã được tạo.................................................. 92 6.2 Phương pháp mô tả các sub-circuit ...................................................................... 93 6.2.1 AND, NAND, OR, NOR, XNOR, XOR...................................................... 93 6.2.2 NOT............................................................................................................. 94 6.2.3 DFF ( Flip_Flop D) ...................................................................................... 94 6.2.4 JKFF (Flip_Flop JK).................................................................................... 95 6.2.5 COUNTER (Bộ đếm lên/xuống 10 bit ) ...................................................... 95 6.2.6 CONTSTEPMOTOR (Bộ điều khiển động cơ bước đơn cực) ................... 96 6.2.7 ADC (Bộ biến đổi Analog-to-Digital 10 bit ) .............................................. 97 6.2.8 DELAY1 (Bộ trì hoãn 1 giây)..................................................................... 98 6.2.9 DELAY60 (Bộ trì hoãn 60 giây)................................................................. 98 6.2.10 TIMER (Bộ định thời) .............................................................................. 98 6.3 Chuẩn bị phần mềm ............................................................................................. 99 vi 6.4 Chuẩn bị phần cứng ............................................................................................. 99 6.5 Các bước thực thi một chương trình ứng dụng .................................................... 99 6.6 Ví dụ: Lập trình điều khiển việc đóng/ mở cửa của một garage.......................... 104 6.6.1 Mô tả ứng dụng ............................................................................................ 104 6.6.2 Xây dựng chương trình điều khiển cửa garage ............................................ 105 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................................................. 109 TÀI LIỆU THAM KHẢO.......................................................................................... 111 PHỤ LỤC .................................................................................................................. 113 Phụ lục A: Chương trình tạo dự án ARM trên MFC AppWizard(exe) ................ 113 Phụ lục B: Chương trình tạo dự án ARM2CC ...................................................... 113 Phụ lục C: File logic.h.......................................................................................... 114 Phụ lục D: File init_extint .................................................................................... 127 Phụ lục E: File IRQ1.s ........................................................................................ 128 Phụ lục F: File init_timer.c .................................................................................. 128 Phụ lục G: File Board.h ....................................................................................... 129 vii DANH MỤC CÁC HÌNH VẼ VÀ BẢNG BIỂU Trang DANH MỤC HÌNH VẼ: Hình 1.1: Sơ đồ khối của một hệ thống nhúng giản lượt ........................................... 1 Hình 1.2: Kit phát triển PNLab AT91SAM7S256 Evaluation Board ....................... 42-4 Hình 1.3: Sơ đồ khối của bộ tạo “ARM_based application builder” ........................ 5 Hình 2.1: Bảng đồ phát triển về bộ nhớ của dòng ARM AT91SAM7 ...................... 10 Hình 2.2: Đóng gói nhỏ gọn LQFP64_ 64 chân của AT91SAM7S256 .................... 11 Hình 2.3 : Sơ đồ khối của AT91SAM7S256 ............................................................ 13 Hình 2.4: Phân vùng bộ nhớ bên trong AT91SAM7S256 ........................................ 20 Hình 2.5: Chi tiết phần cứng và Jumper của Kit phát triển NPLab AT91SAM7S EVALUATION BOARD ....................................................... 26 Hình 2.6: Thiết lập các Jumper trên AT91SAM7S_EB............................................. 28 Hình 3.1: Thực thi các lớp trừu tượng phần mềm trong phần cứng ......................... 32 Hình 3.2: Cấu trúc của bộ công cụ phát triển ARM .................................................. 44 Hình 3.3: Cách thức lên lạc giữa SAM_BA với AT91SAM-based Target ............... 46 Hình 3.4: Giao tiếp SAM_GUI .................................................................................. 47 Hình 4.1 : Đầu vào và đầu ra của bộ tạo mã tự động................................................. 48 Hình 4.2 : Luồng thiết kế của vMAGIC .................................................................... 49 Hình 4.3: Cửa sổ LabVIEW_ Bảng mặt trước và sơ đồ khối ................................... 50 Hình 4.4: Cấu trúc của hệ thống µGP tạo chương trình chạy thử tự động ............... 54 Hình 4.5: Sơ đồ khối của dự án sinh mã tự động của thiết kế .................................. 56 Hình 5.1: Sơ đồ các bước xử lý trong chương trình chính......................................... 58 Hình 5.2: Giao diện chính của thiết kế....................................................................... 59 Hình 5.3: Sơ đồ mạch cộng nhị phân toàn phần ....................................................... 62 Hình 5.4: Sơ đồ thiết kế chương trình biên dịch ....................................................... 63 Hình 5.5: Sơ đồ tạo ra bộ phân tích từ vựng bằng Lex .............................................. 65 viii Hình 5.6: Sơ đồ thuật toán phân tích cú pháp chương trình nguồn ........................... 70 Hình 5.7: Sơ đồ thuật toán tạo mã C .......................................................................... 76 Hình 5.8: Kết quả sinh mã C từ file nguồn FULL_ADDER.arm .............................. 77 Hình 5.9: Sơ đồ khối các bước thực hiện sinh mã BIN Hình 5.10: Dự án tạo file arm_out.axf sử dụng trình biên dịch Keil µvision3 IDE 80 Hình 5.11: Màn hình hiển thị nội dung của file arm_out.tex..................................... 81 Hình 5.12: Chọn giao thức kết nối giữa USB và board sử dụng trong SAM_BA .... 82 Hình 5.13: Tải file arm_out.bin vào board dùng SAM_BA ...................................... 82 Hình 5.13: Trình tự thực hiện chương trình của thiết kế ........................................... 84 Hình 6.1: Giao diện lập trình giữa PC với người lập trình ........................................ 85 Hình 6.2: Tùy chọn phương thức nhập file nguồn thông qua giao diện người dùng của thiết kế ............................................................. 86 Hình 6.3: Nội dung file nguồn FULL_ADDER.arm trong giao diện ....................... 86 Hình 6.4: Thông báo lỗi do nhập thiếu “entity” hoặc “ end.”................................... 87 Hình 6.5: Thông báo lỗi do nhập thiếu tên của entity............................................... 88 Hình 6.6: Thông báo lỗi do nhập thiếu dấu “(” ........................................................ 88 Hình 6.7: Thông báo lỗi do nhập sai biến số ............................................................ 89 Hình 6.8: Thông báo lỗi do nhập thiếu “in” hoặc “out” .......................................... 89 Hình 6.9: Thông báo lỗi do nhập thiếu “begin”hoặc “end” ...................................... 90 Hình 6.10: Thông báo lỗi do nhập sai tên sub-circuit............................................... 90 Hình 6.11: Thông báo lỗi do nhập sai biến số của entity “main” ............................ 91 Hình 6.12: Thông báo lỗi do nhập sai tên biến của entity “ main” .......................... 91 Hình 6.13: Thông báo file arm_out.c đã được tạo .................................................... 92 Hình 6.14: Thông báo file arm_out.bin đã được tạo.................................................. 93 Hình 6.15: Mô hình sub-circuit OR nhiều ngõ vào.................................................... 93 Hình 6.16: Mô hình sub-circuit NOT......................................................................... 94 Hình 6.17: Mô hình sub-circuit DFF và trạng thái hoạt động của DFF.................... 94 viiii Hình 6.18: Mô hình sub-circuit JKFF và trạng thái hoạt động của JKFF ................. 95 Hình 6.19: Mô hình sub-circuit COUNTER và trạng thái hoạt động ...................... 95 Hình 6.20: Mô hình sub-circuit CONTSTEPMOTOR và trạng thái hoạt động ...... 97 Hình 6.21: Mô hình sub-circuit ADC và trạng thái hoạt động ................................. 97 Hình 6.22: Mô hình sub-circuit DELAY 1giây và trạng thái hoạt động.................... 98 Hình 6.23: Mô hình sub-circuit DELAY 60 giây và trạng thái hoạt động ................ 98 Hình 6.24: Mô hình sub-circuit TIMER và trạng thái hoạt động .............................. 98 Hình 6.25: Sơ đồ nguyên lý bộ dồn kênh 4 đầu vào .................................................. 100 Hình 6.26: Chọn giao thức kết nối USB với board AT91SAM7S_ EB ................... 101 Hình 6.27: Tải file arm_out.bin vào board AT91SAM7S_ EB ................................ 102 Hình 6.28: Kiểm tra việc thực thi ứng dụng dùng test board..................................... 103 Hình 6.29: Cổng điều khiển vào/ ra của ứng dụng điều khiển cửa garage ................ 104 Hình 6.30: Sơ đồ trạng thái đóng/ mở cửa garage .................................................... 105 Hình 6.31: Sơ đồ mô tả hệ thống điều khiển đóng/ mở cửa garage........................... 107 DANH MỤC BẢNG BIỂU: Bảng 2.1: Bảng mô tả chức năng các chân ra của AT91SAM7S256 ....................... 14 Bảng 2.2: Bảng mô tả tín hiệu trong vi điều khiển AT91SAM7S256....................... 18 Bảng 2.3: Bảng tổng hợp các đường điều khiển PIO kênh A.................................... 24 Bảng 2.4: Định danh các thiết bị ngoại vi của AT91SAM7S256.............................. 25 Chương 1: Giới Thiệu CBHD: T.S Phan Hồng Phương Th.S. Hồ Trung Mỹ CHƯƠNG I GIỚI THIỆU Hệ thống nhúng được thiết kế để thực hiện một chức năng chuyên biệt. Một hệ thống nhúng chỉ thực hiện một hoặc một vài chức năng nhất định, thường đi kèm với những yêu cầu cụ thể, bao gồm một số thiết bị ngoại vi và phần cứng chuyên dụng. Một số hệ thống nhúng đòi hỏi sự ràng buộc về tính hoạt động thời gian thực nhằm đảm bảo độ an toàn và tính ứng dụng của nó. Phần mềm được viết cho các hệ thống nhúng được lưu trữ trong các bộ nhớ ROM hoặc RAM. Phần mềm thường chạy với số tài nguyên phần cứng hữu hạn. Từ những ứng dụng đầu tiên vào những năm 1960, các hệ thống nhúng đã được phát triển mạnh mẽ về khả năng xử lý. Vào giữa thập niên 80, kỹ thuật mạch tích hợp đã đạt đến trình độ cao, dẫn đến nhiều thành phần có thể được đưa vào một chip xử lý. Một số bộ vi xử lý được gọi là các vi điều khiển và được ứng dụng rộng rãi cho đến nay. Hệ thống nhúng là sự kết hợp hài hòa giữa phần cứng và phần mềm, tạo thành bộ phận xử lý trong một vài hệ thống rộng lớn và thông thường được thiết kế để thực hiện một vài nhiệm vụ cụ thể nào đó. Một hệ thống nhúng bao gồm một vi xử lý được thiết kế đặc biệt, khả lập trình ROM hoặc Flash và hệ mạch điện khác. Bộ nhớ Ngõ vào Ngõ ra Giao tiếp I/O Bộ xử lý Hình 1.1: Sơ đồ khối của một hệ thống nhúng giản lượt Luận văn Thạc sĩ 1 Nguyễn Văn Thanh Chương 1: Giới Thiệu CBHD: T.S Phan Hồng Phương Th.S. Hồ Trung Mỹ Hình 1.1 minh họa một cách chung nhất của một hệ thống nhúng. Phần lớn các hệ thống nhúng có những ứng dụng riêng biệt, được thiết kế để đáp ứng cho những yêu cầu ứng dụng riêng. Có một sự khác biệt lớn giữa hệ thống phần cứng và phần mềm khi dùng trong những ứng dụng khác nhau. Vì thế, hầu hết phầm mềm được thiết kế cho một hệ thống nhúng không thể chạy trong một hệ thống khác mà không có sự sửa đổi đáng kể nào. Sự phát triển một hệ nhúng là sự kết hợp nhuần nhuyễn giữa phần cứng và phần mềm, nên công nghệ gắn liền với nó cũng chính là sự phối hợp giữa các giải pháp cho phần cứng và mềm. Vì tính chuyên biệt của thiết bị và hệ nhúng, các nền phần cứng cũng được chế tạo để ưu tiên đáp ứng cho chức năng hay nhiệm vụ cụ thể của yêu cầu thiết kế đặt ra, từ đơn giản đến phức tạp. Đó cũng là sự kết hợp đa dạng và sự ra đời của các hệ nhúng nhằm thỏa mãn các ứng dụng đa dạng đó. Với mỗi một nền phần cứng thường có những đặc thù riêng kèm theo một giải pháp phát triển phần mềm tối ưu tương ứng. Không có một giải pháp nào chung và chuẩn tắc cho việc thiết kế cụ thể của tất cả các hệ nhúng. Thông thường, các nhà phát triển và cung cấp phần cứng cũng là nhà cung cấp giải pháp phần mềm hoặc công cụ phát triển phần mềm kèm theo. Rất phổ biến hiện nay, các chíp vi điều khiển cũng như nhiều các chíp xử lý nhúng khác đều có các hệ phát triển (Starter Kit hay Emulator) hỗ trợ cho người ứng dụng và xây dựng hệ nhúng với hiểu biết hạn chế về phần cứng. Ngôn ngữ mã hoá cho phần mềm nhúng hiện nay thường dùng là ngôn ngữ C (hoặc gần như C) thay vì phải viết hoàn toàn bằng ngôn ngữ Assembly. Điều này cho phép các nhà thiết kế tối ưu và đơn giản hóa rất nhiều các bước phát triển và xây dựng hệ nhúng. Trong xu thế phát triển không ngừng và nhằm thoả mãn được nhu cầu phát triển nhanh và hiệu quả, có rất nhiều công nghệ cho phép thực thi các giải pháp hiệu quả cho hệ nhúng. Đứng sau sự phổ cập rộng rãi của các nền phần cứng ứng dụng chíp vi điều khiển là các kỹ thuật phát triển phần mềm kèm theo. Hiện nay có rất nhiều loại kiến trúc CPU được sử dụng trong thiết kế hệ nhúng như ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR, Luận văn Thạc sĩ 2 Nguyễn Văn Thanh Chương 1: Giới Thiệu CBHD: T.S Phan Hồng Phương Th.S. Hồ Trung Mỹ Renesas H8, SH, V850, FR-V, M32R, Z80, Z8 … . Các hệ thống nhúng này thường có các hệ điều hành nhúng riêng. Các hệ điều hành dùng trong các hệ thống nhúng nổi trội hiện nay bao gồm Embedded Linux, VxWorks, Win CE, Lynyos, BSD, Green Hills, QNX và DOS. Hệ thống nhúng giao tiếp với bên ngoài thông qua các thiết bị ngoại vi. Phần mềm của hệ thống nhúng cũng được phát triển nhờ việc sử dụng các chương trình biên dịch (compiler), chương trình dịch hợp ngữ (assembler) hoặc các công cụ gỡ rối (debugger). Các công cụ phần mềm có thể được tạo ra bởi các công ty phần mềm chuyên về hệ thống nhúng hoặc được chuyển hóa từ các công cụ phát triển phần mềm GNU. Ứng dụng của hệ thống nhúng hiện nay ngày càng trở nên phức tạp, đòi hỏi các nhân điều khiển cần có cấu hình mạnh hơn, đáp ứng thời gian thực tốt hơn . ARM là nhà cung cấp hàng đầu của các bộ xử lý nhúng 32-bit với tập lệnh đơn giản hoá (RISC), chiếm lĩnh hơn 75% thị phần trên thế giới và có hơn 10 tỷ thiết bị sử dụng ARM đã được bán ra cho tới nay. Bộ xử lý của ARM được nhiều nhà sản xuất vi xử lý lớn như Analog Devices, Atmel, Luminary Micro, NXP, Freescale Semiconductor, Intel, Texas Instruments… sử dụng. Tại Việt Nam, nhiều người cũng đã sử dụng bộ xử lý ARM để thiết kế hệ thống nhúng trong nhiều ứng dụng khác nhau. PNLab AT91SAM7S256 Evaluation Board (AT91SAM7S_EB) là một mạch phát triển cơ bản để học tập các ứng dụng trên nền ARM7-TDMI, với các cấu hình từ cơ bản đến nâng cao RS232, USB, SD/MMC, Keypad, LED, ADC… . AT91SAM7S256 là một vi điều khiển hiệu năng cao thuộc dòng ARM7TDMI được phát triển bởi Atmel – một trong các nhà sản xuất bán dẫn hàng đầu thế giới. AT91SAM7S256 chạy ở tốc độ tối đa 60MHz, với 256kByte bộ nhớ Flash, 64kByte bộ nhớ RAM, và đầy đủ các ngoại vi cần thiết. AT91SAM7S_EB là một hệ phát triển cho phép các kỹ sư dễ dàng tiếp cận và làm việc một cánh nhanh chóng với ARM AT91SAM7S256. Đặc biệt, board có hỗ trợ chế độ lập trình BOOT ASSISTANT của Atmel, có khả năng nạp chương trình trực tiếp qua cổng USB hoặc RS232 mà không cần đến mạch nạp JTAG.Page Luận văn Thạc sĩ 3 Nguyễn Văn Thanh Chương 1: Giới Thiệu CBHD: T.S Phan Hồng Phương Th.S. Hồ Trung Mỹ Hình 1.2: Kit phát triển PNLab AT91SAM7S256 Evaluation Board 2 Để lập trình nhúng cho một vi điều khiển ARM, chúng ta thường gặp một số khó khăn trong xử lý lỗi và thực thi chương trình, tiêu tốn nhiều thời gian và thường sinh ra nhiều lỗi. Người lập trình vẫn còn do dự trong việc chọn lựa những giải pháp lập trình cho vi điều khiển nhằm đạt hiệu quả cao về tính tích hợp và độ linh hoạt nhằm gia tăng tính năng ứng dụng. Những khó khăn mà người lập trình thường gặp trong việc phát triển ứng dụng cho những dòng vi điều khiển thế hệ mới là việc nghiên cứu, viết mã, gỡ rối thông qua các công cụ khá phức tạp. Để việc học tập, nghiên cứu, thiết kế ứng dụng vi điều khiển ARM đạt hiệu quả, yêu cầu cần có nhiều công cụ hỗ trợ hơn. Trong đó, việc thiết kế phần mềm hổ trợ, tiện ích đối với người sử dụng các loại kit vi điều khiển phát triển hiện nay là rất cần thiết. Với sự phát triển nhanh của công nghệ, các công cụ phát triển phần mềm ngày càng trở nên hiện đại, nhưng việc lập trình ứng dụng vẫn còn là một công việc vô cùng chi tiết, tỉ mỉ và đòi hỏi nhiều thời gian, công sức của người lập trình. Chính điều này đã thúc đẩy sự phát triển của một kỹ thuật lập trình sinh mã tự động Luận văn Thạc sĩ 4 Nguyễn Văn Thanh Chương 1: Giới Thiệu CBHD: T.S Phan Hồng Phương Th.S. Hồ Trung Mỹ nhằm tạo ra mã chương trình một cách tự động hóa, giảm bớt gánh nặng cho các lập trình viên và làm cho công việc lập trình trở nên đơn giản hơn. Lập trình sinh mã tự động cho hệ nhúng thời gian thực là một kỹ thuật đang được ứng dụng mạnh mẽ. Sử dụng kỹ thuật này, các nhà thiết kế công cụ phần mềm sẽ dể dàng hướng đến việc thiết kế một giao diện thân thiện hơn đến người dùng, mở rộng phạm vi sử dụng cho nhiều đối tượng, đa dạng hóa về hình thức lập trình, tối ưu hóa thời gian thực thi dự án. Chẳn hạn như bộ công cụ môđun nhúng LabVIEW của hãng National Instruments, dùng cho bộ vi điều khiển ARM. Đây là một sự mở rộng của phần mềm thiết kế bằng đồ họa (ngôn ngữ lập trình đồ họa). LabVIEW hướng vào các dòng vi điều khiển ARM 7™, ARM 9™ và Cortex™M3. Sử dụng các môđun LabVIEW, lập trình viên có thể ứng dụng khả năng lập trình lưu đồ đồ họa của LabVIEW cho tất cả các thành phần của bộ vi điều khiển ARM, bao gồm cả nhập/xuất tín hiệu analog và digital (I/O), đạt hiệu quả cao hơn và tiết kiệm nhiều thời gian hơn . Trong luận văn này, để xây dựng trình tạo ứng dụng “ARM_based application builder” nhằm hổ trợ lập trình ứng dụng trên kit phát triển AT91SAM7S_EB, chúng tôi xây dựng một chương trình tự động sinh mã mới dựa trên kỹ thuật lập trình sinh mã tự động và sử dụng thư viện MFC sẵn có trong phần mềm Visual C++ 6.0. Mã nguồn (ngôn ngữ mô tả ) Mã đích (file BIN) Bộ sinh mã C Trình nạp SAM_BA Trình liên kết Mã C (file C) Kết nối USB Mã đích (file BIN) Board AT91SAM7S_EB Hình 1.3: Sơ đồ khối của bộ tạo “ARM_based application builder” Chương trình này sẽ thực hiện ba nhiệm vụ chính: Luận văn Thạc sĩ 5 Nguyễn Văn Thanh Chương 1: Giới Thiệu CBHD: T.S Phan Hồng Phương Th.S. Hồ Trung Mỹ - Tự động tạo ra mã C từ mã nguồn (source code) ở đầu vào, mã nguồn được người dùng mô tả theo cấu trúc hệ thống. - Tự động tạo ra mã đích (target code) từ mã C được sinh ra, mã đích được định dạng là mã nhị phân (BIN). - Nạp mã đích vào bộ nhớ Flash của AT91SAM7S256 để thực thi ứng dụng. Trong đó, bộ sinh mã C thực hiện nhiệm vụ thu nhận dữ liệu từ mã nguồn (suorce code) và tự động sinh ra mã C ở đầu ra. Mã nguồn được người dùng lập trình theo định dạng cho trước. Định dạng mã nguồn trong ứng dụng này dựa theo kiến trúc mô tả phần cứng dưới dạng cấu trúc (structure). Các trình tạo ứng dụng (application builder) cũng sẽ được thực hiện thông qua thủ tục gọi hàm từ mã C này. Các trình tạo ứng dụng đã được lập trình trước đó và được lưu trữ trong một header file. Một chương trình liên kết thực hiện nhiệm vụ liên kết các thành phần có liên quan để tự động sinh mã đích (target code). Trong quá trình này, công cụ biên dịch Keil µvision3 IDE cũng được sử dụng, kết hợp với một số lệnh liên kết (makefile) khác để tạo ở ra mã thực thi dưới dạng file .bin ở đầu ra. Chương trình liên kết các quá trình sinh mã trên được thực hiện trong ứng dụng MFC của bộ Visual C++ 6.0, nó sẽ thực hiện sự liên kết các thành phần cần thiết giúp bộ sinh mã thực hiện việc tạo mã một cách tự động. Mã đích được sinh ra có phần đuôi mở rộng là .bin và được đặt trong một thư mục được quyết định bởi bộ tạo mã đích. Người lập trình có thể sử dụng file BIN này bất cứ lúc nào. Để chạy ứng dụng trên kit AT91SAM7S_EB, người lập trình nạp mã đích (target code) vào AT91SAM7S_EB bất cứ lúc nào bằng phần mềm SAM Boot Assistant (SAM-BA™) sẵn có. Công cụ tự sinh mã mới này có thể được điều chỉnh để sử dụng cho các loại vi điều khiển ARM khác, mã đích được sinh ra cũng có thể được điều chỉnh ở dạng mã Hexa hoặc mã Assambly. Nội dung luận văn gồm các chương như sau : Chương 1 giới thiệu tổng quan về việc xây dựng trình tạo ứng dụng cho ARM. Luận văn Thạc sĩ 6 Nguyễn Văn Thanh Chương 1: Giới Thiệu CBHD: T.S Phan Hồng Phương Th.S. Hồ Trung Mỹ Chương 2 trình bày về sự vượt trội của công nghệ ARM; đặc tả và các tính năng của vi điều khiển Atmel AT91SAM7S256; kit phát triển PNLab AT91SAM7S Evaluation Board và các tính năng chủ yếu của nó. Chương 3 trình bày về môi trường phát triển hệ thống nhúng sử dụng ARM; các phần mềm cần thiết cho một hệ thống nhúng; kỹ thuật lập trình ứng dụng với vi điều khiển Atmel AT91SAM7S256; công cụ phát triển ARM; công cụ AT91 ISP/SAM-BA. Chương 4 giới thiệu về kỹ thuật lập trình sinh mã tự động cho hệ thống nhúng thời gian thực; phát triển phần mềm tự sinh mã cho hệ thống nhúng; bài học kinh nghiệm, ứng dụng và hướng phát triển của kỹ thuật lập trình tự sinh mã; phương án thiết kế bộ sinh mã tự động mới cho AT91SAM7S256 . Chương 5 xây dựng chương trình tạo ứng dụng “ARM_Based application builder” trên kit phát triển PNLab AT91SAM7S Evaluation Board. Chương 6 trình bày kết quả thực nghiệm. Kết luận và hướng phát triển đề tài. Luận văn Thạc sĩ 7 Nguyễn Văn Thanh
- Xem thêm -

Tài liệu liên quan