simulavr-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Simulavr-devel] build fails


From: Klaus Rudolph
Subject: Re: [Simulavr-devel] build fails
Date: Mon, 19 Dec 2011 08:08:57 +0100

-------- Original-Nachricht --------
> Datum: Sun, 18 Dec 2011 22:21:55 +0100
> Von: "Petr Hluzín" <address@hidden>
> An: Klaus Rudolph <address@hidden>
> CC: "D. Laszlo Sitzer" <address@hidden>, address@hidden
> Betreff: Re: [Simulavr-devel] build fails

> On 14 December 2011 17:11, Klaus Rudolph <address@hidden> wrote:
> >
> > The problem with mi is not really clear to me but could be fixed by
> > removing auto with the correct data type from the iterator needed. I can
> > send a patch tomorrow. I actually could not access my other pc :-)
> 
> The "auto" is a feature added in C++11, compiler is required to infer
> the type from the expression. Apparently C++11 is disabled by default
> in GCC.

I know, but I run also into trouble with enabled -std=c++11. Maybe I have used 
a wrong compiler version. It was a very fast attempt to get the actual simulavr 
running :-)

> 
> >
> > But after all fixes I only could do one single step and the simulavr
> > crashes with an exception. Something with SP != 0 ??? Couldn't remember
> > the complete problem.
> 
> I am interested in details, preferably a program which reproduces the
> crash.

I hope I could spend some time for avr this weak. If I run again into trouble, 
I send a mail to this list with a hopefully much more detailed error message :-)

> 
> > The next thing is, that gdb from 7.1 version is longer compatible with
> > simulavr. The disassembler output comes from ram and not longer from
> > flash, which really makes no sense.
> 
> I am using gdb-7.3 and disassembly works fine, it reads from flash.
> 

So I will describe what I have done:

Running a c/c++ program, target at90s8515. Running "my" very old version of 
simulavr. Using a few different versions of gdb und ddd.

In detail:
#include <avr/io.h>

volatile int x;

int main() 
{
   x=0x1234;
   return 0;
}

---------
avr-g++ -mmcu=at90s8515 -g -O3 -o go main.cpp
Version: avr-g++ (GCC) 4.6.1
simulavr -d at90s8515 -g -f ./go ( with my very old version)
ddd -debugger /opt/avr/bin/avr-gdb go
Version of gdb: GNU gdb (GDB) 7.1

Now in ddd:
View->Machine Code Window
Dump of assembler code for function __vectors:
=> 0x00000000 <+0>:     rjmp    .+24            ;  0x1a <__trampolines_start>
   0x00000002 <+2>:     rjmp    .+78            ;  0x52 <__bad_interrupt>
   0x00000004 <+4>:     rjmp    .+76            ;  0x52 <__bad_interrupt>
   0x00000006 <+6>:     rjmp    .+74            ;  0x52 <__bad_interrupt>
   0x00000008 <+8>:     rjmp    .+72            ;  0x52 <__bad_interrupt>

Look good!

now:
> stepi
Dump of assembler code from 0x80001a to 0x80011a:
   0x0080001a:  nop
   0x0080001c:  nop
   0x0080001e:  nop
   0x00800020:  nop
   0x00800022:  nop
   0x00800024:  nop

Which is simply wrong.

If I use gdb versions 7.0.1 or lower, all works fine!

--------------------
If I use the git-version:
~/work/simulavr_git/simulavr_test001/src/simulavr -d at90s8515 -g -f ./go

After the first stepi I run into:
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x20], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x21], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x22], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x23], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x24], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x25], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x26], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x27], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x40], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x42], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x43], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x46], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x47], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x50], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x51], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x54], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x56], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x57], PC=0x1a
WARNING: file rwmem.cpp: line 115: Invalid read access from IO[0x5c], PC=0x1a
simulavr: hwstack.cpp:282: void ThreadList::OnSPRead(int): Assertion `0 != 
SP_value' failed.

I hope this helps a bit. 

Thanks
 Klaus













-- 
Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de



reply via email to

[Prev in Thread] Current Thread [Next in Thread]