From: sallai Date: Thu, 24 Jan 2008 21:02:05 +0000 (+0000) Subject: tosboot support for the iris mote X-Git-Tag: release_tinyos_2_1_0_0~579 X-Git-Url: https://oss.titaniummirror.com/gitweb/?p=tinyos-2.x.git;a=commitdiff_plain;h=23086cd070db4df53f5b9ae19af0b7dad0151f51 tosboot support for the iris mote --- diff --git a/tos/lib/tosboot/Makefile b/tos/lib/tosboot/Makefile index 56924184..0459d0f6 100644 --- a/tos/lib/tosboot/Makefile +++ b/tos/lib/tosboot/Makefile @@ -3,19 +3,19 @@ # tab:2 # # -# "Copyright (c) 2000-2005 The Regents of the University of California. +# "Copyright (c) 2000-2005 The Regents of the University of California. # 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 following # two paragraphs and the author appear in all copies of this software. -# +# # IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT # OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF # CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# +# # THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY # AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS @@ -52,6 +52,13 @@ ifeq ($(MAKECMDGOALS),micaz) CFLAGS += -I../net/Deluge endif +ifeq ($(MAKECMDGOALS),iris) + CFLAGS += -DTOSBOOT_START=0x1f000 -DTOSBOOT_END=0x20000 + CFLAGS += -Wl,--section-start=.text=0x1f000 + CFLAGS += -Iiris -Iat45db -Iavr -Imicaz -Ilib + CFLAGS += -I../net/Deluge +endif + # ifeq ($(MAKECMDGOALS),telosa) # CFLAGS += -DTOSBOOT_START=0x1100 -DTOSBOOT_END=0x1a00 # CFLAGS += -Iat45db -Imsp430 -Itelos -Ilib diff --git a/tos/lib/tosboot/TOSBootM.nc b/tos/lib/tosboot/TOSBootM.nc index fe6eec83..fa1893c7 100644 --- a/tos/lib/tosboot/TOSBootM.nc +++ b/tos/lib/tosboot/TOSBootM.nc @@ -1,17 +1,17 @@ /* - * "Copyright (c) 2000-2005 The Regents of the University of California. + * "Copyright (c) 2000-2005 The Regents of the University of California. * 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 following * two paragraphs and the author appear in all copies of this software. - * + * * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS @@ -72,7 +72,7 @@ implementation { in_flash_addr_t result = 0; int8_t i; for ( i = 3; i >= 0; i-- ) - result |= ((in_flash_addr_t)call ExtFlash.readByte() & 0xff) << (i*8); + result |= ((in_flash_addr_t)call ExtFlash.readByte() & 0xff) << (i*8); return result; } @@ -91,7 +91,7 @@ implementation { for ( crcTmp = 0; len; len-- ) crcTmp = crcByte(crcTmp, call ExtFlash.readByte()); call ExtFlash.stopRead(); - + return crcTarget == crcTmp; } @@ -100,7 +100,7 @@ implementation { uint8_t numPgs; uint8_t i; - if (!verifyBlock(startAddr + offsetof(DelugeIdent,crc), + if (!verifyBlock(startAddr + offsetof(DelugeIdent,crc), startAddr, offsetof(DelugeIdent,crc))) return FALSE; @@ -116,7 +116,7 @@ implementation { addr = DELUGE_CRC_BLOCK_SIZE; for ( i = 0; i < numPgs; i++ ) { - if (!verifyBlock(startAddr + i*sizeof(uint16_t), + if (!verifyBlock(startAddr + i*sizeof(uint16_t), startAddr + addr, DELUGE_BYTES_PER_PAGE)) { if (i == 0) while (1) @@ -149,7 +149,7 @@ implementation { #if defined(PLATFORM_TELOSB) if (intAddr != TOSBOOT_END) { -#elif defined(PLATFORM_MICAZ) +#elif defined(PLATFORM_MICAZ) || defined(PLATFORM_IRIS) if (intAddr != 0) { #else #error "Target platform is not currently supported by Deluge T2" @@ -157,11 +157,11 @@ implementation { call ExtFlash.stopRead(); return R_INVALID_IMAGE_ERROR; } - + call ExtFlash.stopRead(); - + while ( secLength ) { - + pageAddr = newPageAddr = intAddr / TOSBOOT_INT_PAGE_SIZE; call ExtFlash.startRead(curAddr); @@ -176,7 +176,7 @@ implementation { buf[(uint16_t)intAddr % TOSBOOT_INT_PAGE_SIZE] = call ExtFlash.readByte(); intAddr++; curAddr++; - + if ( --secLength == 0 ) { intAddr = extFlashReadAddr(); secLength = extFlashReadAddr(); @@ -219,7 +219,7 @@ implementation { startupLeds(); runApp(); } - + // get current value of counter call IntFlash.read((uint8_t*)TOSBOOT_ARGS_ADDR, &args, sizeof(args)); @@ -255,7 +255,7 @@ implementation { args.gestureCount = 0xff; args.noReprogram = TRUE; call IntFlash.write((uint8_t*)TOSBOOT_ARGS_ADDR, &args, sizeof(args)); - + runApp(); } diff --git a/tos/lib/tosboot/iris/HardwareC.nc b/tos/lib/tosboot/iris/HardwareC.nc new file mode 100644 index 00000000..c0c3baa8 --- /dev/null +++ b/tos/lib/tosboot/iris/HardwareC.nc @@ -0,0 +1,77 @@ +// $Id$ + +/* tab:2 + * + * + * "Copyright (c) 2000-2005 The Regents of the University of California. + * 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 following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF + * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." + * + */ + +/* + * Copyright (c) 2007, Vanderbilt 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 following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE VANDERBILT UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE VANDERBILT + * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE VANDERBILT UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE VANDERBILT UNIVERSITY HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + */ + +/** + * @author Jonathan Hui + * @author Janos Sallai + */ + +#include + +module HardwareC { + provides { + interface Hardware; + } +} + +implementation { + + command void Hardware.init() { + // disable watchdog (if accidentally left on) + MCUSR = 0; + wdt_disable(); + } + + command void Hardware.reboot() { + // enable watchdog + wdt_enable(WDTO_1S); + // enter infinite loop + while(1); + } + +} diff --git a/tos/lib/tosboot/iris/ProgFlashM.nc b/tos/lib/tosboot/iris/ProgFlashM.nc new file mode 100644 index 00000000..75cfd71e --- /dev/null +++ b/tos/lib/tosboot/iris/ProgFlashM.nc @@ -0,0 +1,65 @@ +// $Id$ + +/* tab:2 + * + * + * "Copyright (c) 2000-2005 The Regents of the University of California. + * 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 following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF + * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." + * + */ + +/** + * @author Jonathan Hui + */ +#include + +module ProgFlashM { + provides { + interface ProgFlash; + } +} + +implementation { + + + command error_t ProgFlash.write(in_flash_addr_t addr, uint8_t* buf, in_flash_addr_t len) { + + uint16_t* wordBuf = (uint16_t*)buf; + uint32_t i; + + if ( addr + len > TOSBOOT_START ) + return FAIL; + + boot_page_erase( addr ); + while( boot_rww_busy() ) + boot_rww_enable(); + + for ( i = 0; i < len; i += 2 ) + boot_page_fill( addr + i, *wordBuf++ ); + + boot_page_write( addr ); + + while ( boot_rww_busy() ) + boot_rww_enable(); + + return SUCCESS; + + } + +} diff --git a/tos/lib/tosboot/iris/VoltageC.nc b/tos/lib/tosboot/iris/VoltageC.nc new file mode 100644 index 00000000..ee528708 --- /dev/null +++ b/tos/lib/tosboot/iris/VoltageC.nc @@ -0,0 +1,79 @@ +// $Id$ + +/* tab:2 + * + * + * "Copyright (c) 2000-2004 The Regents of the University of California. + * 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 following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF + * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." + * + */ + +/* + * Copyright (c) 2007, Vanderbilt 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 following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE VANDERBILT UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE VANDERBILT + * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE VANDERBILT UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE VANDERBILT UNIVERSITY HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + */ + +/** + * @author Jonathan Hui + * @author Janos Sallai + */ + +module VoltageC { + provides { + interface Voltage; + } +} + +implementation { + + command bool Voltage.okToProgram() { + // 250 KHz ADC clock (4MHz/16) + outp( 0x04, ADCSRA ); + // clear interrupt flag by writing a 1 + sbi( ADCSRA, ADIF ); + // setup input channel + outp( VOLTAGE_PORT, ADMUX ); + // adc enable + sbi( ADCSRA, ADEN ); + // adc start conversion + sbi( ADCSRA, ADSC ); + // wait for conversion to complete + while ( !bit_is_set( ADCSRA, ADIF ) ); + + return ( __inw(ADCL) < VTHRESH ); + } + +}