|
【慶祝】我終於成功燒寫了第一個TinyOS程序! |
一派掌門 二十級 |
|
一派掌門 二十級 |
臨時開啟串口/dev/ttyUSB0的權限,重啟虛擬機後失效:sudo chown oct1158 /dev/ttyUSB0 編譯命令:make telosb 燒寫命令:tos-bsl --telosb -c /dev/ttyUSB0 -r -e -I -p build/telosb/main.ihex.out 燒寫前,一定要把串口插入到虛擬機裏面:  勾選FTDI FT232R USB UART [0600]
|
|
一派掌門 二十級 |
程序文件列表: 【BlinkAppC.nc】 configuration BlinkAppC { } implementation { components MainC, BlinkC, LedsC; components new TimerMilliC() as Timer0; components new TimerMilliC() as Timer1; components new TimerMilliC() as Timer2;
BlinkC -> MainC.Boot; BlinkC.Timer0 -> Timer0; BlinkC.Timer1 -> Timer1; BlinkC.Timer2 -> Timer2; BlinkC.Leds -> LedsC; } 【BlinkC.nc】 module BlinkC @safe() { uses interface Timer<TMilli> as Timer0; uses interface Timer<TMilli> as Timer1; uses interface Timer<TMilli> as Timer2; uses interface Leds; uses interface Boot; } implementation { event void Boot.booted() { call Timer0.startPeriodic(250); call Timer1.startPeriodic(500); call Timer2.startPeriodic(1000); }
event void Timer0.fired() { dbg("BlinkC", "Timer 0 fired @ %s.\n", sim_time_string()); call Leds.led0Toggle(); }
event void Timer1.fired() { dbg("BlinkC", "Timer 1 fired @ %s.\n", sim_time_string()); call Leds.led1Toggle(); }
event void Timer2.fired() { dbg("BlinkC", "Timer 2 fired @ %s.\n", sim_time_string()); call Leds.led2Toggle(); } } 【Makefile】 COMPONENT = BlinkAppC include $(MAKERULES)
|
|
一派掌門 二十級 |
所用虛擬機軟件:  以及Linux系統:
|
|
一派掌門 二十級 |
【總的步驟】 1.給串口添加臨時權限(重啟系統或拔出USB線後失效) sudo chown oct1158 /dev/ttyUSB0 其中oct1158為用戶名 2.編譯和燒寫 make telosb install bsl,/dev/ttyUSB0 (切記逗號那裏絕不能有任何空格,否則生成的tos-bsl命令的-c後面會因缺少/dev/ttyUSB0而出錯!)
|
|
一派掌門 二十級 |
臨時開啟串口/dev/ttyUSB0的權限,重啟虛擬機後失效:sudo chown oct1158 /dev/ttyUSB0 編譯命令:make telosb 燒寫命令:tos-bsl -... 
其中main.ihex.out是main.ihex的複製品。
|
|
一派掌門 二十級 |
  其實這兩個文件是完全相同的。
|
|
一派掌門 二十級 |
臨時開啟串口/dev/ttyUSB0的權限,重啟虛擬機後失效:sudo chown oct1158 /dev/ttyUSB0 編譯命令:make telosb 燒寫命令:tos-bsl -... 
輸入命令時,請注意-I是大寫的i,不是小寫的L!
|
|
一派掌門 二十級 |
如果電腦只接了一個節點的話,那麼只需要輸入make telosb install就行了
|
|
一派掌門 二十級 |
如果想要每次開機或插入串口線時都自動設置權限為當前用戶,不再執行繁瑣的chmod或chown命令,請參考: https://zh.arslanbar.net/post.php?t=24301
|
|
一派掌門 二十級 |
【常用命令】 查看設備名:motelist 燒寫但不編譯:make telosb reinstall 編譯並燒寫:make telosb install 編譯並燒寫,指定節點ID為2,程序中可通過TOS_NODE_ID宏獲得:make telosb install,2 編譯並燒寫,指定節點路徑:make telosb install bsl,/dev/ttyUSB0
|
|
一派掌門 二十級 |
只編譯不燒寫:make telosb
|
|