Tải bản đầy đủ (.docx) (25 trang)

HỆ ĐIỀU HÀNH CONTIKI VÀ ỨNG DỤNG MÔ PHỎNG COOJA pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.47 MB, 25 trang )

Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
MỤC LỤC
Page 1
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
HỆ ĐIỀU HÀNH CONTIKI VÀ ỨNG DỤNG MÔ PHỎNG COOJA
1.Contiki
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 trên 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 hệ thống mạng cảm biến. Trong phần này sẽ trình bày về hệ điều hành contiki.
1.1.Giới thiệu
Hệ điều hành contiki là hệ điều hành mã nguồn mở, được nghiên cứu, thiết kế và
phát triển bởi một nhóm các nhà phát triển từ viện khoa học máy tính Thụy Điển, người
đứng đầu là Adam Dunkels. 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 sử dụng cho các hệ thống nhúng và các ứng dụng
trong mạng cảm biến không dây. Contiki 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. Hình 3.1 cho thấy lịch sử phát triển của
Contiki trong những năm qua. 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. Trong thực tế, Contiki đã được ứng dụng trong nhiều dự
án như giám sát đường hầm xe lửa, theo dõi nước trong biển Baltic,… Nhiều cơ chế, ý
tưởng trong 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àng
trăm công ty trong các lĩnh vực hàng hải, thông tin vệ tinh, khai thác dầu mỏ,…; mô hình
Protothreads được công bố lần đầu tiên năm 2005, đến nay đã được sử dụng trong nhiều
ứng dụng như bộ giải mã kỹ thuật số và thiết bị cảm biến rung không dây.
Page 2
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
Hình 1.1 Lịch sử phát triển Contiki


Hệ điều hành Contiki được lập trình bằng ngôn ngữ C, hoạt động dựa trên cơ chế
event - driven và có những đặc điểm phù hợp với các hệ thống nhúng và mạng cảm biến
không dây:
• Contiki được chia thành nhiều modul hoạt động độc lập. Nhờ đó các ứng
dụng có thể sử dụng các modul một cách linh động và chỉ load những
modul cần thiết.
• Cơ chế hoạt động điều khiển sự kiện làm giảm năng lượng tiêu hao và hạn
chế dung lượng bộ nhớ cần sử dụng.
• Có thể sử dụng IP trong mạng cảm biến thông qua uIP stack được xây dựng
dựa trên nền TCP/IP.
• Có những modul cho phép ước lượng và quản lý năng lượng một cách hiệu
quả.
• Các giao thức tương tác giữa các lớp và các node trong mạng dễ dàng hơn.
• Sử dụng RIME stack phục vụ các giao thức dành cho mạng năng lượng
thấp một cách hiệu quả.
Page 3
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
Bên cạnh đó, Contiki còn cung cấp những công cụ hỗ trợ mô phỏng với giao diện
đơn giản, dễ sử dụng và hỗ trợ tốt những thiết bị trong thực tế, phục vụ những mục đích
nghiên cứu, mô phỏng và triển khai những giao thức mới.
1.2.Hướng dẫn tải và cài đặt
1.2.1.Tải phần mềm
- Vào link sau để download hệ điều hành Contiki và phần mềm VMWare.
/>Hình 2.1: Trang web sics.se
Click vào dòng “Download Install Contiki here” để download hệ điều hành Contiki
Click vào dòng “Windows download” ở dòng “Download VMWare Player here” để
download phần mềm VMWare.
Page 4
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
1.2.2.Cài đặt

Để có thể cài đặt hệ điều hành Contiki chạy trên nền Window thì bạn cần một phần
mềm chạy hệ điều hành ảo như VMWare
a. Cài đặt VMWare:
- Click Next
- Click Next
Page 5
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
- Chọn các shortcuts rồi Click Next
- Click Install
Page 6
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
- Click Finish
b. Cài đặt Co n tiki :
- Giải nén Contiki bằng Winrar.
- Chạy VMWave
- Ấn Cancel
- Ấn Open và chọn đường dẫn đến thư mục Contiki vừa giải nén. Chọn install –
contiki
Page 7
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
- Điền username là “user” rồi ấn enter .Màn hình đăng nhập hiện lên:
- Điền password là “user” rồi ấn enter .
Page 8
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
- Giao diện của chương trình
c. Download và cài đặt phần mềm Elipse
- Vào link />file=/technology/epp/downloads/release/helios/SR1/eclipse-cpp-helios-SR1-linux-
gtk.tar.gz
Page 9
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja

-Ấn vào biểu tượng mũi tên màu xanh để tải về.
-Copy file nén vừa tải được vào trong Contiki (Dùng Usb)
-Giải nén ra và vào thư mục eclipse,ấn vào eclipse.exe để chạy chương trình.Màn hình
hiện ra chọn OK (thiết lập work space).
-Giao diện trương trình hiện lên:
-Đóng cửa sổ giới thiệu vào,giao diện chính của trương trình:
Page 10
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
-Chọn File New C++ Project.Điền tên project (ví dụ là “ctk-2.4”):
-Nhấn Finish.Sau đó copy thư mục contiki-2.4 (code) vào trong thư mục ctk-2.4 vừa tạo :
user/workspace/ctk-2.4. Sau đó trở lại giao diện eclipse nhấn F5 :
Page 11
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
Vậy là chúng ta đã cài xong eclipse.
1.3.Cấu trúc hệ điều hành Contiki
Bất kỳ bản Contiki nào cũng gồm 7 thư mục : apps, core, cpu, docs, example,
platform và tools.
“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ảm biến không dây .
ứng dụng tiêu biểu trong thư mục này là trình duyệt web, máy chủ Web, FTP, email, và
máy tính.
“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 file, gần một nửa trong số đó là tập tin tiê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.
“cpu” chứa bộ xử lý cụ thể 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.
“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.
Page 12
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja

“examples” chứa các chương trình ví dụ đơn giản bắt đầu với “Hello-world”, mà phục
vụ như là bước đầu tiên hướng tới Contiki lập trình.
“platform” bao gồm thông tin cụ thể liên quan đến nền tảng Node cảm biến như ESB,
Sky, vv "native" là một nền tảng đặc biệt là xây dựng một hệ thống toàn bộ Contiki như
một chương trình chạy trên hệ thống phát triển.
“tools” là thư mục mà các công cụ phần mềm đặc biệt được lưu trữ. 'Cooja' là một Java
dựa trên mô phỏng cho Contiki.Thư mục này cũng chứa các công cụ nền tảng cụ thể. ví
dụ điển hình là các công cụ cho Sky.
1.4.Tích hợp một platform mới vào hệ điều hành contiki
“Platform native” là platform chuẩn được xây dựng để việc tích hợp một platform mới
vào hệ điều hành contiki trở nên thuận tiện hơn.
Bao gồm các thư mục và các file:
- Thư mục:
o Dev
- File:
o Cfs-coffee-arch.h
o Clock.c
o Contiki-conf.h
o Contiki-main.c
o Makefile.native
Page 13
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
1.4.1.Các bước tiến hành
- Copy toàn bộ các file trong thư mục platform/native vào thư mục platform mới và
sửa
- Copy toàn bộ các file trong thư mục cpu/[tên vi xử lý] vào thư mục cpu của thiết
bị mới và chỉnh sửa
- Tích hợp module clock:
o Module clock nằm trong core/sys/clock.h. Ngoài ra nó còn có thể nằm
trong platform hoặc trong cpu.

o Bao gồm ba phần:
 clock_init(): Khởi tạo module clock, được gọi sau khi chạy code
khởi động, thiết lập giờ, ngắt cho node.
 clock_time(): Thực hiện đếm mỗi khi xảy ra ngắt,
 clock_delay(): tạo trễ một khoảng thời gian, chỉ được sử dụng cho
các driver.
o Bước 1: Copy file clock.c tại thư mục cpu/msp430/dev/clock.c
o Bước 2: Tìm hiểu cách thức ngắt thời gian của các ứng dụng và thay đổi
trong file clock.c
- Sensors:
o Khi sensors thay đổi, một sự kiện được truyền đến tất cả các quy trình như:
nút bấm, PIR phát hiện chuyển động…
o Code chuẩn để truyền sự kiện nằm tại thư mục core/lib/sensors.c
o Các sensor tương lai sẽ là các sensor số thay thế cho các sensor tương tự
o Bước 1: Chọn các code sensor trong thư mục core/lib/sensors.c
o Bước 2: Thay đổi cho phù hợp với platform mới
- Network device drivers:
o Chức năng là gửi và nhận các gói tin (packet) giữa các node mạng với
nhau.
o Ví dụ: CC2420, CC1000
o Thiết lập đơn giản bằng cách copy driver có sẵn như simple-cc2420, tr1001
trong thư mục core/dev
- contiki-conf.h:
o Nằm trong thư mục platform/(tên platform)
o Chứa các tùy chọn cấu hình:
 Cấu hình cho C compiler
Page 14
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
 C types
 Cấu hình cho uIP

 Clock configuration: clock_time_t, CLOCK_CONF_SECOND
o copy từ platform/native/contiki-conf.h và chỉnh sửa
- contiki-main:
o Là chương trình chính để điều khiển hoạt động của node.
o Do người dùng tạo ra.
1.4.2. Case study: Tích hợp Sentilla Jcreate vào Contiki
a. Tmode Sky platform trong HĐH Contiki
* Giới thiệu Tmode Sky:
Tmote Sky là mạch cảm biến không dây được phát triển bởi tập đoàn Moteiv. Nó
được tích hợp vi xử lý MSP430 với chuẩn 802.15.4 tương thích trên chip radio CC2420.
Tmode Sky có 1Mb bộ nhớ flash ngoài và hai cảm biến ánh sáng. Tmote Sky được tích
hợp vào trong hệ điều hành Contiki vào tháng ba năm 2007.
Để biên dịch một chương trình trên một Tmote sky chúng ta cần phải có
- msp430-gcc (the gcc C compiler for the MSP430 microcontroller) installed.
Page 15
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
Các ứng dụng để test các chức năng của sky:
- blink.c : một chương trình đơn giản điều khiển LED trên node
- sky-collect.c : Thu thập dữ liệu của sensor và giá trị thông tin năng lượng tới sink
- test-button.c : bật tắt các led khi bấm nút.
- test-cfs.c : Thử 1 mb bộ nhớ flash của Tmode Sky
* Khác biệt giữa Tmote Sky và native:
o File Cfs-coffee-arch.h, Contiki-conf.h, Contiki-main.c: về cơ bản trong
Sky có sự thay đổi so với native để tùy chỉnh thêm các thư viện devices,
thêm các chức năng phù hợp với Sky.
o Thư mục dev có thêm các file tích hợp cho các thiết bị trong Tmote Sky
như button-sensor, buttery-sensor, i2c, light, light-sensor, radio-sensor,
temperature-sensor. Ngoài ra trong Sky còn có thêm thư mục apps chứa các
file ứng dụng cụ thể của platform sky.
b. Sentilla Jcreate nodes (motes)

* Giới thiệu Sentila Jcreate node:
Sentilla nodes là thế hệ sau của Tmode sky node. Những điểm khác biệt giữa hai loại
node này là:
- Trong khi sky node có 3 Led và 1 nút bấm thì sentilla có 8 led, 1 gia tốc kế và
không có nút bấm.
- Hiện nay Contiki hỗ trợ rất nhiều cho sky platform nhưng chưa kịp cập nhật cho
tất cả các đặc tính của Sentilla node
* Các bước tích hợp platform Sentila Jcreate vào Contiki:
Page 16
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
- Copy toàn bộ các file trong thư mục platform/native sky vào thư mục
platform/jcreate và sửa
- Tích hợp các sensor vào platform/ jcreate.
- Tích hợp led.c và led.h từ /core/dev vào jcreate và sửa chữa để có thể điều khiển
được 8 led.
* Các bước tải chương trình xuống Sentilla node:
Bước 1: Cài đặt msp430 compiler
Sentilla node giống như sky node, cũng có vi điều khiển msp430 của hãng Texas
Instrument. Để chạy chương trình cho vi điều khiển, chúng ta cần có
msp430-gcc.
Chúng ta cần kiểm tra xem contiki đã cài đặt các file cần thiết của msp430 chưa. Các file
đó bao gồm:
• binutils-msp430
• gcc-msp430
• msp430-libc
Để kiểm tra chúng ta gõ: $ dpkg –l *msp*
Nếu chương trình đã có đầy đủ các file đó thì nó sẽ tự động liệt kê trong cửa sổ terminal.
Còn nếu chưa có thì sẽ có thông báo: “No packages found matching *msp*”
Nếu các bạn cài đặt đầy đủ từ đầu tới giờ thì đảm bảo sẽ được như hình sau:
Page 17

Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
Bước 2: Install the Sentilla bootstrap loader and update the PATH variable
- Lấy file tmote-bsl từ diễn đàn sentilla
o Ghi danh vào diễn đàn />o Download file SentillaWork.targ.gz theo link
/>o Click đúp vào để mở file vừa tải xuống, tìm file msp430-bsl-
linux trong folder SentillaWork/SentillaHostserver/bin
- contiki-2.x/tools/sky
o Gõ hai lệnh sau:
$ cd contiki-2.x/tools/sky
$ mv msp430-bsl-linux msp430-bsl-linux-tmotesky
- Đưa file tmote-bsl vào folder contiki-2.x/tools/sky và đặt lại tên
là msp430-bsl-linux
- Cuối cùng, add folder contiki-2.x/tools/sky vào môi trường thay đổi
PATH. This is necessary for finding the motelist-linux script which will be
Page 18
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
invoked when uploading to a node: Hoặc thay đổi property/permission cho phép
“executable”
Bằng cách gõ dòng lệnh
$ export PATH=$PATH:~/Desktop/contiki-2.x/tools/sky
Đến đây bạn đã hoàn thành việc tích hợp platform Sentila vào hệ điều hành Contiki. Bạn
có thể tiếp tục chạy một ví dụ đơn giản trên Sentila node theo bước 3 và 4 trong hướng
dẫn tại địa chỉ sau:
/>8.10.html
* Cách tích hợp led vào platform sentilla jcreate:
Mục đích: xây dựng thư viện cho sentilla node để có thể sử dụng với 8 led dựa vào
platform Tmotesky node
Các bước tiến hành :
- Bước 1: thay đổi định ngĩa tên led trong các file led.c, leds.h trong thư mục
core/dev.

#define LEDS_1 1
#define LEDS_2 2
#define LEDS_3 3
#define LEDS_4 4
#define LEDS_5 5
#define LEDS_6 6
#define LEDS_7 7
Page 19
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
#define LEDS_8 8
- Bước 2: gán lại chân cho các leds bằng cách sửa lại file leds-arch.c trong
platform/skymicaz/dev sau đó lưu lại với tên driver.c. gán lại chân các led dựa vào
các thanh ghi trong file cc2430_sfr.h trong cpu
LEDS_PxDIR |= (LEDS_CONF_1 | LEDS_CONF_2 | LEDS_CONF_3|
LEDS_CONF_4| LEDS_CONF_5| LEDS_CONF_6| LEDS_CONF_7| LEDS_CONF_8);
LEDS_PxOUT |= (LEDS_CONF_1 | LEDS_CONF_2 | LEDS_CONF_3|
LEDS_CONF_4| LEDS_CONF_5| LEDS_CONF_6| LEDS_CONF_7| LEDS_CONF_8);
- Bước 3: gán chân các led trong file contiki-conf.h
#define LEDS_CONF_1 0x01
#define LEDS_CONF_2 0x02
#define LEDS_CONF_3 0x03
#define LEDS_CONF_4 0x04
#define LEDS_CONF_5 0x05
#define LEDS_CONF_6 0x06
#define LEDS_CONF_7 0x07
#define LEDS_CONF_8 0x08
- Bước 4: sử dụng, khi cần dùng đến sentilla node chỉ cần khai báo trên tiêu đề
#include <driver.c> là có thể sử dụng 8 led đó.
Page 20
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja

2.Cooja
2.1.Giới thiệu
Cooja là phần mềm mô phỏng hệ thống mạng được tích hợp trong hệ điều hành
Contiki. Công cụ này cho phép người sử dụng thay đổi các thông số như vị trí, phạm vi
kết nối, tỉ lệ truyền gói thành công,… Nhờ đó người sử dụng có thể mô phỏng và đánh
giá kết quả một cách hiệu quả hơn.
Dưới đây là giao diện của chương trình mô phỏng bằng Cooja:
Hình 2.1 Màn hình mô phỏng Cooja.
Từ hình có thể nhận thấy giao diện của chương trình than thiện và dễ sử dụng, với
một màn hình cho phép hiển thị các quá trình hoạt động của node, có khả năng thay
đổi vị trí, phạm vi phủ sóng của mỗi node. Bên cạnh đó Cooja cung cấp một số các
cửa sổ theo dõi sự kiện như Log listener, Radio listener cho phép người sử dụng tìm
kiếm những sự kiện theo một số thông số nhất định, theo dõi sự giao tiếp giữa một số
Page 21
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
node cụ thể, ….Có thể nói, đây là một công cụ mô phỏng khá trực quan và dễ sử
dụng, phục vụ tốt cho quá trình nghiên cứu, mô phỏng, đánh giá.
2.2.Cài đặt
Click vào Terminal, cửa sổ hiện gõ lần lượt các dòng lệnh sau:
cd contiki-2.4
cd tools/cooja
ant run
Cửa sổ cooja hiện ra :
Page 22
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
Tuy nhiên sau khi mở được chương trình cooja, điều đầu tiên nên làm là thiết lập thông
số cho cooja bằng cách mở tab Settings:
+External Tools Path: Ở đây có thể thiết lập các thông số về đường dẫn cho cooja,
đường dẫn các file liên quan
+Manager Project Directories:

+Compiler Configuration Wizard
Một diều rất thuận lợi khi sử dụng linux, dó là có thể cài dặt các gói dữ liệu còn
thiếu 1 cách dễ dàng bằng công cụ Synaptic Package Manager: System>Administration-
>Synaptic Package Manager. Nhập password quyền admin. Ấn Search->Nhập tên file cần
tìm và cài dặt.
2.3.Ví dụ mô phỏng
Thực hiện mô phỏng: Vào File->New Simulation.Simulation title: (Nhập tên cho
mô phỏng) và nhấn Create ta được :
Page 23
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja

Lúc này sẽ có 4 cửa sổ xuất hiện: Control Panel, Simulation Visualizer, Log Listener và
Timeline.
Vào Mote Types->Creat mote type: mỗi loại mote type ứng với các lớp mô phỏng
khác nhau là: Application level, OS level và Emulated level. Ở dây chọn Sky mote type
(Emulated level).Cửa sổ Create Mote Type hiện ra:
Page 24
Hệ Điều Hành Contiki và ứng dụng mô phỏng Cooja
Trong cửa sổ chọn đường dẫn đến file ( ở đây ta chọn hello-world.c) rồi chọn
Complie. Chờ chương trình biên dịch xong chọn Create.Nhập số node rồi chọn create
and add ta được :
Ấn Start để bắt đầu mô phỏng.
2.4.Cấu trúc thư mục
Page 25

×