The NXT version of the VM has some fixes for alignment problems on the ARM 
chip. What chip is the Nintendo DS?

Lawrie

----- Original Message ----- 
From: "Fleming, Craig" <[EMAIL PROTECTED]>
To: "Lawrie Griffiths" <[EMAIL PROTECTED]>; 
<[email protected]>
Sent: Tuesday, June 26, 2007 4:17 PM
Subject: Re: [Lejos-discussion] Compiling Lejos for the Nintendo DS


> I'm currently using the RCX code because that was the first thing I
> downloaded. Is there an important difference?
>
> -----Original Message-----
> From: Lawrie Griffiths [mailto:[EMAIL PROTECTED]
> Sent: 2007-Jun-26 8:16 AM
> To: Fleming, Craig; [email protected]
> Subject: Re: [Lejos-discussion] Compiling Lejos for the Nintendo DS
>
> Craig,
>
> Are you using the RCX code or the NXT code?
>
> Lawrie
>
> ----- Original Message -----
> From: "Fleming, Craig" <[EMAIL PROTECTED]>
> To: <[email protected]>
> Sent: Monday, June 25, 2007 11:48 PM
> Subject: [Lejos-discussion] Compiling Lejos for the Nintendo DS
>
>
>> Hello everyone,
>>
>> I know that a similar topic was brought up many years ago, and I don't
>> know if that was anything other than one developers little pet
> project,
>> or even if anyone who reads this is interested in this. But I had some
>> free time and a desire to see if I could do it, so here it is. If
> there
>> is no interest, that's quite alright - I'll just keep plugging away
> here
>> :). I've run into a confusing problem and I had hoped someone in here
>> might be able to help me out. Unfortunately C/C++ is not my native
>> language - I know how to write some small programs but most of the
> Lejos
>> code is beyond me.
>>
>> I've managed to write/copy enough code to get Lejos to compile using
>> DevKitPro/DevKitArm. I've been through a couple days of debugging,
>> making steady progress until today. I'm in threads.c, in init_threads(
>> Thread *thread ). What happens is:
>>
>> 1. A successful call is made to new_primitive_array, assigning to
>> thread->stackFrameArray.
>> 2. A successful call is made to new_primitive_array, assigning to
>> thread->stackArray
>> 3. An assertion exception 20 is thrown.
>>
>> I've been printfing my way around the code, and I've determined that
>> thread->stackFrameArray is somehow corrupted between the second call
> to
>> new_primitive_array and the first line of this call. There is no code
>> except the two printfs between the point of corruption. I fixed this
>> problem by assigning to a temporary variable and then after the second
>> call to new_primitive_array, I assign that temporary variable to
>> thread->stackFrameArray.
>>
>> Still with me? :) This work-around keeps the pointers from being
>> corrupted, but doesn't solve the problem! If I do this, a call to
>> is_array still returns false, throwing the assertion 20. A few more
>> printfs give me the reason I'm writing this - a strange situation that
>> is beyond my knowledge.
>>
>> 1. A call to is_array just after the assignment to thread->stackArray
>> returns 1.
>> 2. A call to is_array just after THAT call to is_array returns 0!
>>
>> Here is the offending section of code, including the "work-around"
>> (which is a problem I don't understand by itself), and the final two
>> printfs. The first displays "1 1", the second displays "0 0".
>>
>>  JINT stackFrameArray = ptr2word (new_primitive_array (T_STACKFRAME,
>> INITIAL_STACK_FRAMES));
>>  if (stackFrameArray == JNULL)
>>    return false;
>>
>>  // Allocate actual stack storage (INITIAL_STACK_SIZE * 4 bytes)
>>  thread->stackArray = ptr2word (new_primitive_array (T_INT,
>> INITIAL_STACK_SIZE));
>>  thread->stackFrameArray = stackFrameArray;
>>  printf( "%d %d\n", is_array( word2obj(thread->stackFrameArray) ),
>> is_array( word2obj(thread->stackArray) ) );
>>  printf( "%d %d\n", is_array( word2obj(thread->stackFrameArray) ),
>> is_array( word2obj(thread->stackArray) ) );
>>  if (thread->stackArray == JNULL)
>>  {
>>    free_array (ref2obj(thread->stackFrameArray));
>>    thread->stackFrameArray = JNULL;
>>    return false;
>>  }
>>
>>  gThreadCounter++;
>>
>>  #ifdef VERIFY
>>  assert (is_array (word2obj (thread->stackFrameArray)), THREADS0);
>>  assert (is_array (word2obj (thread->stackArray)), THREADS1);
>>  #endif
>>
>> Thanks for reading.
>>
>> Craig
>>
>>
> ------------------------------------------------------------------------
> -
>> This SF.net email is sponsored by DB2 Express
>> Download DB2 Express C - the FREE version of DB2 express and take
>> control of your XML. No limits. Just data. Click to get it now.
>> http://sourceforge.net/powerbar/db2/
>> _______________________________________________
>> Lejos-discussion mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/lejos-discussion
>>
>>
>> -- 
>> Internal Virus Database is out-of-date.
>> Checked by AVG Free Edition.
>> Version: 7.5.472 / Virus Database: 269.8.0/818 - Release Date:
> 25/05/2007
>> 12:32
>>
>>
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Lejos-discussion mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/lejos-discussion
>
>
> -- 
> Internal Virus Database is out-of-date.
> Checked by AVG Free Edition.
> Version: 7.5.472 / Virus Database: 269.8.0/818 - Release Date: 25/05/2007 
> 12:32
>
> 


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Lejos-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lejos-discussion

Reply via email to