[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