[Tinyos-beta-commits] CVS: tinyos-1.x/beta/platform/imote2 TrickleM.nc, 1.2, 1.3

Josh jsherbach at users.sourceforge.net
Fri Sep 2 16:07:01 PDT 2005


Update of /cvsroot/tinyos/tinyos-1.x/beta/platform/imote2
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19007

Modified Files:
	TrickleM.nc 
Log Message:
fin

Index: TrickleM.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/platform/imote2/TrickleM.nc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TrickleM.nc	1 Sep 2005 18:12:54 -0000	1.2
--- TrickleM.nc	2 Sep 2005 23:06:59 -0000	1.3
***************
*** 9,13 ****
  }
  implementation {
-   int sprintf(char *, const char *, ...) __attribute__ ((C, spontaneous));  
  
    extern void __Binary_Mover() __attribute__ ((C,spontaneous));
--- 9,12 ----
***************
*** 16,20 ****
  #include "Flash.h"
  #include "PXA27XUSBClient.h"
- 
    void verifyData(uint32_t addr, uint32_t numBytes);
    void reboot(uint32_t imageAddr, uint32_t imageSize);
--- 15,18 ----
***************
*** 51,59 ****
  				      uint32_t i, uint32_t n, uint8_t type){
      uint32_t j;
      if((type >> IMOTE_HID_TYPE_MSC) == IMOTE_HID_TYPE_MSC_BLOADER){
        switch(buffer[0]){
        case 0:
! 	startWriteAddr = (buffer[1] << 24) | (buffer[2] << 16) |
! 	  (buffer[3] << 8) | buffer[4];
  	break;
        case 1:
--- 49,58 ----
  				      uint32_t i, uint32_t n, uint8_t type){
      uint32_t j;
+     uint8_t status;
      if((type >> IMOTE_HID_TYPE_MSC) == IMOTE_HID_TYPE_MSC_BLOADER){
        switch(buffer[0]){
        case 0:
! 	startWriteAddr = ((buffer[1] << 24) | (buffer[2] << 16) |
! 			  (buffer[3] << 8) | buffer[4]);
  	break;
        case 1:
***************
*** 61,68 ****
  	break;
        case 2:
! 	reboot((buffer[1] << 24) | (buffer[2] << 16) | (buffer[3] << 8) |
! 	       buffer[4],
! 	       (buffer[5] << 24) | (buffer[6] << 16) | (buffer[7] << 8) |
! 	       buffer[8]);
  	break;
        }
--- 60,65 ----
  	break;
        case 2:
! 	j = (buffer[1] << 24) | (buffer[2] << 16) | (buffer[3] << 8) | buffer[4];
! 	reboot(j + 4,*(uint32_t*)j);
  	break;
        }
***************
*** 73,94 ****
      
      if(i == 0){
!       for(j = 0; j < numBytesRead * (n + 1); j += FLASH_BLOCK_SIZE)
! 	;//call Flash.erase(startWriteAddr + j);
!       lastWriteAddr = startWriteAddr;
      }
- 
-     //call Flash.write(lastWriteAddr, buffer, numBytesRead);
      
      lastWriteAddr += numBytesRead;
      if(i % 5 == 0 || i - n < 5){
-       if(n==i){
- 	uint8_t *temp = (uint8_t *)malloc(4);
- 	*(uint32_t *)temp = i;
- 	call SendJTPacket.send(temp, 4, IMOTE_HID_TYPE_CL_BINARY |
- 			       (IMOTE_HID_TYPE_MSC_BLOADER << 
- 				IMOTE_HID_TYPE_MSC));
- 	verifyData(startWriteAddr, lastWriteAddr - startWriteAddr);
-       }
-       else{
  	uint8_t *temp = (uint8_t *)malloc(4);
  	*(uint32_t *)temp = i;
--- 70,98 ----
      
      if(i == 0){
!       for(j = 0; j < numBytesRead * (n + 1) + 4; j += FLASH_BLOCK_SIZE){//4 extra bytes for size
! 	status = call Flash.erase(startWriteAddr + j);
! 	if(status == FAIL){
! 	  uint8_t *temp = (uint8_t *)malloc(5);
! 	  *(uint32_t *)temp = 1;
! 	  call SendJTPacket.send(temp, 5, IMOTE_HID_TYPE_CL_BINARY |
! 				 (IMOTE_HID_TYPE_MSC_BLOADER <<
! 				  IMOTE_HID_TYPE_MSC));
! 	  return SUCCESS;
! 	}
!       }
!       lastWriteAddr = startWriteAddr + 4;//save the first 4 bytes for size
!     }
!     status = call Flash.write(lastWriteAddr, buffer, numBytesRead);
!     if(status == FAIL){
! 	  uint8_t *temp = (uint8_t *)malloc(5);
! 	  *(uint32_t *)temp = 2;
! 	  call SendJTPacket.send(temp, 5, IMOTE_HID_TYPE_CL_BINARY |
! 				 (IMOTE_HID_TYPE_MSC_BLOADER <<
! 				  IMOTE_HID_TYPE_MSC));
! 	  return SUCCESS;
      }
      
      lastWriteAddr += numBytesRead;
      if(i % 5 == 0 || i - n < 5){
  	uint8_t *temp = (uint8_t *)malloc(4);
  	*(uint32_t *)temp = i;
***************
*** 96,105 ****
  			       (IMOTE_HID_TYPE_MSC_BLOADER << 
  				IMOTE_HID_TYPE_MSC));
!       }
      }
      return SUCCESS;
    }
  
!   void reboot(uint32_t imageAddr, uint32_t imageSize){
      uint32_t binSize = (uint32_t)&__Binary_Mover_true_end;
      uint8_t *rebootBinary;
--- 100,122 ----
  			       (IMOTE_HID_TYPE_MSC_BLOADER << 
  				IMOTE_HID_TYPE_MSC));
! 	if(n==i){
! 	  uint32_t size[1];
! 	  size[0] = lastWriteAddr - (startWriteAddr + 4);
! 	  status = call Flash.write(startWriteAddr, (uint8_t *)size, 4);
! 	  if(status == FAIL){
! 	    temp = (uint8_t *)malloc(5);
! 	    *(uint32_t *)temp = 3;
! 	    call SendJTPacket.send(temp, 5, IMOTE_HID_TYPE_CL_BINARY |
! 				   (IMOTE_HID_TYPE_MSC_BLOADER <<
! 				    IMOTE_HID_TYPE_MSC));
! 	    return SUCCESS;
! 	  }
! 	  verifyData(startWriteAddr + 4, size[0]);
! 	}
      }
      return SUCCESS;
    }
  
!   void reboot(uint32_t imageAddr, uint32_t imageSize) __attribute__((noinline)){
      uint32_t binSize = (uint32_t)&__Binary_Mover_true_end;
      uint8_t *rebootBinary;
***************
*** 107,117 ****
      rebootBinary = (uint8_t *)malloc(binSize);
      memcpy(rebootBinary, __Binary_Mover, binSize);
!     call USBControl.stop();
      asm volatile(
! 		 "mov r0,%0;  \
! 		 mov r1,%1;   \
! 		 mov PC,%2"
  		 :/*no output*/
! 		 :"r"(imageAddr), "r"(imageSize), "r"(rebootBinary));
      /*everything is clobbered*/
    }
--- 124,136 ----
      rebootBinary = (uint8_t *)malloc(binSize);
      memcpy(rebootBinary, __Binary_Mover, binSize);
!     //call USBControl.stop();
      asm volatile(
! 		 "mov r1,%0;  \
! 		 mov r2,%1;   \
!                  mov r3,%2;   \
! 		 mov PC,r3;"
  		 :/*no output*/
! 		 :"r"(imageAddr), "r"(imageSize), "r"(rebootBinary)
! 		 :"r1","r2","r3","memory");
      /*everything is clobbered*/
    }



More information about the Tinyos-beta-commits mailing list