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