Hi,

Thanks for your reply. It said how to fix it as follows

Here is a trivial patch:
--- gcc-3.2.3/gcc/config/msp430/msp430.c        2007-08-28
11:07:50.000000000 +0200
+++ gcc-3.2.3patched/gcc/config/msp430/msp430.c 2007-08-28
11:19:17.000000000 +0200
@@ -5414,11 +5414,11 @@
  dummy += 6;
  OUT_INSN (len, "clr\t%B0", operands);
  OUT_INSN (len, "clr\t%C0", operands);
  OUT_INSN (len, "clr\t%D0", operands);

-  if (GET_CODE (operands[0]) == REG)
+  if ((GET_CODE (operands[0]) == REG) && len)
    *len -= 3;

  if (len)
    *len = dummy;
But Where am i supposed to find this msp430.c file. I have searched this
entire directory. But It didn't pop up. Thanks.

Regarsd,
Bai

On Thu, Mar 12, 2009 at 3:42 PM, Allan McInnes <
[email protected]> wrote:

> The error you are seeing is a problem with mspgcc, not with Jan's code. You
> can find a discussion of the bug and suggestions for a bugfix at
> https://www.millennium.berkeley.edu/pipermail/tinyos-help/2007-August/027578.html
> Cheers,
> Allan
>
>
>   On 12/03/2009, at 4:27 PM, BAI LI wrote:
>
>   Dear Jan amd TinyOS community,
>
> I am working on the hash message transmission part of the Australia
> government funded project. However I experienced some odd probelms related
> to the interfaces you developed. Could you help me out what is wrong? I
> can't see any problems. It could be something wrong with the interface you
> designed. Thanks.
>
> If anyone can help me out, it will be really appreciated.
>
> Here is the code: in the main file.
>
> #include <Timer.h>
> #include "printf.h"
> #include "sha1.h"
> module App {
>   uses interface Boot;
>   uses interface Leds;
>   uses interface Timer<TMilli> as Timer0;
>   uses interface Packet;
>   uses interface AMPacket;
>   uses interface AMSend;
>   uses interface Receive;
>   uses interface SplitControl as AMControl;
>   uses interface sha1;
>   uses interface LocalTime<TMilli>;
> }
> implementation {
>   uint8_t sha1sum[20];
>
>   //uint64_t cmd=0x0000000000000000;   //R XOR S=m
>
>
>   uint32_t destinationMote=0x00000002;
>   uint8_t message[8]={0};
>   uint8_t length=8;
>   message_t pkt;
>   SHA1Context ctx;
>   SHA1Context temp;
>   bool busy = FALSE;
>   uint8_t msg1=0;
>
>   event void Boot.booted() {
>     call AMControl.start();
>   }
>   event void AMControl.startDone(error_t err) {
>
>  if (err == SUCCESS) {
>
>
>       call Timer0.startOneShot(2000);
>     }
>     else {
>       call AMControl.start();
>     }
>   }
>   event void AMControl.stopDone(error_t err) {
>   }
>   event void Timer0.fired() {
>     uint64_t R=0x0000000000000000;   //R XOR S=m
>   uint64_t S=0x1234567890ABCDEF;
>     uint64_t M=0x0000000000000000;
>   uint64_t m=0x0000000000000000;
>  int i;
>     //uint64_t hash;
>  call Leds.led1On();
>  R=call LocalTime.get();
>  m=R^S^M;
>  for(i=0;i<8;i++){
>   message[i]=(uint8_t)(m&0x000000ff);
>   m>>=8;
>  }
>  //printf("m= %lx \n",m);
>  //printfflush();
>  //*message="abc";
>  call sha1.reset(&ctx);
>     call sha1.update(&ctx, message,length);
>  call sha1.digest(&ctx, sha1sum);
>
>  if(TOS_NODE_ID==0x00000001){
>     if (!busy) {
>       HashMsg* hmpkt =
>  (HashMsg*)(call Packet.getPayload(&pkt, sizeof(HashMsg)));
>       if (hmpkt == NULL) {
>  return;
>       }
>    hmpkt->flag=1;
>       hmpkt->nodeid = TOS_NODE_ID;
>       hmpkt->payload_MD1 = ctx.Intermediate_Hash[0];
>    hmpkt->payload_MD2 = ctx.Intermediate_Hash[1];
>    hmpkt->payload_MD3 = ctx.Intermediate_Hash[2];
>    hmpkt->payload_MD4 = ctx.Intermediate_Hash[3];
>    hmpkt->payload_MD5 = ctx.Intermediate_Hash[4];
>    hmpkt->payload_M=M;
>    hmpkt->payload_R=R;
>    if (call AMSend.send(destinationMote,
>           &pkt, sizeof(HashMsg)) == SUCCESS) {
>   //call Leds.led0On();
>         busy = TRUE;
>       }
>     }
>  }
>   }
>
>
>   event void AMSend.sendDone(message_t* msg, error_t err) {
>     if (&pkt == msg) {
>       busy = FALSE;
>     }
>   }
>   event message_t* Receive.receive(message_t* msg, void* payload, uint8_t
> len){
>     uint32_t receivedMD[5]={0};
>  uint64_t receivedR=0;
>  uint64_t receivedM=0;
>  uint64_t receivedm=0;
>  uint64_t receivedS=0x1234567890ABCDEF;
>  int i;
>
>  HashMsg* hmpkt = (HashMsg*)payload;
>
>  receivedMD[0]=hmpkt->payload_MD1;
>  receivedMD[1]=hmpkt->payload_MD2;
>  receivedMD[2]=hmpkt->payload_MD3;
>  receivedMD[3]=hmpkt->payload_MD4;
>  receivedMD[4]=hmpkt->payload_MD5;
>  receivedR=hmpkt->payload_R;
>  receivedM=hmpkt->payload_M;
>     receivedm=receivedR^receivedM^receivedS;
>
>  for(i=0;i<8;i++){                                             //if I
> removed this FOR part, i can compile it.
>   message[i]=(uint8_t)(receivedm&0x000000ff);
>   receivedm>>=8;
>  }
>
>  call sha1.reset(&temp);
>  call sha1.update(&temp, message,length);
>  call sha1.digest(&temp, sha1sum);
>  call Leds.led1On();
>
>     return msg;
>   }
>
>
> }
>
> If I removed the red highlight part, I can compile it otherwise I got the
> errors as follows:
>
> /opt/tinyos-2.x/tos/chips/msp430/usart/HplMsp430UsartInterrupts.nc: In
> function
> `App$Receive$receive':
> /opt/tinyos-2.x/tos/chips/msp430/usart/HplMsp430UsartInterrupts.nc:49:
> internal
> error: Segmentation fault
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <URL:http://gcc.gnu.org/bugs.html <http://gcc.gnu.org/bugs.html>> for
> instructions.
> make: *** [exe0] Error 1
>
>
> Thanks.
> _______________________________________________
> Tinyos-help mailing list
> [email protected]
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
>
>
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to