[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/tosboot TOSBoot.h, 1.1, 1.2 TOSBoot.nc, 1.1, 1.2 TOSBootM.nc, 1.2, 1.3 Deluge.h, 1.1, NONE

Razvan Musaloiu-E. razvanm at users.sourceforge.net
Sun Jan 13 20:22:04 PST 2008


Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/tosboot
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv20053/tos/lib/tosboot

Modified Files:
	TOSBoot.h TOSBoot.nc TOSBootM.nc 
Removed Files:
	Deluge.h 
Log Message:
Super Duper update to Deluge T2. The manual and the testing scripts are temporary out-of-date.

Some of the improvements are:
- simplified images (ident and metadata were merged)
- network-order representation of fields
- new version of tinyos.py
- improved sharing of volumes.


Index: TOSBoot.h
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tosboot/TOSBoot.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TOSBoot.h	11 Jul 2007 00:42:56 -0000	1.1
--- TOSBoot.h	14 Jan 2008 04:22:02 -0000	1.2
***************
*** 31,39 ****
  #include "TOSBoot_platform.h"
  
- typedef struct tosboot_args_t {
-   uint32_t imageAddr;
-   uint8_t  gestureCount;
-   bool     noReprogram;
- } tosboot_args_t;
- 
  #endif
--- 31,33 ----

Index: TOSBoot.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tosboot/TOSBoot.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TOSBoot.nc	11 Jul 2007 00:42:56 -0000	1.1
--- TOSBoot.nc	14 Jan 2008 04:22:02 -0000	1.2
***************
*** 30,33 ****
--- 30,34 ----
  
  includes Deluge;
+ includes DelugePageTransfer;
  includes TOSBoot;
  

Index: TOSBootM.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tosboot/TOSBootM.nc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TOSBootM.nc	8 Oct 2007 20:10:08 -0000	1.2
--- TOSBootM.nc	14 Jan 2008 04:22:02 -0000	1.3
***************
*** 71,89 ****
    in_flash_addr_t extFlashReadAddr() {
      in_flash_addr_t result = 0;
!     uint8_t  i;
!     for ( i = 0; i < 4; i++ )
        result |= ((in_flash_addr_t)call ExtFlash.readByte() & 0xff) << (i*8);    
      return result;
    }
  
!   bool verifyImage(ex_flash_addr_t startAddr) {
  
!     uint16_t crcTarget = 0, crcTmp = 0;
!     uint16_t addr, len;
!     pgnum_t  numPgs;
      uint8_t  i;
  
      // read size of image
!     call ExtFlash.startRead(startAddr + offsetof(DelugeImgDesc,numPgs));
      numPgs = call ExtFlash.readByte();
      call ExtFlash.stopRead();
--- 71,110 ----
    in_flash_addr_t extFlashReadAddr() {
      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);    
      return result;
    }
  
!   bool verifyBlock(ex_flash_addr_t crcAddr, ex_flash_addr_t startAddr, uint16_t len)
!   {
!     uint16_t crcTarget, crcTmp;
  
!     // read crc
!     call ExtFlash.startRead(crcAddr);
!     crcTarget = (uint16_t)(call ExtFlash.readByte() & 0xff) << 8;
!     crcTarget |= (uint16_t)(call ExtFlash.readByte() & 0xff);
!     call ExtFlash.stopRead();
! 
!     // compute crc
!     call ExtFlash.startRead(startAddr);
!     for ( crcTmp = 0; len; len-- )
!       crcTmp = crcByte(crcTmp, call ExtFlash.readByte());
!     call ExtFlash.stopRead();
!     
!     return crcTarget == crcTmp;
!   }
! 
!   bool verifyImage(ex_flash_addr_t startAddr) {
!     uint16_t addr;
!     uint8_t  numPgs;
      uint8_t  i;
  
+     if (!verifyBlock(startAddr + offsetof(DelugeIdent,crc), 
+ 		     startAddr, offsetof(DelugeIdent,crc)))
+       return FALSE;
+ 
      // read size of image
!     call ExtFlash.startRead(startAddr + offsetof(DelugeIdent,numPgs));
      numPgs = call ExtFlash.readByte();
      call ExtFlash.stopRead();
***************
*** 92,123 ****
        return FALSE;
  
!     startAddr += DELUGE_METADATA_SIZE;
! 
      addr = DELUGE_CRC_BLOCK_SIZE;
-     len = DELUGE_BYTES_PER_PAGE-DELUGE_CRC_BLOCK_SIZE;
- 
-     for ( i = 0; i < numPgs && crcTarget == crcTmp; i++ ) {
- 
-       // read crc
-       call ExtFlash.startRead(startAddr + i*sizeof(uint16_t));
-       crcTarget = (uint16_t)(call ExtFlash.readByte() & 0xff);
-       crcTarget |= (uint16_t)(call ExtFlash.readByte() & 0xff) << 8;
-       call ExtFlash.stopRead();
  
!       // compute crc
!       call ExtFlash.startRead(startAddr + addr);
!       for ( crcTmp = 0; len; len-- )
! 	crcTmp = crcByte(crcTmp, call ExtFlash.readByte());
!       call ExtFlash.stopRead();
! 
!       addr = (uint16_t)(i+1)*DELUGE_BYTES_PER_PAGE;
!       len = DELUGE_BYTES_PER_PAGE;
      }
  
!     return (i == numPgs) && (crcTarget == crcTmp);
    }
  
    error_t programImage(ex_flash_addr_t startAddr) {
- 
      uint8_t  buf[TOSBOOT_INT_PAGE_SIZE];
      uint16_t pageAddr, newPageAddr;
--- 113,134 ----
        return FALSE;
  
!     startAddr += DELUGE_IDENT_SIZE;
      addr = DELUGE_CRC_BLOCK_SIZE;
  
!     for ( i = 0; i < numPgs; i++ ) {
!       if (!verifyBlock(startAddr + i*sizeof(uint16_t), 
! 		       startAddr + addr, DELUGE_BYTES_PER_PAGE)) {
! 	if (i == 0)
! 	  while (1)
! 	    call Leds.flash(1);
! 	return FALSE;
!       }
!       addr += DELUGE_BYTES_PER_PAGE;
      }
  
!     return TRUE;
    }
  
    error_t programImage(ex_flash_addr_t startAddr) {
      uint8_t  buf[TOSBOOT_INT_PAGE_SIZE];
      uint16_t pageAddr, newPageAddr;
***************
*** 129,133 ****
        return R_INVALID_IMAGE_ERROR;
  
!     curAddr = startAddr + DELUGE_METADATA_SIZE + DELUGE_CRC_BLOCK_SIZE + DELUGE_IDENT_SIZE;
  
      call ExtFlash.startRead(curAddr);
--- 140,144 ----
        return R_INVALID_IMAGE_ERROR;
  
!     curAddr = startAddr + DELUGE_IDENT_SIZE + DELUGE_CRC_BLOCK_SIZE;
  
      call ExtFlash.startRead(curAddr);
***************
*** 148,152 ****
      }
      
!     call ExtFlash.stopRead();   // MIKE_LIANG
      
      while ( secLength ) {
--- 159,163 ----
      }
      
!     call ExtFlash.stopRead();
      
      while ( secLength ) {
***************
*** 160,164 ****
  	// check if secLength is all ones
  	if ( secLength == 0xffffffff ) {
! 	  call ExtFlash.stopRead();   // MIKE_LIANG
  	  return FAIL;
  	}
--- 171,175 ----
  	// check if secLength is all ones
  	if ( secLength == 0xffffffff ) {
! 	  call ExtFlash.stopRead();
  	  return FAIL;
  	}
***************
*** 180,184 ****
        call Leds.set(pageAddr);
  
- 
        // write out page
        if (call ProgFlash.write(pageAddr*TOSBOOT_INT_PAGE_SIZE, buf,
--- 191,194 ----
***************
*** 199,203 ****
    void startupSequence() {
  
!     tosboot_args_t args;
  
      // check voltage and make sure flash can be programmed
--- 209,213 ----
    void startupSequence() {
  
!     BootArgs args;
  
      // check voltage and make sure flash can be programmed

--- Deluge.h DELETED ---



More information about the Tinyos-2-commits mailing list