Installing a Test ITS400 Accelerometer Application
TinyOS 2.x comes with an application that tests the functionality of the ITS400 sensor board of the Intelmote 2. The test is located in /opt/tinyos-2.x/tos/sensorboards/im2sb/examples. The following output specifically tests the STMicroelectronics LIS3L02DQ accelerometer.
Compilation
$ make intelmote2 debug install bootloader
/opt/tinyos-2.x-contrib/intelmote2/support/make/bootloader.extra:14: warning: ov
erriding commands for target `program'
/opt/tinyos-2.x/support/make/pxa27x/jflashmm.extra:13: warning: ignoring old com
mands for target `program'
/opt/tinyos-2.x-contrib/intelmote2/support/make/bootloader.extra:18: warning: ov
erriding commands for target `program_input'
/opt/tinyos-2.x/support/make/pxa27x/jflashmm.extra:18: warning: ignoring old com
mands for target `program_input'
/opt/tinyos-2.x-contrib/intelmote2/support/make/intelmote2.extra:41: warning: ov
erriding commands for target `bytes'
/opt/tinyos-2.x/support/make/pxa27x/pxa27x.rules:102: warning: ignoring old comm
ands for target `bytes'
mkdir -p build/intelmote2
echo -mcpu=iwmmxt -mfpu=softfpa -defsym BOOTLOADER=1 /opt/tinyos-2.x-contrib/i
ntelmote2/tos/platforms/intelmote2/toscrt0.s /opt/tinyos-2.x-contrib/intelmote2/
tos/chips/pxa27x/pxa27x_util.s /opt/tinyos-2.x-contrib/intelmote2/tos/chips/pxa2
7x/mmu_table.s -o build/intelmote2/asms.o
-mcpu=iwmmxt -mfpu=softfpa -defsym BOOTLOADER=1 /opt/tinyos-2.x-contrib/intelmot
e2/tos/platforms/intelmote2/toscrt0.s /opt/tinyos-2.x-contrib/intelmote2/tos/chi
ps/pxa27x/pxa27x_util.s /opt/tinyos-2.x-contrib/intelmote2/tos/chips/pxa27x/mmu_
table.s -o build/intelmote2/asms.o
compiling TestSensorC to a intelmote2 binary
ncc -o build/intelmote2/main.exe -g -fnesc-no-inline -I/opt/tinyos-2.x-contrib/i
ntelmote2/tos/platforms/intelmote2/chips/da9030 -I/opt/tinyos-2.x-contrib/intelm
ote2/tos/platforms/intelmote2 -I/opt/tinyos-2.x-contrib/intelmote2/tos/chips/pxa
27x -I/opt/tinyos-2.x-contrib/intelmote2/tos/sensorboards/im2cb -I/opt/tinyos-2.
x-contrib/intelmote2/tos/sensorboards/xbow_cb -I/opt/tinyos-2.x-contrib/intelmot
e2/tos/platforms/intelmote2/chips/da9030 -I/opt/tinyos-2.x-contrib/intelmote2/to
s/platforms/intelmote2 -I/opt/tinyos-2.x-contrib/intelmote2/tos/chips/pxa27x -I/
opt/tinyos-2.x-contrib/intelmote2/tos/chips/ov7649 -I/opt/tinyos-2.x-contrib/int
elmote2/tos/chips/ov7670 -Wall -Wshadow -Wnesc-all -target=intelmote2 -fnesc-cfi
le=build/intelmote2/app.c -board=im2sb -DDEFINED_TOS_AM_GROUP=0x22 -DBOOTLOADER
-T/opt/tinyos-2.x-contrib/intelmote2/tos/platforms/intelmote2/tos.x -DSYSTEM_COR
E_FREQUENCY=13 -DSYSTEM_BUS_FREQUENCY=13 TestSensorC.nc -lm /opt/tinyos-2.x-co
ntrib/intelmote2/tos/platforms/intelmote2/toscrt0.s /opt/tinyos-2.x-contrib/inte
lmote2/tos/chips/pxa27x/pxa27x_util.s /opt/tinyos-2.x-contrib/intelmote2/tos/chi
ps/pxa27x/mmu_table.s
In file included from TestSensorC.nc:42:
In component `TestSensorM':
TestSensorM.nc: In function `ReadAccelX.readDone':
TestSensorM.nc:86: warning: passing argument 2 of `Packet.getPayload' makes inte
ger from pointer without a cast
In C file:
/opt/tinyos-2.x/tos/chips/lis3l02dq/HplLIS3L02DQLogicSPIP.nc: At top level:
/opt/tinyos-2.x/tos/chips/lis3l02dq/HplLIS3L02DQLogicSPIP.nc:67: warning: non-at
omic accesses to shared variable `mState':
/opt/tinyos-2.x/tos/chips/lis3l02dq/HplLIS3L02DQLogicSPIP.nc:148: warning: non
-atomic write
/opt/tinyos-2.x/tos/chips/lis3l02dq/HplLIS3L02DQLogicSPIP.nc:165: warning: non
-atomic write
/opt/tinyos-2.x/tos/sensorboards/im2sb/LIS3L02DQInternalP.nc:53: warning: non-at
omic accesses to shared variable `currentId':
/opt/tinyos-2.x/tos/sensorboards/im2sb/LIS3L02DQInternalP.nc:83: warning: non-
atomic write
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):64: warning: non-atomic accesses to shared variable `errorRes
ult':
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):72: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):84: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):96: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):120: warning: non-atomic write
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):121: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):129: warning: non-atomic write
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):130: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):138: warning: non-atomic write
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):139: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):63: warning: non-atomic accesses to shared variable `byteResu
lt':
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):69: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):75: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):75: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):81: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):87: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):87: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):93: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):99: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQReaderP.nc(TestSensorC.Sensor.Ha
lLIS3L02DQReaderP):99: warning: non-atomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQControlP.nc:58: warning: non-ato
mic accesses to shared variable `clientResult':
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQControlP.nc:67: warning: non-a
tomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQControlP.nc:72: warning: non-a
tomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQControlP.nc:77: warning: non-a
tomic read
/opt/tinyos-2.x/tos/chips/lis3l02dq/HalLIS3L02DQControlP.nc:82: warning: non-a
tomic read
TestSensorM.nc: In function `TestSensorM$ReadAccelX$readDone':
TestSensorM.nc:86: warning: passing arg 2 of `TestSensorM$Packet$getPayload' mak
es integer from pointer without a cast
compiled TestSensorC to build/intelmote2/main.exe
66316 bytes in ROM
576 bytes in RAM
9216 bytes in STACK
252352 bytes available in HEAP
xscale-elf-objcopy --output-target=binary build/intelmote2/main.exe build/intelm
ote2/main.bin.out
installing intelmote2 binary using the USB boot loader
/opt/tinyos-2.x-contrib/intelmote2/tools/platforms/intelmote2/bootloader//USBLoa
derHost.exe -p build/intelmote2/main.bin.out
Program Mode, File name = build/intelmote2/main.bin.out
File Size 66316
Device not detected
Device not connected to USB. Retry
Device not detected
Device not connected to USB. Retry
Device not detected
Device not connected to USB. Retry
USB Communication Failed. Device not connected to USB.
Installation
The application compiled above, but USBLoaderHost failed to find the Intelmote2. This is a common occurrence. Just disconnect/reconnect the USB cable, jiggle it, and remove an add-on boards attached to the Intelmote2 until it is able to detect the mote. Eventually, you should see the following output of a successful image transfer:
$ make intelmote2 debug reinstall bootloader
/opt/tinyos-2.x-contrib/intelmote2/support/make/bootloader.extra:14: warning: ov
erriding commands for target `program'
/opt/tinyos-2.x/support/make/pxa27x/jflashmm.extra:13: warning: ignoring old com
mands for target `program'
/opt/tinyos-2.x-contrib/intelmote2/support/make/bootloader.extra:18: warning: ov
erriding commands for target `program_input'
/opt/tinyos-2.x/support/make/pxa27x/jflashmm.extra:18: warning: ignoring old com
mands for target `program_input'
/opt/tinyos-2.x-contrib/intelmote2/support/make/intelmote2.extra:41: warning: ov
erriding commands for target `bytes'
/opt/tinyos-2.x/support/make/pxa27x/pxa27x.rules:102: warning: ignoring old comm
ands for target `bytes'
xscale-elf-objcopy --output-target=binary build/intelmote2/main.exe build/intelm
ote2/main.bin.out
installing intelmote2 binary using the USB boot loader
/opt/tinyos-2.x-contrib/intelmote2/tools/platforms/intelmote2/bootloader//USBLoa
derHost.exe -p build/intelmote2/main.bin.out
Program Mode, File name = build/intelmote2/main.bin.out
File Size 66316
Device not detected
Device not connected to USB. Retry
Device detected
Device detected
GET_IMAGE_DETAILS Received.
ImgSize=66316, Num Packets= 1088
Total Packets Uploaded = 0, 0.00% completed
Sending CRC Check command 62169
Total Packets Uploaded = 546, 50.00% completed
Sending CRC Check command 59977
Image Download Completed
CRC of the Image = 28566, Total Size = 66316
Time taken for Upload 4271 Milli Seconds
Image Verification Completed.
Loading Image to boot location and marking it as golden.
Time Elapsed till IMG_VERIFY 6990 Milli Seconds
Time Elapsed 10583 Milli Seconds
Successfully copied image to boot location.
Mapped Boot Image to golden. Booting New Image.
Overall Time Elapsed 13240 Milli Seconds
Execution
After the application is transferred, install the ITS400 sensor board and the UART board onto the Intelmote2 and reboot the mote.
Then, launch the Java application that comes with the test. You should see the following output, which displays the raw acceleration reading.
Liang Fok@liang-mbp /opt/tinyos-2.x/tos/sensorboards/im2sb/examples $ java TestSensor -comm serial@COM6:115200 serial@COM6:115200: resynchronising Received packet. Value= 724 Received packet. Value= 725 Received packet. Value= 728 Received packet. Value= 729 Received packet. Value= 718 Received packet. Value= 730 Received packet. Value= 732 Received packet. Value= 742 Received packet. Value= 720 Received packet. Value= 740 Received packet. Value= 738 Received packet. Value= 738 Received packet. Value= 739 Received packet. Value= 735 Received packet. Value= 689 Received packet. Value= 825 Received packet. Value= 760 Received packet. Value= 669 Received packet. Value= 821 Received packet. Value= 756 Received packet. Value= 835 Received packet. Value= 896 Received packet. Value= 757