5. Tổng quan
T12-2018 Nhóm 06 5
Tạo bởi Adam Dunkels
năm 2002
Mã nguồn mở
Được viết bằng C
Phát hành theo
giấy phép BSD
Trình mô phỏng
Cooja
Hệ điều hành
cho các thiết bị IoT
6. Lịch sử
T12-2018 Nhóm 06 6
uIP
Contiki
+ uIP
+ protothreads
+ Cooja + Rime
+ IPv6 (Cisco)
RPL + ContikiMAC
CloudAdam Dunkels
PhD. CEO and co-founder, Thingsquare.
Community
7. Tại sao sử dụng Contiki?
T12-2018 Nhóm 06 7
Internet Standards
fully support
Rapid Development Active Community
A Selection of
Hardware
Open Source
Software
Community Support
8. Tính năng – đặc trưng
T12-2018 Nhóm 06 8
Memory
Allocation
Full IP
Networking
Regression
Tests
Examples
6lowpan,
RPL, CoAP
Dynamic
Module
Loading
Power
Awareness
Cooja
Network
Simulator
Sleepy
Routers
Hardware
Platforms
Protothreads
Coffee flash
file system
The Contiki
shell
The Rime
Stack
Build
System
11. Contiki Kernel
• Bộ lập lịch event gọn nhẹ:
• Gửi các event đến process.
• Các event chỉ có một level duy nhất, không có sự
ưu tiên.
• Hỗ trợ 2 loại event: bất đồng bộ và đồng bộ.
• Cung cấp cơ chế Polling.
• Sử dụng một ngăn xếp duy nhất cho tất cả
process
T12-2018 Nhóm 06 11
12. Process
• Process có thể là một service hoặc chương trình ứng
dụng.
• Thường bắt đầu khi khởi động hệ thống.
• Được định nghĩa bởi event handler và polling handler.
• Tất cả các process chia sẻ cùng không gian địa chỉ.
• Gồm 2 phần:
• Process control block: lưu trong RAM, chứa thông tin như
tên, trạng thái, con trỏ
• Process thread: là code của process, lưu trong ROM.
• Mỗi process có thể chỉ có 1 thread thực thi. Thread
trong Contiki được gọi là protothread.
T12-2018 Nhóm 06 12
13. Protothreads
• Là stackness threads tối ưu hoá cho hệ điều
hành hướng sự kiện.
• Ít tốn bộ nhớ (khoảng 2 byte RAM)
• Không yêu cầu stack riêng. Tất cả các
protothreads chạy trên cùng stack
T12-2018 Nhóm 06 13
15. Cài đặt ContikiOS lên máy ảo
T12-2018 Nhóm 06 15
Build từ mã nguồn
Contiki
Sử dụng Instant Contiki
16. Sử dụng Instant Contki
T12-2018 Nhóm 06 16
Tải về Instant Contiki và xả nén
Cài đặt VMWare Player
Khởi động Instant Contiki bằng VMWare
Đăng nhập bằng user/user
17. Các bước phát triển một ứng dụng trên Contiki
T12-2018 Nhóm 06 17
Viết file chương trình .c
Tạo Makefile
Mô phỏng Cooja
Biên dịch và nạp vào phần cứng
18. Cấu trúc một chương trình cơ bản trong Contiki
T12-2018 Nhóm 06 18
<Header Files>
PROCESS(name,strname);
AUTOSTART_PROCESSES(struct process &);
PROCESS_THREAD(name, process_event_t, process_data_t)
{
----Initialization of required variables----
PROCESS_BEGIN();
---Set of C statements---
PROCESS_END();
}
19. Ví dụ một chương trình đơn giản trên Contiki
T12-2018 Nhóm 06 19
<HEADER_FILE>
PROCESS(my_first_app_process,"My_First_App");
AUTOSTART_PROCESSES(&my_first_app_process);
PROCESS_THREAD(my_first_app_process,ev,data)
{
/* Declare variables required */
static int i=2018;
/* Begin Process */
PROCESS_BEGIN();
/* Set of C statement(s) */
printf("%d is a my happy yearn",i);
/* Process End */
PROCESS_END();
}
21. Nạp code lên phần cứng như thế nào?
T12-2018 Nhóm 06 21
$ sudo chmod /dev/ttyUSB0
$ cd contiki/examples/myApps
$ make TARGET=sky my_first_app.upload
Tập tin .c chứa
mã chương trình
23. So sánh với các OS khác (tổng quan)
T12-2018 Nhóm 06 23
24. Hiện thực một ứng lên phần cứng
• Mục tiêu:
• Sử dụng giao thức truyền thông Broadcast của
Rime stack và Blink điều khiển đèn LED trong
Contiki.
• Nạp lên phần cứng
• Video: https://youtu.be/Uch1QI2U-ew
• Source code thực hiện:
https://github.com/tuanlh/contikisimpletrafficlight
T12-2018 Nhóm 06 24