#!/bin/bash # Copyright (c) 2008 Johns Hopkins University. # All rights reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose, without fee, and without written # agreement is hereby granted, provided that the above copyright # notice, the (updated) modification history and the author appear in # all copies of this source code. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA, # OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF # THE POSSIBILITY OF SUCH DAMAGE. # @author Chieh-Jan Mike Liang if [ $# -ne 1 -a $# -ne 2 ] then echo "Usage: `basename $0` path_to_cthread_app [options]" echo "" echo "-a --array" echo " Print out the loadable binary code as a byte array." exit -1 fi CFILE=$1 FLAG=$2 GCC="msp430-gcc" OBJCOPY="msp430-objcopy" NESCFLAGS="-target=telosb -x nesc -fnesc-target=msp430" CFLAGS="-c -gcc=$GCC -mmcu=msp430f1611 -Os -mmpy=none -Wall -Wshadow" OBJFILE=`basename $CFILE .c`.o BINFILE=`basename $CFILE .c`.bin TOSFILE=`basename $CFILE .c`.tos TOS_THREADS_DIR=$TOSDIR/lib/tosthreads THREADS_CSYSTEM_DIR=$TOS_THREADS_DIR/csystem THREADS_SYSTEM_DIR=$TOS_THREADS_DIR/system THREADS_INTERFACES_DIR=$TOS_THREADS_DIR/interfaces THREADS_TYPES_DIR=$TOS_THREADS_DIR/types THREADS_MSP430_DIR=$TOS_THREADS_DIR/chips/msp430 THREADS_TMOTE_SENSORS_DIR=$TOS_THREADS_DIR/tos/sensorboards/tmote_onboard THREADS_PRINTF_DIR=$TOS_THREADS_DIR/tos/lib/printf TOS_TELOSA_DIR=$TOSDIR/platforms/telosa TOS_TELOSB_DIR=$TOSDIR/platforms/telosb TOS_CC2420_DIR=$TOSDIR/chips/cc2420 TOS_SERIAL_DIR=$TOSDIR/lib/serial TOS_SYSTEM_DIR=$TOSDIR/system TOS_TYPES_DIR=$TOSDIR/types #Set up includes CFLAGS="$CFLAGS -I$THREADS_CSYSTEM_DIR -I$THREADS_SYSTEM_DIR -I$THREADS_INTERFACES_DIR -I$THREADS_TYPES_DIR -I$THREADS_MSP430_DIR" CFLAGS="$CFLAGS -I$THREADS_PRINTF_DIR" CFLAGS="$CFLAGS -I$THREADS_TMOTE_SENSORS_DIR" CFLAGS="$CFLAGS -DTOSTHREAD_EXTERNAL_BINARY" #Set up the proper scheduler NESCFLAGS="$NESCFLAGS -tosscheduler=TinyTaskSchedulerC,TinyTaskSchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" rm -rf $OBJFILE rm -rf $TOSFILE COMMAND="ncc $CFLAGS $NESCFLAGS $CFILE" echo $COMMAND command $COMMAND COMMAND="$OBJCOPY --output-target=binary $OBJFILE $BINFILE" echo $COMMAND command $COMMAND COMMAND="tosthreads-dynamic-app $FLAG $OBJFILE $BINFILE $TOSFILE" echo $COMMAND command $COMMAND rm $BINFILE rm $OBJFILE