6. Đóng góp của luận án
2.3.1. Lựa chọn môi trƣờng phát triển phần mềm
2.3.1.1. Hệ điều hành cho mạng cảm biến không dây
Chức năng cơ bản của hệ điều hành bao gồm việc trừu tƣợng hóa tài nguyên cho các thiết bị phần cứng khác nhau, quản lý ngắt và lập lịch cho các nhiệm vụ, điều khiển đồng thời và hỗ trợ mạng. Dựa trên các dịch vụ đƣợc cung cấp bởi hệ điều hành, ngƣời lập trình ứng dụng có thể thuận tiện sử dụng các giao diện lập trình ứng dụng mức cao (APIs) độc lập với phần cứng lớp dƣới.
Hệ điều hành cho các nút cảm biến đƣợc thiết kế với các yêu cầu đặc trƣng riêng của nút cảm biến ví dụ nhƣ những hạn chế về tài nguyên bộ nhớ và sức mạnh xử lý của phần cứng. Hệ điều hành cho nút cảm biến không có một giao diện ngƣời dùng nhƣ các hệ điều hành cho máy tính bởi vì ngƣời dùng không tƣơng tác trực tiếp với hệ điều hành trên nút cảm biến. Do đó, hệ điều hành ẩn sâu bên trong bộ vi điều
khiển và chỉ những ngƣời lập trình cho nút cảm biến mới tiếp xúc trực tiếp với hệ điều hành.
Trong thời gian qua đã có nhiều hệ điều hành khác nhau đƣợc nghiên cứu và phát triển cho mạng cảm biến không dây ví dụ nhƣ TinyOS, Contiki, LiteOS, RTOS, Mantis... Trong đó, TinyOS là hệ điều hành ra đời sớm nhất, còn LiteOS là hệ điều hành mới đƣợc nghiên cứu và phát triển trong thời gian gần đây. Hiện nay, TinyOS và Contiki là hai hệ điều hành phổ biến nhất trong cộng đồng nghiên cứu về mạng cảm biến không dây. Trong bài báo công bố số 4, tác giả đã trình bày một nghiên cứu so sánh về ba hệ điều hành này. Bảng 2.4 so sánh giữa ba hệ điều hành này dựa trên một số đặc điểm chính.
Bảng 2.4: So sánh giữa các hệ điều hành TinyOS, Contiki, LiteOS.
Đặc điểm TinyOS ContikiOS LiteOS
Năm công bố ASPLOS (2000) EmNets (2004) IPSN (2008) Website www.tinyos.net http://www.contiki
-os.org/ www.liteos.net Hệ thống Tĩnh, nguyên khối Động, Mô đun Động, Mô đun Hỗ trợ mạng Active Message uIP. uIPv6, Rime File-Assisted
Ngôn ngữ lập trình nesC C LiteC++
Lập trình dựa
trên sự kiện Có Có Có
Hỗ trợ đa luồng Có Có Có
Lập trình lại
không dây Có Có Có
File hệ thống ELF, Matchbox Coffee Hierarchical Unix- like Hỗ trợ các Nền tảng phần cứng Mica, Mica2, MicaZ, TelosB, Tmote, XYZ, IRIS, Tinynode, Eyes, Shimmer Tmote, TelosB, ESB, AVR MCU,
MSP430 MCU
MicaZ, IRIS, AVR MCU
Công cụ mô phỏng TOSSIM, Power Tossim Cooja, MSPSim, Netsim Through AVRORA 2.3.1.2. Hệ điều hành Contiki
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 cảm biến không dây nói riêng. Hệ điều hành Contiki đƣợc phát triển bởi Adam Dunkels và phiên bản đầu tiên đƣợc phát hành vào năm 2003. 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 và các ứng dụng trong mạng cảm biến không dây. 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…
Hệ điều hành Contiki cùng đi kèm với công cụ mô phỏng Cooja/MSPSim. Công cụ mô phỏng này cho phép các đoạn mã chƣơng trình viết trên nền hệ điều hành Contiki có thể đƣợc mô phỏng, thử nghiệm trƣớc khi triển khai.
Trong luận án này, tác giả lựa chọn hệ điều hành Contiki để phục vụ cho việc nghiên cứu với mạng cảm biến không dây. Tác giả lựa chọn hệ điều hành Contiki bởi vì có ba lý do chính sau: Thứ nhất, hệ điều hành Contiki là một trong những hệ điều hành phổ biến nhất trong cộng đồng nghiên cứu về mạng cảm biến không dây hiện nay; Thứ hai, hệ điều hành Contiki đƣợc đánh giá là rất phù hợp với các mạng cảm biến không dây nói riêng và mạng các thiết bị nhúng nói chung. Vì vậy, hệ điều hành này đã đƣợc triển khai nhiều trong thực tế; Thứ ba là ngôn ngữ lập trình đƣợc sử dụng trong hệ điều hành Contiki là ngôn ngữ lập trình C. Đây là ngôn ngữ lập trình rất phổ biến và tác giả cũng đã có một số kinh nghiệm với ngôn ngữ lập trình này.