avr-gcc-list
[Top][All Lists]
Advanced

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

Re: AW: [avr-gcc-list] avr-c++ static constructors in bootloader usage


From: Jörg Diederich
Subject: Re: AW: [avr-gcc-list] avr-c++ static constructors in bootloader usage
Date: Wed, 20 Sep 2006 15:39:24 +0800

hello,

a setting of the DDR doesn't change the problem. DDRE on at90can128 is at 0 at 
default, which means input. if 
a set of the appropriate PORTE bit occurs, a pull-up resitor is activated (plz 
see manual at page 66 for details, if interested). so my pin is high, this is 
what is is detectable on my board with vcc on a pin.
i tryed setting DDRE anyway. so the pin is an output pin. by writing the 
appropriate PORTE bit, this results in a high level on the pin too (see 
following page in documentation).

you're correct, of course. but it doesn't matter in this case, as (hopefully) 
shown above.
the while-true in constructor was in order to see if the constructor is entered 
or if the mcu does a reset while leaving the constructor.

i followed the asm code with objdump till the table jump. see documentation of 
bug report for a more detailed informations already given by jörg wunsch.

bye Jörg






> ----- Original Message -----
> From: "Haase Bjoern (PT-BEU/EMT)" <address@hidden>
> To: "Jörg Diederich" <address@hidden>, address@hidden
> Subject: AW: [avr-gcc-list] avr-c++ static constructors in bootloader usage
> Date: Wed, 20 Sep 2006 08:53:14 +0200
> 
> 
> Is it possible that you forgot about setting the data direction 
> register properly?
> 
> I'd like to suggest that you have a look at the generated assembly 
> code. E.g. by excecuting
> 
> avr-objdump.exe -d myfile.elf
> 
> The place where the reset vector jumps to will first initialize RAM 
> memory contents and then jump to all of the static constructor 
> functions (there is a table with all of them in memory).
> 
> With a program as short as yours, you should easily be able to 
> follow the code. BTW. Main() probably never should be reached with 
> your small program.
> 
> HTH,
> 
> Bjoern.
> 
> -----Ursprüngliche Nachricht-----
> Von: address@hidden 
> [mailto:address@hidden 
> Im Auftrag von Jörg Diederich
> Gesendet: Dienstag, 19. September 2006 16:09
> An: address@hidden
> Betreff: [avr-gcc-list] avr-c++ static constructors in bootloader usage
> 
> hello,
> 
> so i'm new to this list, a short hello (again) to everyone.
> 
> in using the at90can128, there's a problem with static constructors 
> in bootloaders. the following example does not work as expected.
> 
> #include <avr/io.h>
> /*
>    PORTE rises a pin on my board. used to see what's happening
>   */
> class A {
>   public:
>    A(){
>      PORTE |= (1 << 7);
>      while(1);
>    }
> };
> 
> A a_test ;
> int
> main(int argc, char** args)
> {
>    PORTE |= (1 << 2);
>    while(1);
> 
>    return 0;
> }
> 
> both pins stay low. usart-output didn't work too.
> adress of bootloader/text-section is 0x1E000. another possible 
> start address (0x1F000) doesn't change the problem,
> never tryed last possible address (0x1F800), but i don't expect it 
> to work either.
> 
> trying to switch off most compiler options doesn't result in a change.
> gcc version 4.1.1, avr-libc 1.4.4
> 
> there's a bug-report at 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29141 for this.
> 
> bye Jörg
> 
> 
> --
> _______________________________________________
> Get your free email from http://www.graffiti.net
> 
> Powered By Outblaze
> 
> 
> _______________________________________________
> AVR-GCC-list mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/avr-gcc-list

>


-- 
_______________________________________________
Get your free email from http://www.graffiti.net

Powered By Outblaze




reply via email to

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