[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