2009년 8월 30일 일요일

Synchronized Low-power Protocol

동기 방식 저전력 프로토콜은 멀티홉 네트워크에서 time sync를 유지하면서 active/sleep 스케줄링을 하도록 설계되어 있다.
32KHz로 동작하는 자신의 타이머를 이용하여 time stamp를 얻고, 자신의 시간 정보를 broadcasting한다. 시간 정보를 담고 있는 sync 메시지를 받은 노드들은 자신의 시간 정보와 수신된 시간 정보를 비교하여 업데이트한다.
  • routing message : minimum cost를 계산하여 route-path를 설정하기 위한 메시지
  • sync message : 시간 동기화를 위한 메시지로 자신의 시간 정보를 브로드캐스팅
  • period : active/sleep 주기를 설정
  • duty cycle : 한 주기 동안 동작 가능한 비율
period가 길고 duty cycle이 큰 경우 좋은 성능을 나타낸다.



다음의 원문은 주기를 이용한 duty cycle 적용 방법이다.

Boomerang lowpower works upon the principle of synchronised global time known to all motes in the network. All synchronised motes then go to sleep and wake up at the same time (duty cycle). All messages are sent/received within this duty cycle. Messages queued to sending outside this time are simply buffered until the next duty cycle.
In Boomerang this is managed by 2 components, netSync which handles global time and netWake which handles the wake/sleep mechanism.

If you have access to a Boomerang environment, run the Trawler application compiled for lowpower. There you can see that messages may arrive at an inconsistent rate, but they all arrive eventually.
Boomerang allows you to change the duty cycle via the lowpower parameter of make.
The NETSYNC_PERIOD_LOG2 macro allows you to change the time between listening periods

by default NETSYNC_PERIOD_LOG2 is 16 i.e. 2**16 ticks of the 32khz clock is 2 seconds. Default lowpower is 5% .
5% of 2 seconds is 100msecs. So by default you listen for 100msecs every 2 seconds.
Suppose I want 100sec every 4 seconds, set NETSYNC_PERIOD_LOG2 to 17 ( 4 seconds) and lowpower to 3 (3% of 4 seconds = 120msec)

Add the following line to your makefile

ifeq ($(filter netsync_period_log2,$(MAKECMDGOALS)),netsync_period_log2)

then do

make lowpower,3 netsync_period_log2,17

댓글 없음:

댓글 쓰기