1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây

28 61 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 0,99 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY Giảng viên hướng dẫn Đặng Lê Bảo Chương Lớp NT131 M12 MMCL EN Thành viên Đỗ Phương Thảo 18521420 Võ Duy Phúc – 19522046 Nguyễn Minh Thọ 19522293 Năm học 2021 2022 MỤC LỤC Chương 1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH CONTIKI 4 1 1 Giới thiệu 4 1 2 Hệ điều hành Contiki 5 1 3 Lịch sử phát triển của Contiki 6 1 4 Tại sao sử dụng Contiki 7 Chương 2 CÁC TÍNH NĂNG CỦA.

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG

ĐỒ ÁN MÔN HỌC

HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY

Giảng viên hướng dẫn: Đặng Lê Bảo Chương

Lớp: NT131.M12.MMCL.EN

Thành viên:

Đỗ Phương Thảo - 18521420

Võ Duy Phúc – 19522046 Nguyễn Minh Thọ - 19522293

Trang 3

MỤC LỤC

Chương 1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH CONTIKI 4

1.1 Giới thiệu 4

1.2 Hệ điều hành Contiki 5

1.3 Lịch sử phát triển của Contiki 6

1.4 Tại sao sử dụng Contiki 7

Chương 2 CÁC TÍNH NĂNG CỦA CONTIKI OS 8

2.1 Các tính năng của Contiki OS 8

Chương 3 CẤU TRÚC HỆ ĐIỀU HÀNH CONTIKI 10

3.1 Cấu trúc hệ điều hành Contiki 9

3.2 Kiến trúc phân lớp hệ điều hành Contiki 11

3.3 Ngăn xếp truyền thông trong hệ điều hành Contiki 12

3.4 Protothread 16

3.5 Protothread in processes 17

3.6 Một số thư viện trong Contiki OS 18

Chương 4 SO SÁNH VỚI TINY OS 22

Chương 5 DEMO 24

5.1 Giới thiệu về công cụ mô phỏng Cooja 24

Trang 4

Chương 1: Tổng quan về hệ điều hành Contiki

1.Giới thiệu

Các đối tượng thông minh là các thiết bị đơn giản, nhỏ gọn, giá thành thấp, sử dụng nguồn năng lượng hạn chế Một trong những đặc điểm nổi bật của nút mạng các đối tượng thông minh là sự hạn chế về tài nguyên tính toán, nguồn năng lượng cung cấp và giá thành sản xuất

Với số lượng dày đặc các nút cảm biến, việc kiểm nghiêm và đánh giá chính xác hiệu quả hoạt động là một trong những thách thức của mạng cảm biến không dây trong quá trình triển khai thực tế Nhằm khắc phục những khókhăn này, nhiều hướng nghiên cứu đã tập trung vào phát triển những công cụ

mô phỏng cách thức hoạt động các nút trong mạng cảm biến Trong bài báo cáo này sẽ trình bày về hệ điều hành Contiki

Trang 5

2.Contiki OS

Contiki là một hệ điều hành mã nguồn mở được thiết kế cho các hệ thống mạng nhúng nói chung và mạng lưới các thiết bị đo nói riêng Hệ điều hành Contiki được phát triển bởi Adam Dunkels đến từ nhóm Embedded Systems của Viện Khoa học Máy tính Thụy Điển Nhóm phát triển Contiki gồm nhiều thành viên đến từ SICS, CISCO, cùng nhiều tổ chức và các trường đại học khác trên thế giới Hệ điều hành Contiki được thiết kế cho các vi điều khiển có bộ nhớ nhỏ, với thông số 2KB RAM và 40KB ROM Nhờ đó,

Contiki có thể được sử dụng cho các hệ thống nhúng

Contiki là một hệ điều hành cho các hệ thống mạng, hạn chế bộ nhớ Các ứng dụng Contiki bao gồm hệ thống chiếu sáng đường phố, giám sát âm thanh cho thành phố thông minh, giám sát bức xạ và báo động Contiki được phát hành theo giấy phép BSD (Một loại giấy phép cho phép sử dụng độc quyền và cho phép phần mềm được phát hành theo giấy phép được tích hợp vào các sản phẩm độc quyền) Hệ điều hành Contiki được lập trình bằng ngôn

Trang 6

ngữ C, hoạt động dựa trên cơ chế event-driven và có những đặc điểm phù hợpvới các hệ thống nhúng và mạng cảm biến không dây.

3.Lịch sử phát triển của Contiki

Hình 1: Lịch sử phát triển ContikiContiki bắt đầu được nghiên cứu từ năm 2001 và phát hành phiên bản đầu tiên Contiki 1.0 năm 2003 Phiên bản hiện nay của Contiki là 2.4 với nhiều thay đổi, bổ sung và phát triển vượt bậc Nhiều cơ chế, ý tưởng Contiki

đã được ứng dụng rộng rãi trong công nghiệp Điển hình như mô hình uIP được phát hành năm 2001 đã được sử dụng trong hệ thống ứng dụng của hàngtrăm công ty trong các lĩnh vực hang hải, thông tin vệ tinh, khai thác dầu mỏ,

…; mô hình Protothread được công bố đầu tiên năm 2005, sử dụng nhiều trong bộ giải mã kĩ thuật số và thiết bị cảm biến rung không dây

Trang 7

Internet Standards: Contiki là một hệ điều hành mã nguồn mở cho Internet of Things Nó kết nối các bộ vi điều khiển công suất thấp, chi phí thấp với internet và cung cung cấp mạng giao tiếp công suất thấp mạnh mẽ Contiki hỗ trợ đầy đủ tiêu chuẩn IPv6 và IPv4 cùng với các tiêu chuẩn không dây công suất thấp gần đây: 6lowpan, RPL, CoAP.

Rapid Development: Các ứng dụng của Contiki được viết bằng C, tải

về với Instant Contiki cung cấp môi trường để phát triển Contiki còn cung cấp những công cụ mô phỏng như Cooja

Hardware Selection: Contiki hoạt động trên nhiều loại thiết bị không dây có công suất thấp, các phần cứng có thể dễ dàng mua được

Active Community Support: Contiki được phát triển bởi một nhóm các nhà nghiên cứu phát triển trên toàn thế giới với sự đóng góp của Cisco,

Atmel, Redwire LLC, ETH, Thingsqure, SAP và nhiều nhà phát triển khác doAdam Dunkels of Thingsquare lãnh đạo

Chương 2: Các tính năng của Contiki OS

Trang 8

1.Các tính năng của Contiki OS

Memory Allocation: Contiki được thiết kế cho các hệ thống nhỏ, chỉ cóvài kilobyte bộ nhớ khả dụng

Full IP Networking: Contiki cung cấp một ngăn xếp mạng IP đầy dủ, với các giao thức IP tiêu chuẩn như UDP, TCP, HTTP, ngoài các tiêu chuẩn low-power như 6lowpan, RPL và CoAP

Power Awareness: Contiki thiết kế để hoạt động trong các hệ thống tiêu thu điện năng cực thấp, các hệ thống có thể cần chạy trong nhiều năm vớipin AA Để hỗ trợ sự phát triển của các hệ thống tiêu thụ điện năng thấp, Contiki cung cấp các cơ chế để ước tính mức tiêu thụ điện năng của hệ thống

và hiểu được nguồn điện đã được sử dụng ở đâu

The Cooja Network Simulator: Các thiết bị Contiki thường tạo nên các mạng không dây lớn Việc phát triển và gỡ lỗi phần mềm cho các mạng như vậy rất khó Do vậy, Cooja, trình mô phỏng mạng Contiki làm cho điều này trở nên dễ dàng hơn bằng cách cung cấp một môi trường mô phỏng cho phép các nhà phát triển xem các ứng dụng của họ chạy trong các mạng quy mô lớn hoặc cực kỳ chi tiết trước khi đưa ra phần cứng

Hardware Platforms: Contiki chạy trên một loạt các nền tảng nhỏ, từ các hệ thống chạy trên chip 8051 thông qua MSP430 và AVR cho đến nhiều thiết bị ARM khác nhau

Protothreads: Để tiếp kiệm bộ nhớ và cung cấp một luồng điều khiển tốt trong Code, Contiki sử dụng cơ chế gọi là Protothreads, nó là loại lập trình

đa luồng và lập trình hướng sự kiện

Coffee flash file system: Contiki cung cấp hệ thống tệp flash nhẹ, gọi làCoffee Các chương trình ứng dụng hệ thống tập tin này có thể thực hiện

Trang 9

nhiều thao tác mở, đóng, đọc,ghi và nối vào các tập tin trên flash ngoài mà không phải lo lắng về việc xóa các thành phần flash trước khi ghi.

The Contiki shell: Contiki hỗ trợ một trình bao dòng lệnh tùy chọn, chưa tập hợp các lệnh hữu ích trong quá trình triển khai mã và gỡ lỗi trong hệ thống Contiki

Regression Tests: Để đảm bảo rằng Code hoạt động như mong đợi, các nhà phát triển Contiki sử dụng một tập hợp các bài test để kiểm tra các khía cạnh quan trọng của Contiki trong trình mô phỏng Cooja

The Rime Stack: Trong các tình huống khi băng thông ở mức cao hoặc khi mạng IPv6 stack bị đầy quá mức, Contiki cung cấp wireless networking stack có tên là Rime

Build System: Hệ thống xây dựng Contiki giúp dễ dàng biên dịch các ứng dụng cho bất kỳ nền tảng Contiki nào có sẵn Điều này giúp bạn dễ dàng dùng thử các ứng dụng trên nhiều nền tảng khác nhau

Examples: Có rất nhiều ví dụ trong Contiki source code tree để giúp cho những người mới bắt đầu Chương trình hiển thị cách tương tác với phần cứng, một số chương trình hiển thị network code, và chương trình khác trình bày các khía cạnh khác nhau của hệ thống Contiki và trình mô phỏng Cooja tương ứng có sẵn

Chương 3: Cấu trúc hệ điều hành Contiki

Trang 10

3.1 Cấu trúc hệ điều hành Contiki

Bất kỳ phiên bản Contiki nào cũng gồm 7 thư mục là: apps, core, cpu,docs, example, platform và tools

 Thư mục apps: Chứa các tập tin nguồn của các tiện ích phát triển cho

Contiki Chúng có sẵn để sử dụng và bao gồm các thiết lập cơ bản của cácứng dụng cho mạng các đối tượng thông minh Ứng dụng tiêu biểu trongthư mục này là trình duyệt web, máy chủ Web, FTP, email

 Thư mục Core: Như tên gọi cho thấy, nó chứa các hạt nhân của hệ điều

hành Contiki Nó chứa khoảng 300 files, gần một nửa trong số đó là tập tintiêu đề chứa các khai báo và còn lại là các tập tin nguồn chứa cài đặt

 Thư mục CPU: Chứa các bộ xử lý cụ thể cho việc thực hiện các chức

năng khác nhau được sử dụng trong hệ điều hành

 Thư mục Docs: Được sử dụng trong việc chuẩn bị tài liệu cho Contiki Nó

chứa thông tin sẽ được sử dụng bởi một hệ thống tài liệu điển hình nhưDoxygen

 Thư mục Examples: Chứa các chương trình ví dụ đơn giản bắt đầu với

“Hello-world”, như là bước đầu tiên hướng tới lập trình ứng dụng trênContiki

 Thư mục Platform: Bao gồm thông tin cụ thể liên quan đến nền tảng

phần cứng cho các nút cảm biến như ESB, Sky mote,…

 Thư mục Tools: Là thư mục chứa các công cụ phần mềm đặc biệt Ví dụ

như 'Cooja' là một chương trình Java để mô phỏng cho Contiki.Thư mụcnày cũng chứa các công cụ cho các nền tảng phần cứng cụ thể

3.2 Kiến trúc phân lớp hệ điều hành Contiki.

Trang 11

Hệ điều hành Contiki theo kiểu kiến trúc module Nhân Contiki bao gồm một bộ lập lịch sự kiện làm nhiệm vụ gửi đi các sự kiện tới các tiến trình đang chạy Các tiến trình thực thi được kích hoạt bằng các sự kiện gửi đi bởi hạt nhân tới các tiến trình hoặc bằng cơ chế hỏi vòng Cơ chế hỏi vòng được

sử dụng để tránh các điều kiện tranh đua (race conditions) Bất kì sự kiện nào

đã được lập lịch sẽ chạy cho đến khi nó hoàn thành

Có hai loại sự kiện được hỗ trợ bởi hệ điều hành Contiki: Các sự kiệnđồng bộ và không đồng bộ Sự kiện đồng bộ được gửi đi ngay lập tức tới tiếntrình đích bởi vì nó đã được lập lịch Đối với các sự kiện không đồng bộ thìchậm hơn, thủ tục gọi được xếp vào hàng đợi và sau đó cũng được gửi đếntiến trình đích Cơ chế hỏi vòng được sử dụng trong Contiki có thể xem như

là các sự kiện có ưu tiên cao nó đã được lập lịch giữa mỗi sự kiện không đồng

bộ Khi một hỏi vòng đã được lập lịch thì tất cả các tiến trình đó thực hiệnmột trình xử lý hỏi vòng được gọi là thứ tự ưu tiên của chúng

Trang 12

Hình 2: Kiến trúc hệ điều hành Contiki.

3.3 Ngăn xếp truyền thông trong hệ điều hành Contiki

Contiki cơ bản gồm 2 stack truyền thông là uIP với TCP/UDP, IPV4,IPV6 giúp hệ điều hành truyền thông qua mạng Internet và Rime được thiết

kế cho những liên kết không dây năng lượng thấp, nó cung cấp một phạm virộng lớn các truyền thông nguyên thủy từ những cách thức quảng bá nội vùnghiệu quả cao đến flooding dữ liệu đáng tin cậy trên nhiều nút mạng

Trang 13

Hình 3: Kiến trúc giao thức mạng

Ngăn xếp uIP: Trong những năm gần đây, cùng với sự thành công củaInternet, giao thức TCP/IP đã trở thành tiêu chuẩn toàn cầu trong lĩnh vựctruyền thông, TCP/IP là giao thức cơ bản được sử dụng cho những mục đíchtruyền tải các trang web, gửi và nhận email, truyền dữ liệu…Các hệ thốngnhúng sử dụng TCP/IP có khả năng kết nối những hệ thống trực tiếp đến mộtmạng nội bộ, hoặc thậm chí là một mạng toàn cầu

Những thiết bị nhúng có khả năng đáp ứng được đầy đủ những đặc tínhcủaTCP/IP sẽ là những thiết bị có tính ưu việt, có khả năng giao tiếp một cáchđầy đủ với tất cả các thiết bị khác trong mạng

Nhưng, việc triển khai giao thức TCP/IP truyền thống đòi hỏi quá nhiềutài nguyên gồm cả dung lượng code và bộ nhớ sử dụng, không thể được đáp

Trang 14

trong các hệ thống nhúng 8 hoặc 16 bit Do vậy, up được thiết kế dựa trên ngôn ngữ C với mục tiêu tối ưu hóa tuyệt đối các đặc tính cần thiết cho một stack TCP/IP đầy đủ uIP chỉ có thể hoạt động với một giao diện mạng duy nhất bao gồm các giao thức: IP, ICMP, UDP, TCP.

Ngăn xếp RIME: Rime stack cung cấp một cấu trúc phân tầng của giaothức mạng cảm biến không dây, từ một bộ phát quảng bá đơn giản tới việcđịnh tuyến rắc rối trong toàn mạng Rime triển khai một giao thức phức tạp,với nhiều phần, mỗi phần lại gồm những module phức tạp được tạo nên từnhững module nhỏ lẻ đơn giản hơn

Hình 4: Tổ chức của RIME

Rime stack cung cấp một cấu trúc phân tầng của giao thức mạng cảm biếnkhông dây, từ một bộ phát quảng bá đơn giản tới việc định tuyến rắc rối trong toàn

mạng Rime triển khai một giao thức phức tạp, với nhiều phần, mỗi phần lại gồm

Trang 15

những module phức tạp được tạo nên từ những module nhỏ lẻ đơn giản hơn Toàn thể tổ chức của giao thức Rime bao gồm :

- Abc: phát sóng quảng bá, nó chỉ gửi một gói tin qua các trình điều

khiển vô tuyến và nhận tất cả các gói tin từ các trình điều khiển vô tuyến khác

- Broadcast: phát sóng xác định, nó thêm địa chỉ người gửi để gửi đi

các gói dữ liệu và chuyển nó vào module abc

- Unicast: module này cho biết thêm một địa chỉ đích cho các gói tin

được truyền cho khối phát sóng Ở bên nhận, nếu địa chỉ đích của gói tin không phù hợp với địa chỉ của nút thì gói tin đó sẽ bị loại bỏ

- Stunicast: là các unicast “cứng đầu “, khi được hỏi để gửi một gói tin

đến một nút, nó sẽ gửi nhiều lần với một khoảng thời gian nhất định cho đến khi yêu cầu dừng lại

- Runicast: là các unicast đáng tin cậy, nó sẽ gửi một gói tin bằng cách

sử dụng các stunicast chờ một gói tin xác nhận Khi nhận được, nó dừng việc truyền tải liên tục của các gói tin Một số lượng tối đa các góitin truyền lại phải được xác định, để tránh gửi vô hạn

- Polite và ipolite: hai module gần như giống hệt nhau, khi một gói tin

đã được gửi đi trong một khung thời gian nhất định, module chờ một nửa thời gian, kiểm tra xem nó có nhận được gói tin nó định gửi hay không Nếu trùng, gói tin không được gửi đi, nếu không nó sẽ gửi gói tin Điều này rất hữu ích cho các kỹ thuật flooding để tránh việc truyền lại không cần thiết

- Multihop: module này đòi hỏi chức năng bảng định tuyến, và khi định

gửi một gói tin, nó yêu cầu bảng định tuyến cho hop tiếp theo và gửi gói tin đến nó bằng cách unicast. Khi nó nhận được một gói tin, nếu

Trang 16

yêu cầu thông tin về hop tiếp theo từ bảng định tuyến và chuyển tiếp các gói tin đến nó Khi gửi gói, các ứng dụng lưu gói vào bộ nhớ đệm

và gọi các hàm xử lý liên quan để gửi gói đi Khi nhận được một gói, gói nhận được được lưu trong bộ đệm gói, đồng thời RIME stack gọi các hàm “callback” tương ứng để xử lý gói đầu vào

3.4 Protothreads

Protothreads là một cấu trúc code cho phép hệ thống chạy các hoạtđộng khác khi đợi một điều gì đó xảy ra Protothreads ở đây khai thác trựctiếp trong hệ điều hành contiki, ngoài ra nó được sử dụng tốt trong các lĩnhvực khác

Protothread cho phép sử dụng các hàm có trong C giống như trongthreads mà không bị tràn bộ nhớ Nó giảm dung lượng bộ nhớ và là điều rấtquan trọng trong các hệ thống có bộ nhớ khiêm tốn sử dụng Contiki

Protothread là 1 hàm C Hàm này bắt đầu và kết thúc bởi 2 lệnh

PT_BEGIN() và PT_END()

Với Protothreads, chương trình được cấu trúc theo tuần tự Protothreads

có thể thực hiện được hiệu quả trong ngôn ngữ lập trình C mà không cần bất

kỳ ngôn ngữ lập trình bậc thấp hay các thay đổi nào với trình biên dịch

Protothreads là sự kết hợp giữa cơ chế Multi-threaded và Event-driven,Gồm 4 loại Protothreads cơ bản:

- PT_INIT(pt): Khởi tạo một Protothread

- PT_BEGIN (pt): bắt đầu một Protothread

- PT_WAIT_UNTIL (pt, điều kiện): điều khiển đợi một sự kiện

- PT_END (pt): kết thúc một Protothread

Trang 17

Hình 5: Các hàm của protothread

3.5 Protothreads in Processes

Trong Contiki, Protothread được sử dụng dưới những câu lệnh riêng PROCESS_BEGIN(): Khai báo bắt đầu process protothread

PROCESS_END():Khai báo kết thúc process protothread

PROCESS_EXIT():Thoát ra khỏi process

PROCESS_WAIT_EVENT():Đợi 1 event nào đó

PROCESS_WAIT_EVENT_UNTIL():Đợi 1 event nào đó nhưng cóđiều kiện

PROCESS_YIELD():Tương tự như PROCESS_WAIT_EVENT()PROCESS_WAIT_UNTIL():Chờ 1 điều kiện, có thể không thực hiệnPROCESS_PAUSE(): Tạm dừng process đang thực hiện

Ngày đăng: 21/04/2022, 10:52

HÌNH ẢNH LIÊN QUAN

Hình 1: Lịch sử phát triển Contiki - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
Hình 1 Lịch sử phát triển Contiki (Trang 6)
Hình 2: Kiến trúc hệ điều hành Contiki. - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
Hình 2 Kiến trúc hệ điều hành Contiki (Trang 12)
Hình 3: Kiến trúc giao thức mạng - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
Hình 3 Kiến trúc giao thức mạng (Trang 13)
Hình 4: Tổ chức của RIME - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
Hình 4 Tổ chức của RIME (Trang 14)
Hình 5: Các hàm của protothread - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
Hình 5 Các hàm của protothread (Trang 17)
Hình 7: LEDs Library         ledv: Các vector LED độc lập: - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
Hình 7 LEDs Library ledv: Các vector LED độc lập: (Trang 19)
Hình 8: Timer Library - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
Hình 8 Timer Library (Trang 20)
Chương 4: So sánh với TinyOS - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
h ương 4: So sánh với TinyOS (Trang 22)
Hình 10: So sánh Contiki OS và TinyOS - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
Hình 10 So sánh Contiki OS và TinyOS (Trang 23)
Hình 7: Giao diện mô phỏng Cooja - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
Hình 7 Giao diện mô phỏng Cooja (Trang 24)
Hình 12: Chương trình mô phỏng đèn LED nhấp nháy PROCESS(blink_process,"Blink") :Khai báo một process - ĐỒ án môn học hệ THỐNG NHÚNG MẠNG KHÔNG dây
Hình 12 Chương trình mô phỏng đèn LED nhấp nháy PROCESS(blink_process,"Blink") :Khai báo một process (Trang 26)

TỪ KHÓA LIÊN QUAN

w