[Tinyos-help] [SPAM: 4.000] HplMsp430UsartInterrupts problems

Allan McInnes allan.mcinnes at canterbury.ac.nz
Thu Mar 12 14:16:49 PDT 2009


As the message I linked to mentioned, the fix in question involves  
patching msp-gcc. Which means you will need to recompile msp-gcc. The  
file msp430.c is in the source tree of gcc. As the patch itself quite  
clearly shows, the file you need to patch resides at $GCC_SOURCE_ROOT/ 
gcc/config/msp430/msp430.c, where $GCC_SOURCE_ROOT is the directory in  
which your gcc source tree is located. If you don't have the source of  
gcc available, you will need to download it from somewhere. Then apply  
the patch and compile.

Cheers,
Allan


On 12/03/2009, at 6:20 PM, BAI LI wrote:

> 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 <allan.mcinnes at canterbury.ac.nz 
> > 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> for instructions.
>> make: *** [exe0] Error 1
>>
>>
>> Thanks.
>> _______________________________________________
>> Tinyos-help mailing list
>> Tinyos-help at millennium.berkeley.edu
>> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://www.millennium.berkeley.edu/pipermail/tinyos-help/attachments/20090313/a6730f03/attachment-0001.htm 


More information about the Tinyos-help mailing list