Đồ án Thiết kế, tích hợp và phát triển phần cứng, phần mềm hệ nhúng Armadillo-300 cho phép truyền video trên mạng WLAN và mạng Ad-hoc

Mục lục

Lời nói đầu 1

Tóm tắt công trình 2

Abstract 3

Mục lục 4

Danh mục hình vẽ 7

1.Đặt vấn đề 9

1.1 Giới thiệu về mạng Ad-hoc 9

1.2 Giới thiệu về hệ nhúng 11

1.2.1 Định nghĩa hệ nhúng (Embedded System) 11

1.2.2 Lịch sử 12

1.2.3 Đặc điểm 13

1.2.4 Giao diện 14

1.2.5 Kiến trúc CPU 14

1.2.6 Thiết bị ngoại vi 15

1.2.7 Công cụ phát triển 15

1.2.8 Độ tin cậy 16

1.2.9 Xu hướng phát triển của hệ nhúng 17

1.2.8 Thách thức và các vấn đề tồn tại của hệ nhúng 17

1.2.9 Hệ nhúng có hệ điều hành 18

1.3 Nhu cầu thực tiễn 21

1.4 Mục tiêu đề tài 21

2. Thiết kế hệ thống 22

2.1 Mô hình và cấu trúc 22

2.2 Board nhúng sử dụng 25

2.2.1 Giới thiệu Armadillo-300 25

a. Chíp vi xử lý 26

b. IEEE802.11a/b/g WLAN and Ethernet 26

c. Hệ điều hành 26

d. Bảo mật và IPv6 26

e. Giao tiếp USB, CompactFlash và LCD 26

2.2.2 Cách boot board mạch 28

2.2.3 Cách nạp file image vào board mạch 30

3. Môi trường phát triển ứng dụng cho bo nhúng (ATDE) 31

3.1 Giới thiệu về ATDE 31

3.2 Biên dịch file image cho board nhúng trên ATDE 32

3.3 Cross-compile trên ATDE 33

3.3.1 Giới thiệu Cross-compile trên Linux 33

3.3.2 Biên dịch chương trình “Hello world” 34

3.3.3 Nạp các ứng dụng xuống Armadillo-300 35

3.4 Kiến trúc chức năng hệ thống 36

3.5 Mô tả chức năng và hoạt động 36

4. Triển khai thực hiện. 37

4.1 Tiến trình nghiên cứu triển khai 37

4.2 Cấu hình mạng Ad-hoc cho hệ nhúng 39

4.3 Triển khai phần mềm định tuyến trên hệ nhúng 39

4.3.1 Giới thiệu về OLSRD 39

4.3.2 Triển khai OLSRD trên hệ nhúng 40

4.4 Triển khai driver cho webcam trên hệ nhúng 42

4.4.1 Tiến trình thực hiện 42

4.4.2 Giới thiệu gói phần mềm GSPCA 42

4.4.3 Triển khai GSPCA 42

4.5 Triển khai phần mềm truyền video 45

4.5.1 Giới thiệu về các phần mềm truyền video 45

4.5.2 Triển khai mjpeg-streamer trên hệ nhúng 45

4.6 Phát triển giao tiếp cổng COM cho hệ nhúng 46

4.6.1 Cổng COM trên bo nhúng Armadillo-300 46

4.6.2 Lập trình nối tiếp trên Linux 48

a. Cơ sở giao tiếp nối tiếp 48

b. RS 232 48

c. Định nghĩa mức tín hiệu 48

d. Lập trình với cổng nối tiếp 49

e. Cấu hình cho cổng COM 52

4.6.3 Phát triển chương trình điều khiển độ phần giải video qua cổng COM 55

4.7 Các module chính 57

4.7.1 Module Nghiên cứu về hệ nhúng và xây dựng mạng ad-hoc trên hệ nhúng. 57

4.7.2 Module triển khai video streaming trên server. 57

4.7.3 Triển khai kết nối mạng. 57

4.8 Giao diện người - máy 57

4.9 Tích hợp hệ thống 58

5. Kết quả đạt được 59

5.1 Phần cứng 59

5.2 Phần mềm 61

6. Kết luận 64

Tài liệu tham khảo 65

 

 

 

doc67 trang | Chia sẻ: lethao | Lượt xem: 1954 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Đồ án Thiết kế, tích hợp và phát triển phần cứng, phần mềm hệ nhúng Armadillo-300 cho phép truyền video trên mạng WLAN và mạng Ad-hoc, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
được phát triển bởi Charles Stark Draper tại phòng thí nghiệm của trường đại học MIT. Hệ thống nhúng được sản xuất hàng loạt đầu tiên là máy hướng dẫn cho tên lửa quân sự vào năm 1961. Nó là máy hướng dẫn Autonetics D-17, được xây dựng sử dụng những bóng bán dẫn và một đĩa cứng để duy trì bộ nhớ. Khi Minuteman II được đưa vào sản xuất năm 1996, D-17 đã được thay thế với một máy tính mới sử dụng mạch tích hợp. Tính năng thiết kế chủ yếu của máy tính Minuteman là nó đưa ra thuật toán có thể lập trình lại sau đó để làm cho tên lửa chính xác hơn, và máy tính có thể kiểm tra tên lửa, giảm trọng lượng của cáp điện và đầu nối điện. Từ những ứng dụng đầu tiên vào những năm 1960, các hệ thống nhúng đã giảm giá và phát triển mạnh mẽ về khả năng xử lý. Bộ vi xử lý đầu tiên hướng đến người tiêu dùng là Intel 4004, được phát minh phục vụ máy tính điện tử và những hệ thống nhỏ khác. Tuy nhiên nó vẫn cần các chip nhớ ngoài và những hỗ trợ khác. Vào những năm cuối 1970, những bộ xử lý 8 bit đã được sản xuất, nhưng nhìn chung chúng vẫn cần đến những chip nhớ bên ngoài. Vào giữa thập niên 80, kỹ thuật mạch tích hợp đã đạt trình độ cao dẫn đến nhiều thành phần có thể đưa vào một chip xử lý. Các bộ vi xử lý được gọi là các vi điều khiển và được chấp nhận rộng rãi. Với giá cả thấp, các vi điều khiển đã trở nên rất hấp dẫn để xây dựng các hệ thống chuyên dụng. Đã có một sự bùng nổ về số lượng các hệ thống nhúng trong tất cả các lĩnh vực thị trường và số các nhà đầu tư sản xuất theo hướng này. Ví dụ, rất nhiều chip xử lý đặc biệt xuất hiện với nhiều giao diện lập trình hơn là kiểu song song truyền thống để kết nối các vi xử lý. Vào cuối những năm 80, các hệ thống nhúng đã trở nên phổ biến trong hầu hết các thiết bị điện tử và khuynh hướng này vẫn còn tiếp tục cho đến nay. Cho đến nay, khái niệm hệ thống nhúng được nhiều người chấp nhận nhất là: hệ thống thực hiện một số chức năng đặc biệt có sử dụng vi xử lý. Không có hệ thống nhúng nào chỉ có phần mềm. Đặc điểm Hệ thống nhúng thường có một số đặc điểm chung như sau: Các hệ thống nhúng được thiết kế để thực hiện một số nhiệm vụ chuyên dụng chứ không phải đóng vai trò là các hệ thống máy tính đa chức năng. Một số hệ thống đòi hỏi ràng buộc về tính hoạt động thời gian thực để đảm bảo độ an toàn và tính ứng dụng; một số hệ thống không đòi hỏi hoặc ràng buộc chặt chẽ, cho phép đơn giản hóa hệ thống phần cứng để giảm thiểu chi phí sản xuất. Một hệ thống nhúng thường không phải là một khối riêng biệt mà là một hệ thống phức tạp nằm trong thiết bị mà nó điều khiển. Phần mềm được viết cho các hệ thống nhúng được gọi là firmware và được lưu trữ trong các chip bộ nhớ chỉ đọc (read-only memory) hoặc bộ nhớ flash chứ không phải là trong một ổ đĩa. Phần mềm thường chạy với số tài nguyên phần cứng hạn chế: không có bàn phím, màn hình hoặc có nhưng với kích thước nhỏ, bộ nhớ hạn chế Sau đây, ta sẽ đi sâu, xem xét cụ thể đặc điểm của các thành phần của hệ thống nhúng Giao diện Các hệ thống nhúng có thể không có giao diện (đối với những hệ thống đơn nhiệm) hoặc có đầy đủ giao diện giao tiếp với người dùng tương tự như các hệ điều hành trong các thiết bị để bàn. Đối với các hệ thống đơn giản, thiết bị nhúng sử dụng nút bấm, đèn LED và hiển thị chữ cỡ nhỏ hoặc chỉ hiển thị số, thường đi kèm với một hệ thống menu đơn giản. Còn trong một hệ thống phức tạp hơn, một màn hình đồ họa, cảm ứng hoặc có các nút bấm ở lề màn hình cho phép thực hiện các thao tác phức tạp mà tối thiểu hóa được khoảng không gian cần sử dụng; ý nghĩa của các nút bấm có thể thay đổi theo màn hình và các lựa chọn. Các hệ thống nhúng thường có một màn hình với một nút bấm dạng cần điểu khiển (joystick button). Sự phát triển mạnh mẽ của mạng toàn cầu đã mang đến cho những nhà thiết kế hệ nhúng một lựa chọn mới là sử dụng một giao diện web thông qua việc kết nối mạng. Điều này có thể giúp tránh được chi phí cho những màn hình phức tạp nhưng đồng thời vẫn cung cấp khả năng hiển thị và nhập liệu phức tạp khi cần đến, thông qua một máy tính khác. Điều này là hết sức hữu dụng đối với các thiết bị điều khiển từ xa, cài đặt vĩnh viễn. Ví dụ, các router là các thiết bị đã ứng dụng tiện ích này Kiến trúc CPU Các bộ xử lý trong hệ thống nhúng có thể được chia thành hai loại: vi xử lý và vi điều khiển. Các vi điều khiển thường có các thiết bị ngoại vi được tích hợp trên chip nhằm giảm kích thước của hệ thống. 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, Renesas H8, SH, V850, FR-V, M32R, Z80, Z8 … Điều này trái ngược với các loại máy tính để bàn, thường bị hạn chế với một vài kiến trúc máy tính nhất định. Các hệ thống nhúng có kích thước nhỏ và được thiết kế để hoạt động trong môi trường công nghiệp thường lựa chọn PC/104 và PC/104++ làm nền tảng. Những hệ thống này thường sử dụng DOS, Linux, NetBSD hoặc các hệ điều hành nhúng thời gian thực như QNX hay VxWorks. Còn các hệ thống nhúng có kích thước rất lớn thường sử dụng một cấu hình thông dụng là hệ thống on chip (System on a chip – SoC), một bảng mạch tích hợp cho một ứng dụng cụ thể (an application-specific integrated circuit – ASIC). Sau đó nhân CPU được mua và thêm vào như một phần của thiết kế chip. Một chiến lược tương tự là sử dụng FPGA (field-programmable gate array) và lập trình cho nó với những thành phần nguyên lý thiết kế bao gồm cả CPU. Thiết bị ngoại vi 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, ví dụ như: Serial Communication Interfaces (SCI): RS-232, RS-422, RS-485... Synchronous Serial Communication Interface: I2C, JTAG, SPI, SSC và ESSI Universal Serial Bus (USB) Networks: Controller Area Network, LonWorks... Bộ định thời: PLL(s), Capture/Compare và Time Processing Units Discrete IO: General Purpose Input/Output (GPIO) Công cụ phát triển Tương tự như các sản phẩm phần mềm khác, phần mềm hệ thống nhúng cũng được phát triển nhờ việc sử dụng các trình biên dịch (compilers), chương trình dịch hợp ngữ (assembler) hoặc các công cụ gỡ rối (debuggers). Tuy nhiên, các nhà thiết kế hệ thống nhúng có thể sử dụng một số công cụ chuyên dụng như: Bộ gỡ rối mạch hoặc các chương trình mô phỏng (emulator) Tiện ích để thêm các giá trị checksum hoặc CRC vào chương trình, giúp hệ thống nhúng có thể kiểm tra tính hợp lệ của chương trình đó. Đối với các hệ thống xử lý tín hiệu số, người phát triển hệ thống có thể sử dụng phần mềm workbench như MathCad hoặc Mathematica để mô phỏng các phép toán. Các trình biên dịch và trình liên kết (linker) chuyên dụng được sử dụng để tối ưu hóa một thiết bị phần cứng. Một hệ thống nhúng có thể có ngôn ngữ lập trình và công cụ thiết kế riêng của nó hoặc sử dụng và cải tiến từ một ngôn ngữ đã có sẵn. 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 dụng về hệ thống nhúng hoặc chuyển đổi từ các công cụ phát triển phần mềm GNU. Đôi khi, các công cụ phát triển dành cho máy tính cá nhân cũng được sử dụng nếu bộ xử lý của hệ thống nhúng đó gần giống với bộ xử lý của một máy PC thông dụng. Độ tin cậy Các hệ thống nhúng thường nằm trong các cỗ máy được kỳ vọng là sẽ chạy hàng năm trời liên tục mà không bị lỗi hoặc có thể khôi phục hệ thống khi gặp lỗi. Vì thế, các phần mềm hệ thống nhúng được phát triển và kiểm thử một cách cẩn thận hơn là phần mềm cho máy tính cá nhân. Ngoài ra, các thiết bị rời không đáng tin cậy như ổ đĩa, công tắc hoặc nút bấm thường bị hạn chế sử dụng. Việc khôi phục hệ thống khi gặp lỗi có thể được thực hiện bằng cách sử dụng các kỹ thuật như watchdog timer – nếu phần mềm không đều đặn nhận được các tín hiệu watchdog định kì thì hệ thống sẽ bị khởi động lại. Một số vấn đề cụ thể về độ tin cậy như: Hệ thống không thể ngừng để sửa chữa một cách an toàn, ví dụ như ở các hệ thống không gian, hệ thống dây cáp dưới đáy biển, các đèn hiệu dẫn đường,… Giải pháp đưa ra là chuyển sang sử dụng các hệ thống con dự trữ hoặc các phần mềm cung cấp một phần chức năng. Hệ thống phải được chạy liên tục vì tính an toàn, ví dụ như các thiết bị dẫn đường máy bay, thiết bị kiểm soát độ an toàn trong các nhà máy hóa chất,… Giải pháp đưa ra là lựa chọn backup hệ thống. Nếu hệ thống ngừng hoạt động sẽ gây tổn thất rất nhiều tiền của ví dụ như các dịch vụ buôn bán tự động, hệ thống chuyển tiền, hệ thống kiểm soát trong các nhà máy … Xu hướng phát triển của hệ nhúng Sau máy tính lớn (mainframe), PC và Internet thì hệ thống nhúng đang là làn sóng đổi mới thứ 3 trong công nghệ thông tin và truyền thông. Xu hướng phát triển của các hệ thống nhúng hiện nay là: - Phần mềm ngày càng chiếm tỷ trọng cao và đã trở thành một thành phần cấu tạo nên thiết bị bình đẳng như các phần cơ khí, linh kiện điện tử, linh kiện quang học…. - Các hệ nhúng ngày càng phức tạp hơn đáp ứng các yêu cầu khắt khe về thời gian thực, tiêu ít năng lượng và hoạt động tin cậy ổn định hơn. - Các hệ nhúng ngày càng có độ mềm dẻo cao đáp ứng các yêu cầu nhanh chóng đưa sản phẩm ra thương trường, có khả năng bảo trì từ xa, có tính cá nhân cao. - Các hệ nhúng ngày càng có khả năng hội thoại cao, có khả năng kết nối mạng và hội thoại được với các đầu đo cơ cấu chấp hành và với người sử dụng,. - Các hệ nhúng ngày càng có tính thích nghi, tự tổ chức cao có khả năng tái cấu hình như một thực thể, một tác nhân. - Các hệ nhúng ngày càng có khả năng tiếp nhận năng lượng từ nhiều nguồn khác nhau (ánh sáng, rung động, điện từ trường, sinh học….) để tạo nên các hệ thống tự tiếp nhận năng lượng trong quá trình hoạt động. 1.2.8 Thách thức và các vấn đề tồn tại của hệ nhúng Hệ thống nhúng hiện nay còn phải đối mặt với các vấn đề sau: Độ phức tạp của sự liên kết đa ngành phối hợp cứng - mềm. Độ phức tạp của hệ thống tăng cao do nó kết hợp nhiều lĩnh vực đa ngành, kết hợp phần cứng - mềm, trong khi các phương pháp thiết kế và kiểm tra chưa chín muồi. Khoảng cách giữa lý thuyết và thực hành lớn và còn thiếu các phương pháp và lý thuyết hoàn chỉnh cho khảo sát phân tích toàn cục các hệ nhúng. Thiếu phương pháp tích hợp tối ưu giữa các thành phần tạo nên hệ nhúng bao gồm lý thuyết điều khiển tự động, thiết kế máy, công nghệ phần mềm, điện tử, vi xử lý, các công nghệ hỗ trợ khác. Thách thức đối với độ tin cậy và tính mở của hệ thống: Do hệ thống nhúng thường phải hội thoại với môi trường xung quanh nên nhiều khi gặp những tình huống không được thiết kế trước dễ dẫn đến hệ thống bị loạn. Trong quá trình hoạt động một số phần mềm thường phải chỉnh lại và thay đổi nên hệ thống phần mềm có thể không kiểm soát được. Đối với hệ thống mở, các hãng thứ 3 đưa các module mới, thành phần mới vào cũng có thể gây nên sự hoạt động thiếu tin cậy 1.2.9 Hệ nhúng có hệ điều hành Khác với PC thường chạy trên nền hệ điều hành Windows hoặc UNIX, các hệ thống nhúng có các hệ điều hành nhúng riêng của mình. Các hệ điều hành dùng trong các hệ nhúng nổi trội hiện nay bao gồm Embedded Linux, VxWorks, Win CE, Lynyos, BSD, Green Hills, QNX và DOS. Embedded Linux hiện đang phát triển mạnh và chiếm vị trí số 1. Hiện nay 40% các nhà thiết kế các hệ nhúng cân nhắc đầu tiên sử dụng Embedded Linux cho các ứng dụng mới của mình và sau đó mới đến các hệ điều hành nhúng truyền thống nhu VxWorks, Win CE. Các đối thủ cạnh tranh của Embedded Linux hiện nay là các hệ điều hành nhúng tự tạo và Windows CE. Sở dĩ Embedded Linux có sự phát triển vượt bậc là do có sức hấp dẫn đối với các ứng dụng không đòi hỏi thời gian thực như set-top, các hệ server nhúng, các ứng dụng giá thành thấp và đòi hỏi thời gian đưa sản phẩm ra thị trường nhanh. Mặt khác Linux là phần mềm mã nguồn mở nên bất kỳ ai cũng có thể hiểu và thay đổi theo ý mình. Linux cũng là một hệ điều hành có cấu trúc module và chiếm ít bộ nhớ trong khi Windows không có các đặc tính ưu việt này. Bên cạnh các ưu điểm trên thì Embedded Linux cũng có các nhược điểm sau: - Embedded Linux không phải là hệ điều hành thời gian thực nên có thể không phù hợp với một số ứng dụng như điều khiển quá trình, các ứng dụng có các yêu cầu xử lý khẩn cấp. - Embedded Linux thiếu một chuẩn thống nhất và không phải là sản phẩm của một nhà cung cấp duy nhất nên khả năng hỗ trợ kỹ thuật ít. Hình 2 Board nhúng Do thị trường của các sản phẩm nhúng tăng mạnh nên các nhà sản xuất ngày càng sử dụng các hệ điều hành nhúng để bảo đảm sản phẩm có sức cạnh tranh và Embedded Linux đang là sản phẩm hệ điều hành nhúng có uy tín chiếm vị trí số 1 trong những năm tới. Phần mềm nhúng (Embedded Software): Phần mềm nhúng là phần mềm tạo nên phần hồn, phần trí tuệ của các sản phẩm nhúng. Phần mềm nhúng ngày càng có tỷ lệ giá trị cao trong giá trị của các sản phẩm nhúng. Hiện nay phần lớn các phần mềm nhúng nằm trong các sản phẩm truyền thông và các sản phẩm điện tử tiêu dùng (consumer electronics), tiếp đến là trong các sản phẩm ô tô, phương tiện vận chuyển, máy móc thiết bị y tế, các thiết bị năng lượng, các thiết bị cảnh báo bảo vệ và các sản phẩm đo và điều khiển. Để có thể tồn tại và phát triển, các sản phẩm công nghiệp và tiêu dùng cần phải thường xuyên đổi mới và ngày càng có nhiều chức năng tiện dụng và thông minh hơn. Các chức năng này phần lớn do các chương trình nhúng tạo nên. Phần mềm nhúng là một lĩnh vực công nghệ then chốt cho sự phát triển kinh tế của nhiều quốc gia trên thế giới như Nhật Bản, Hàn Quốc, Phần Lan và Trung quốc. Tại Mỹ có nhiều chương trình hỗ trợ của Nhà nước để phát triển các hệ thống và phần mềm nhúng. Hàn Quốc có những dự án lớn nhằm phát triển công nghệ phần mềm nhúng như các thiết bị gia dụng nối mạng Internet, hệ thống phần mềm nhúng cho phát triển thành phố thông minh, dự án phát triển ngành công nghiệp phần mềm nhúng, trung tâm hỗ trợ các ngành công nghiệp hậu PC..vv. Hàn Quốc cũng chấp nhận Embedded Linux như một hệ điều hành chủ chốt trong việc phát triển các sản phẩm nhúng của mình. Thuỵ Điển coi phát triển các hệ nhúng có tầm quan trọng chiến lược cho sự phát triển của đất nước. Phần Lan có những chính sách quốc gia tích cực cho nghiên cứu phát triển các hệ nhúng đặc biệt là các phần mềm nhúng. Những quốc gia này còn thành lập nhiều viện nghiên cứu và trung tâm phát triển các hệ nhúng. Nhu cầu thực tiễn Ngày nay, việc nắm bắt thông tin tức thời, chính xác đang ngày càng đóng vai trò quan trọng. Trong nhiều lĩnh vực nó còn là nhân tố quyết định thành công. Do vậy, những thiết bị nhỏ gọn sử dụng mạng không dây cho phép truyền tải video hiện trường sẽ đem lại lợi ích to lớn. Với sự phát triển không ngừng của mạng không dây, việc truyền tải video sẽ trở nên linh hoạt và các thiết bị nhỏ gọn sẽ chiếm ưu thế khi phải thao tác ở những địa hình phức tạp. Hiện nay trên thế giới những ứng dụng sử dụng truyền video ngày càng phát triển, được ứng dụng những công nghệ mới và đã đạt được rất nhiều bước tiến quan trọng. Nhưng đề tài truyền video hiện trường trên mạng không dây tích hợp trên bo nhúng vẫn còn là một lĩnh vực khá mới mẻ và tiềm năng. Một số các sản phẩm cho phép ghi lại video hiện trường như một chiếc camera cầm tay nhưng lại không cho phép truyền đi trên mạng wireless. Một số sản phẩm khác cho phép truyền video trực tuyến nhưng thiết bị quá cồng kềnh và không thích hợp khi phải di chuyển: công nghệ Voice over IP ứng dụng trên máy tính, truyền hình trực tiếp,… Ở Việt Nam, hệ nhúng mới được phát triển vài năm trở lại đây, những thành tựu đạt được chỉ mới mang tính chất kế thừa, học hỏi và chuyển giao công nghệ. Hiện nay, sản phẩm camera mạng đầu tiên tại Việt Nam đã được công ty AMECO hợp tác với TAC sử dụng công nghệ video giám sát IP hứa hẹn một thị trường tiềm năng cho những sản phẩm tương tự. Mục tiêu đề tài Mục tiêu nghiên cứu của đề tài là truyền video từ bo nhúng tới các thiết bị trong mạng WLAN, Ad-hoc. Thiết kế hệ thống Mô hình và cấu trúc - Hệ thống gồm nhiều nút mạng khác nhau trong đó mỗi nút mạng ứng một thiết bị nhúng đặt tại hiện trường. Hình 3 Mô hình hệ thống Hình 4 Sơ đồ kết nối Video Streaming Hệ điều hành nhúng (embedded OS) được chọn là Linux. Điểu này cho phép người thiết kế có thể tối ưu hệ điều hành, triển khai driver cho các thiết bị ngoại vi tự thiết kế, dễ dàng kế thừa và phát triển các phần mềm sẵn có. Các thiết bị ngoại vi cho hệ thống bao gồm wifi card, camera, webcam... cho phép thiết bị nhúng có thể đóng vai trò server để truyền video. Người dùng do đó có thể dễ dàng thao tác, sử dụng thiết bị. Gói phần mềm truyền video cho phép người dùng thay đổi tham số video một cách dễ dàng. Ngoài ra, video được nhúng vào giao diện web tiếng Việt rất thân thiện với người dùng Việt Nam Board nhúng sử dụng Từ việc thiết kế như trên, bo nhúng được dùng cho hệ thống được chọn là Armadillo 300 với vi xử lý kiến trúc Arm bởi có nhiều các tính năng kỹ thuật phù hợp Giới thiệu Armadillo-300 Hình 5 Board nhúng Armadillo 300 Chíp vi xử lý Armadillo-300 là một sản phẩm của Atmark-Tecno với chíp vi xử lý NS9750, 200MHz clock, 8kB/4kB cache, hỗ trợ MMU cùng với PCI, Ethernet, USB, LCD và các giao tiếp nối tiếp trên cùng một chip, tỏa nhiệt rất ít và không cần quạt làm mát. IEEE802.11a/b/g WLAN and Ethernet Hỗ trợ module WLAN theo chuẩn IEEE802.11/a/b/g cũng như giao tiếp Ethernet 10BASE-T/100BASE-TX Hệ điều hành Hệ điều hành dùng cho board mạch là Linux (kernel 2.6), cho phép triển khai các ứng dụng mã nguồn mở một cách phong phú. Bảo mật và IPv6 Chíp vi xử lý ARM9 hỗ trợ chuẩn SSL và mã hóa IPsec đồng thời cũng hỗ trợ IPv6 Giao tiếp USB, CompactFlash và LCD Chuẩn USB 2.0 (full speed) và còn có khe cắm CompactFlash hỗ trợ các ứng dụng người dùng mà chiếm nhiều tài nguyên vùng nhớ, ngoài ra giao tiếp LCD (VGA) cho phép dùng làm thiết bị đầu cuối media hay phát triển giao diện cho ứng dụng. Hình 6 Sơ đồ khối của Armadillo-300 Cách boot board mạch Trước hết phải thiết lập jump trên board mạch như hình vẽ, JP1 và JP2 đều về vị trí 1 Hình 7 Thiết lập jump để boot Kết nối board mạch với máy tính thông qua cổng COM1 Hình 8 Sơ đồ cáp nối Phần mềm sử dụng để boot board mạch: hyper terminal; Tera Term Pro (Window PC), hay minicom (Linux). Thiết lập các thông số khi boot: Transfer rate: 115,2kbps Data length: 8bit Parity: none Stop: 1bit Flow control: none Tài khoản đăng nhập: root Pass: root Cách nạp file image vào board mạch Thiết lập jump trên board: JP1 và JP2 đều cùng vị trí 2 Phần mềm dùng để nạp: Hermit-at-win32 (Window), hay hermit (Linux) Hình 9 Hermit-at-WIN32 trên Window Lựa chọn vùng nạp file ảnh: Image Linux.bin.gz Romfs.bin.gz Region Kernel userland Đối với hệ điều hành Linux ta sử dụng lệnh sau [PC ~]$ hermit download -i linux.bin.gz -r kernel [PC ~]$ hermit download -i romfs.bin.gz -r userland Kiến trúc chức năng hệ thống Hình 11 Kiến trúc chức năng của hệ thống Hệ thống cho phép truyền video từ các thiết bị nhúng đặt tại hiện trường trên mạng Ad-hoc. Người dùng có thể tương tác với các thiết bị thông qua bàn phím, cổng COM được gắn trực tiếp hoặc laptop thông qua mạng Ad-hoc, WLAN. Mô tả chức năng và hoạt động Thiết bị nhúng đóng vai trò server sẽ truyền video và các client có thể hiển thị video thông qua web browser như Firefox, IE... Người dùng có thể điều chỉnh tham số truyền video thông qua dòng lệnh (bàn phím) hoặc cổng COM 3. Môi trường phát triển ứng dụng cho bo nhúng (ATDE) Giới thiệu về ATDE Hình 10 ATDE Atmark Techno Development Environment (ATDE) là một máy ảo Linux cung cấp môi trường phát triển cho các board mạch dòng Armadillo. ATDE bao gồm các công cụ biên dịch chéo (cross-compile) và rất nhiều các gói công cụ phát triển cần thiết khác. Dùng ATDE ta không phải tự cài đặt môi trường phát triển trên PC. Biên dịch file image cho board nhúng trên ATDE Các gói phần mềm cần thiết download: -Atmark-dist-20081018.tar.gz, Linux-2.6.12.5-at5.tar.gz Ta tiến hành các bước như sau trên ATDE: [PC ~]$ ls Linux-2.6.12.5-at5.tar.gz Atmark-dist-20081018.tar.gz [PC ~]$ tar xvzf Atmark-dist-20081018.tar.gz [PC ~]$ tar xvzf Linux-2.6.12.5-at5.tar.gz [PC ~]$ cd Atmark-dist-20081018 [PC ~/ Atmark-dist-20081018]$ ln -s ../ Linux-2.6.12.5-at5./linux-2.6.x [PC ~/ Atmark-dist-20081018]$ make config Vendor AtmarkTechno AtmarkTechno Products Armadillo-300 Libc Version None Default all settings y Customize Kernel Settings n Customize Vendor/User Settings n Update Default Vendor Settings n [PC ~/ Atmark-dist-20081018]$ make dep all [PC ~/ Atmark-dist-20081018]$ ls image/ linux.bin linux.bin.gz romfs.bin romfs.bin.gz Sau khi tạo ra các file images ta có thể tiến hành nạp xuống board mạch. Cross-compile trên ATDE Giới thiệu Cross-compile trên Linux Cross Compile là một cách thực hiện việc viết code, và compile chương trình trên máy tính chạy trên những kiến trúc khác nhau và những hệ điều hành khác nhau. Chẳng hạn ta có thể lập trình và compile chương trình trên Linux x86, để chạy được trên Solaris Ultra Sparc. Trên Linux các công cụ hỗ trợ cho việc cross-compile là miễn phí và dễ dàng tìm kiếm. Để phân biệt với các trình dịch sẵn có trên máy, các trình biên dịch chéo thường có tiền tố là tên của kiến trúc hệ thông đích, đôi khi còn có cả tên của thư viện. Ví dụ có các trình biên dịch chéo như sau: Mips-linux-gcc , M86k-linux-uclibc-gcc, Arm-linux-gnueabi-gcc… Để có thể cross-compile thì ta phải chỉ rõ trình biên dịch chéo để hệ điều hành có thể gọi đến trong quá trình biên dịch. Ta có 3 cách để chỉ ra trình biên dịch chéo như sau: Chỉnh sửa Makefile Kiến trúc CPU và trình biên dịch chéo được định nghĩa thông qua các biến ARCH và CROSS_COMPILE trong Makefile chính của các gói phần mềm. Makefile định nghĩa trình dịch như sau: CC = $(CROSS_COMPILE)gcc Cách dễ nhất để chỉ định trình biên dịch chéo là chỉnh sửa Makefile. Ví dụ với kiến trúc ARM và trình biên dịch chéo arm-linux-gcc ta sửa Makefile như sau: ARCH ?= arm CROSS_COMPILE ?= arm-linux Sử dụng lệnh make Cách thứ hai để thiết lập giá trị cho các biến ARCH và CROSS_COMPILE là thông qua lệnh make. Các giá trị của 2 biến này được gán thông qua lệnh make sẽ ghi đè lên các giá trị đã được thiết lập trước trong Makefile. Ví dụ Make ARCH=sh CROSS_COMPILE=sh-linux- xconfig Make ARCH=sh CROSS_COMPILE=sh-linux Make ARCH=sh CROSS_COMPILE=sh-linux modules_install Điều chú ý khi dùng cách này là ta luôn phải nhớ thiết lập giá trị cho các biến ARCH và CROSS_COMPILE mỗi khi đánh lệnh make. Thiết lập biến môi trường Cách thứ 3 để chỉ ra trình biên dịch chéo là thiết lập ARCH và CROSS_COMPILE như là biến môi trường trên terminal: export ARCH=arm export CROSS_COMPILE=arm-linux Với cách này ta không phải can thiệp vào Makefile cũng như không phải nhớ thiết lập giá trị khi dùng lệnh make. Biên dịch chương trình “Hello world” Dưới đây là cách biên dịch chéo (cross-compile) một chương trình đơn giản helloworld.c trên ATDE. Ta soạn thảo mã nguồn của helloworld.c như sau: #include int main(void) { printf ("Hello World! \n"); return 0;} Bình thường khi ta biên dịch để chương trình có thể chạy trên PC ta làm như sau: $ gcc hello.c –o hello Muốn biên dịch chéo để có thể tạo ra file để chạy được trên Armadillo-300 thì trên ATDE ta làm như sau: $ arm-linux-gcc –I/usr/arm-linux/include –L /usr/arm-linux/lib helloworld.c –o helloworld Nạp các ứng dụng xuống Armadillo-300 Như đã thực hiện ở trên, sau khi cross-compile ta thu được file chạy helloworld có thể chạy được trên board Armadillo-300 và cách đưa các ứng dụng này xuống board như sau: Ta copy các file chạy này vào thư mục Atmark-dist-20081018/romfs/bin/ Cấu trúc thư mục romfs là ánh xạ tương ứng với cấu trúc thư mục của Armadillo-300 do đó sau khi copy xong ta chỉ việc dùng lệnh (make image) để tạo lại các file image mới có chứa các ứng dụng mới nạp vào. Các file image này sau đó được nạp xuống board và các ứng dụng mới đã sẵn sàng hoạt động. Một điều đáng chú ý là đối với các dự án phần mềm, muốn chạy được nó còn đòi hỏi các thư viện và các file cấu hình thì mới có thể chạy thành công. Do đó ta còn cũng phải đưa các thư viện và các file cấu hình cần thiết nạp xuống bo nhúng. Triển khai thực hiện. Tiến trình nghiên cứu triển khai Quá trình nghiên cứu và triển khai hệ thống được thực hiện qua các bước cơ bản sau: Nghiên cứu về hệ nhúng, mạng Ad-hoc. Nghiên cứu triển khai ứng dụng và driver trên hệ nhúng ( webcam, wifi, chương trình video streaming, phần mềm định tuyến) Triển khai hệ thống trên mạng Ad-hoc (multi hop) với các nút mạng cơ bản là các hệ nhúng. Dưới đây là sơ đồ quá trình nghiên cứu và triển khai hệ thống: Hình 12 Tiến trình xây dựng video streaming trên hệ nhúng Cấu hình mạng Ad-hoc cho hệ nhúng Để có thể triển khai các ứng dụng trên mạng Ad-hoc thì trước hết ta phải thiết lập cấu hình mạng như sau wlanconfig ath0 destroy wlanconfig ath0 create wlandev wifi0 wlanmode adhoc iwconfig ath0 essid iwconfig ath0 enc ifconfig ath0 x.x.x.x Triển khai phần mềm định tuyến trên hệ nhúng Giới thiệu về OLSRD Optimized Link State Routing Protocol (OLSR) là giao thức định tuyến được phát triển cho mạng Mobile Adhoc Network (MANET). OLSR hoạt động như một bảng ghi,...chuyển đổi thông tin topo mạng với các node khác một cách đều đặn. Mỗi

Các file đính kèm theo tài liệu này:

  • docdo_an_Nguyen_Thanh_Nam.doc
Tài liệu liên quan